Example #1
0
 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()
Example #2
0
 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()
Example #3
0
    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
Example #4
0
    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
Example #5
0
 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
Example #6
0
    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
Example #7
0
    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
Example #8
0
    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
Example #9
0
    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
Example #10
0
    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
Example #11
0
 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
Example #12
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