@@ -260,9 +260,12 @@ TEST_F(RTDEWriterTest, send_tool_digital_output)
260260 EXPECT_FALSE (writer_->sendToolDigitalOutput (pin, send_pin_value));
261261}
262262
263- TEST_F (RTDEWriterTest, send_standard_analog_output )
263+ TEST_F (RTDEWriterTest, send_standard_analog_output_unknown_domain )
264264{
265+ waitForMessageCallback (1000 );
266+
265267 uint8_t expected_standard_analog_output_mask = 1 ;
268+
266269 uint8_t pin = 0 ;
267270 double send_analog_output = 1 ;
268271 EXPECT_TRUE (writer_->sendStandardAnalogOutput (pin, send_analog_output));
@@ -272,26 +275,100 @@ TEST_F(RTDEWriterTest, send_standard_analog_output)
272275 ASSERT_TRUE (dataFieldExist (" standard_analog_output_0" ));
273276 ASSERT_TRUE (dataFieldExist (" standard_analog_output_1" ));
274277 ASSERT_TRUE (dataFieldExist (" standard_analog_output_mask" ));
278+ ASSERT_TRUE (dataFieldExist (" standard_analog_output_type" ));
279+
280+ double received_analog_output = std::get<double >(parsed_data_[" standard_analog_output_0" ]);
281+ uint8_t received_standard_analog_output_mask = std::get<uint8_t >(parsed_data_[" standard_analog_output_mask" ]);
282+ uint8_t received_standard_analog_output_type = std::get<uint8_t >(parsed_data_[" standard_analog_output_type" ]);
283+
284+ EXPECT_EQ (send_analog_output, received_analog_output);
285+ EXPECT_EQ (expected_standard_analog_output_mask, received_standard_analog_output_mask);
286+ // The test server sets this to 0 if not given
287+ EXPECT_EQ (0 , received_standard_analog_output_type);
288+ }
289+
290+ TEST_F (RTDEWriterTest, send_standard_analog_output_voltage)
291+ {
292+ uint8_t pin = 0 ;
293+ AnalogOutputType type = AnalogOutputType::VOLTAGE;
294+ double send_analog_output = 1 ;
295+
296+ uint8_t expected_standard_analog_output_mask = 1 ;
297+ uint8_t expected_standard_analog_output_type = 1 ;
298+
299+ EXPECT_TRUE (writer_->sendStandardAnalogOutput (pin, send_analog_output, type));
300+
301+ waitForMessageCallback (1000 );
275302
276303 double received_analog_output = std::get<double >(parsed_data_[" standard_analog_output_0" ]);
277304 uint8_t received_standard_analog_output_mask = std::get<uint8_t >(parsed_data_[" standard_analog_output_mask" ]);
305+ uint8_t received_standard_analog_output_type = std::get<uint8_t >(parsed_data_[" standard_analog_output_type" ]);
278306
279307 EXPECT_EQ (send_analog_output, received_analog_output);
280308 EXPECT_EQ (expected_standard_analog_output_mask, received_standard_analog_output_mask);
309+ EXPECT_EQ (expected_standard_analog_output_type, received_standard_analog_output_type);
281310
282311 pin = 1 ;
283312 expected_standard_analog_output_mask = 2 ;
284- EXPECT_TRUE (writer_->sendStandardAnalogOutput (pin, send_analog_output));
313+ expected_standard_analog_output_type = 2 ;
314+
315+ EXPECT_TRUE (writer_->sendStandardAnalogOutput (pin, send_analog_output, type));
285316
286317 waitForMessageCallback (1000 );
287318
288319 received_analog_output = std::get<double >(parsed_data_[" standard_analog_output_1" ]);
289320 received_standard_analog_output_mask = std::get<uint8_t >(parsed_data_[" standard_analog_output_mask" ]);
321+ received_standard_analog_output_type = std::get<uint8_t >(parsed_data_[" standard_analog_output_type" ]);
290322
291323 EXPECT_EQ (send_analog_output, received_analog_output);
292324 EXPECT_EQ (expected_standard_analog_output_mask, received_standard_analog_output_mask);
325+ EXPECT_EQ (expected_standard_analog_output_type, received_standard_analog_output_type);
326+ }
293327
294- // Changing pins above 1, should return false.
328+ TEST_F (RTDEWriterTest, send_standard_analog_output_current)
329+ {
330+ uint8_t pin = 0 ;
331+ AnalogOutputType type = AnalogOutputType::CURRENT;
332+ double send_analog_output = 1 ;
333+
334+ uint8_t expected_standard_analog_output_mask = 1 ;
335+ uint8_t expected_standard_analog_output_type = 0 ;
336+
337+ EXPECT_TRUE (writer_->sendStandardAnalogOutput (pin, send_analog_output, type));
338+
339+ waitForMessageCallback (1000 );
340+
341+ double received_analog_output = std::get<double >(parsed_data_[" standard_analog_output_0" ]);
342+ uint8_t received_standard_analog_output_mask = std::get<uint8_t >(parsed_data_[" standard_analog_output_mask" ]);
343+ uint8_t received_standard_analog_output_type = std::get<uint8_t >(parsed_data_[" standard_analog_output_type" ]);
344+
345+ EXPECT_EQ (send_analog_output, received_analog_output);
346+ EXPECT_EQ (expected_standard_analog_output_mask, received_standard_analog_output_mask);
347+ EXPECT_EQ (expected_standard_analog_output_type, received_standard_analog_output_type);
348+
349+ pin = 1 ;
350+ expected_standard_analog_output_mask = 2 ;
351+ expected_standard_analog_output_type = 0 ;
352+
353+ EXPECT_TRUE (writer_->sendStandardAnalogOutput (pin, send_analog_output, type));
354+
355+ waitForMessageCallback (1000 );
356+
357+ received_analog_output = std::get<double >(parsed_data_[" standard_analog_output_1" ]);
358+ received_standard_analog_output_mask = std::get<uint8_t >(parsed_data_[" standard_analog_output_mask" ]);
359+ received_standard_analog_output_type = std::get<uint8_t >(parsed_data_[" standard_analog_output_type" ]);
360+
361+ EXPECT_EQ (send_analog_output, received_analog_output);
362+ EXPECT_EQ (expected_standard_analog_output_mask, received_standard_analog_output_mask);
363+ EXPECT_EQ (expected_standard_analog_output_type, received_standard_analog_output_type);
364+ }
365+
366+ TEST_F (RTDEWriterTest, send_standard_analog_output_illegal_input_fails)
367+ {
368+ uint8_t pin = 0 ;
369+ double send_analog_output = 1 ;
370+
371+ // Pin should be either 0 or 1
295372 pin = 2 ;
296373 EXPECT_FALSE (writer_->sendStandardAnalogOutput (pin, send_analog_output));
297374
0 commit comments