def test_reset_optional_number(self, test_output, test_input): test_output.instance.set_number("my_optional_long", 33) test_output.instance.set_number("my_optional_long", None) test_output.write() wait_for_data(test_input) assert test_input.samples[0].get_number("my_optional_long") is None assert not "my_optional_long" in test_input.samples[0].get_dictionary()
def test_reset_optional_boolean(self, test_output, test_input): test_output.instance.set_boolean("my_optional_bool", True) test_output.instance.set_boolean("my_optional_bool", None) test_output.write() wait_for_data(test_input) sample = test_input.samples[0] assert sample.get_boolean("my_optional_bool") is None assert sample["my_optional_bool"] is None assert not "my_optional_bool" in sample.get_dictionary()
def test_set_optional(self, test_output, test_input): test_output.instance.set_number("my_optional_point.x", 101) test_output.instance["my_point_alias.x"] = 202 test_output.write() wait_for_data(test_input) sample = test_input.samples[0] assert sample.get_number("my_optional_point.x") == 101 assert sample.get_number("my_point_alias.x") == 202
def test_clear_sequence(self, test_output, test_input): test_output.instance.set_number("my_union.my_int_sequence[2]", 10) test_output.instance.set_number("my_point.x", 3) test_output.instance.clear_member("my_union.my_int_sequence") test_output.write() wait_for_data(test_input) assert test_input.samples[0].get_number( "my_union.my_int_sequence#") == 0 assert test_input.samples[0].get_number("my_point.x") == 3
def test_reset_complex_optional(self, test_output, test_input): test_output.instance.set_number("my_optional_point.x", 44) test_output.instance.set_number("my_point_alias.x", 55) test_output.instance.clear_member("my_optional_point") test_output.instance.clear_member("my_point_alias") test_output.write() wait_for_data(test_input) assert test_input.samples[0].get_number("my_optional_point.x") is None assert test_input.samples[0].get_number("my_point_alias.x") is None assert test_input.samples[0]["my_optional_point.x"] is None
def test_shrink_sequence(self, test_output, test_input, test_dictionary): """Tests that set_dictionary shrinks sequences when it receives a smaller one""" test_output.instance.set_number("my_int_sequence[2]", 10) # set length to 3 test_output.instance.set_number("my_point_sequence[0].x", 11) test_output.instance.set_number("my_point_sequence[0].y", 12) test_output.instance.set_number("my_point_sequence[2].x", 10) test_output.instance.set_dictionary({ "my_point_array": [{ 'x': 10, 'y': 20 }, { 'x': 11, 'y': 21 }, { 'x': 12, 'y': 22 }, { 'x': 13, 'y': 23 }, { 'x': 14, 'y': 24 }] }) # Reduce sequences to 1, while arrays retain exiting values test_output.instance.set_dictionary({ "my_int_sequence": [40], "my_point_sequence": [{ "y": 2 }], "my_point_array": [{ "x": 100 }, { "y": 200 }] }) test_output.write() wait_for_data(test_input) sample = test_input.samples[0] assert sample["my_int_sequence#"] == 1 # Length reduced assert sample["my_point_sequence#"] == 1 # Length reduced assert sample["my_int_sequence[0]"] == 40 # New value assert sample["my_point_sequence[0].y"] == 2 # New value assert sample[ "my_point_sequence[0].x"] == 0 # Doesn't retain previous value assert sample["my_point_array[0].x"] == 100 # New value assert sample["my_point_array[0].y"] == 20 # Retains value assert sample["my_point_array[4].x"] == 14 # Retains value
def test_output_sequences(self, test_output, test_input): test_output.instance.set_number("my_point_sequence[0].y", 20) test_output.instance["my_int_sequence[1]"] = 2 test_output.instance["my_point_array[4].x"] = 5 test_output.write() wait_for_data(test_input) sample = test_input.samples[0] assert sample["my_point_sequence[0].y"] == 20 assert sample["my_int_sequence[1]"] == 2 assert sample["my_point_sequence#"] == 1 assert sample["my_int_sequence#"] == 2 assert sample["my_point_array[4].x"] == 5
def test_change_union_member(self, test_output, test_input): test_output.instance.set_number("my_union.my_int_sequence[1]", 3) test_output.write() wait_for_data(test_input) sample = test_input.samples[0] assert sample.get_string("my_union#") == "my_int_sequence" test_output.instance.set_number("my_union.my_long", 3) test_output.write() wait_for_data(test_input) sample = test_input.samples[0] assert sample.get_string("my_union#") == "my_long" assert sample.get_number("my_union.my_long") == 3
def populated_input(self, test_connector, test_dictionary): """Writes a default sample and receives it at the input. Some tests use this default sample. Others may write different data and won't use this fixture """ output = test_connector.get_output("TestPublisher::TestWriter") output.instance.set_dictionary(test_dictionary) output.write() test_input = test_connector.get_input("TestSubscriber::TestReader") wait_for_data(input=test_input, count=1, do_take=True) assert test_input.samples.length == 1 assert test_input.samples[0].valid_data return test_input
def test_clear_with_dictionary(self, test_dictionary, test_output, test_input): """Tests using None in a dictionary to clear a member""" # Set non-default values test_output.instance.set_dictionary(test_dictionary) test_output.instance.set_boolean("my_optional_bool", True) # Reset members using None in a dictionary--optional members are set to None, # other members are initialized to their default value test_output.instance.set_dictionary({ 'my_optional_point': None, 'my_optional_long': None, 'my_point': None, 'my_point_alias': None, 'my_long': None, 'my_optional_bool': None, 'my_point_sequence': None, 'my_string': None, 'my_union': None, 'my_enum': None, }) test_output.write() wait_for_data(test_input) sample = test_input.samples[0] assert sample.get_number("my_optional_point.x") is None assert sample.get_number("my_optional_long") is None assert sample.get_number("my_point.x") == 0 assert sample.get_number("my_point.y") == 0 assert sample.get_number("my_point_alias.x") is None assert sample.get_number("my_long") == 0 assert sample.get_boolean("my_optional_bool") is None assert sample.get_number("my_point_sequence#") == 0 assert sample.get_string("my_string") == "" assert sample["my_string"] == "" assert sample.get_string("my_union#") == "point" assert sample.get_number("my_enum") == 2 assert sample.get_number("my_double") == test_dictionary['my_double'] dictionary = sample.get_dictionary() assert not "my_optional_bool" in dictionary assert not "my_optional_long" in dictionary assert not "my_point_alias" in dictionary assert not "my_optional_point" in dictionary
def test_clear_complex_member(self, test_output, test_input): test_output.instance.set_number("my_point.x", 44) test_output.instance.clear_member("my_point") test_output.write() wait_for_data(test_input) assert test_input.samples[0].get_number("my_point.x") == 0
def test_unset_optional_boolean(self, test_output, test_input): test_output.write() wait_for_data(test_input) assert test_input.samples[0].get_boolean("my_optional_bool") is None