Beispiel #1
0
    def test_is_dirty(self):
        """Test the is_dirty property."""

        address = random_address()
        ramp_rate_prop = ExtendedProperty(address, "ramp_rate", RampRate,
                                          False, False, PropertyType.ADVANCED)
        test_prop = RampRateProperty(address, "test_prop", ramp_rate_prop)

        assert not ramp_rate_prop.is_dirty
        assert not test_prop.is_dirty
        ramp_rate_prop.load(0)
        assert not ramp_rate_prop.is_dirty
        assert not test_prop.is_dirty
        ramp_rate_prop.new_value = RampRate.MIN_1
        assert ramp_rate_prop.is_dirty
        assert test_prop.is_dirty
        ramp_rate_prop.new_value = None
        assert not ramp_rate_prop.is_dirty
        assert not test_prop.is_dirty
        ramp_rate_prop.new_value = RampRate.MIN_1_5
        assert ramp_rate_prop.is_dirty
        assert test_prop.is_dirty
        ramp_rate_prop.new_value = ramp_rate_prop.value
        assert not ramp_rate_prop.is_dirty
        assert not test_prop.is_dirty
    def test_new_value(self):
        """Test the new_value property."""
        address = random_address()
        non_toggle_prop = ExtendedProperty(address, "non_toggle", int, False,
                                           False, PropertyType.ADVANCED)
        on_only_prop = ExtendedProperty(address, "on_only", int, False, False,
                                        PropertyType.ADVANCED)

        for button in range(2, 8):
            test_prop = ToggleButtonProperty(
                address,
                "test_prop",
                button,
                non_toggle_prop,
                on_only_prop,
            )

            # Test the new_value is calculated correctly from the underlying properties
            for toggle_mode, test_values in test_toggle_mode_to_prop.items():
                non_toggle_prop.load(set_bit(0, button - 1,
                                             not test_values[0]))
                on_only_prop.load(set_bit(0, button - 1, not test_values[1]))
                assert test_prop.new_value is None
                non_toggle_prop.new_value = set_bit(0, button - 1,
                                                    test_values[0])
                on_only_prop.new_value = set_bit(0, button - 1, test_values[1])
                assert test_prop.new_value == toggle_mode

            # Test the underlying properties are set correctly
            for toggle_mode, test_values in test_toggle_mode_to_prop.items():
                non_toggle_prop.load(set_bit(0, button - 1,
                                             not test_values[0]))
                on_only_prop.load(set_bit(0, button - 1, not test_values[1]))
                assert test_prop.new_value is None
                test_prop.new_value = toggle_mode
                assert non_toggle_prop.new_value == set_bit(
                    0, button - 1, test_values[0])
                assert on_only_prop.new_value == set_bit(
                    0, button - 1, test_values[1])
                test_prop.new_value = None
                assert non_toggle_prop.new_value is None
                assert on_only_prop.new_value is None

                test_prop.new_value = toggle_mode
                assert non_toggle_prop.new_value == set_bit(
                    0, button - 1, test_values[0])
                assert on_only_prop.new_value == set_bit(
                    0, button - 1, test_values[1])
                test_prop.new_value = test_prop.value
                assert non_toggle_prop.new_value is None
                assert on_only_prop.new_value is None
Beispiel #3
0
    def test_new_value(self):
        """Test the new_value property."""

        address = random_address()
        ramp_rate_prop = ExtendedProperty(address, "ramp_rate", RampRate,
                                          False, False, PropertyType.ADVANCED)
        test_prop = RampRateProperty(address, "test_prop", ramp_rate_prop)
        assert ramp_rate_prop.new_value is None
        assert test_prop.new_value is None

        # Test all ramp rates except 0 and 2
        for value in range(1, 0x1F):
            if value == 2:  # Special condition
                continue
            ramp_rate = RampRate(value)
            seconds = ramp_rate_to_seconds(ramp_rate)
            test_prop.new_value = seconds
            assert ramp_rate_prop.new_value == ramp_rate
            assert test_prop.new_value == seconds

        # Test 0 and 2
        for value in [0, 2]:
            seconds = ramp_rate_to_seconds(value)
            test_prop.new_value = seconds
            assert ramp_rate_prop.new_value == seconds_to_ramp_rate(seconds)

        # Test clearing the changes
        test_prop.new_value = None
        assert ramp_rate_prop.new_value is None

        test_prop.new_value = 3
        ramp_rate_prop.new_value = None
        assert test_prop.new_value is None

        # Test putting new_value to current value
        seconds = ramp_rate_to_seconds(RampRate.SEC_0_3)
        ramp_rate_prop.load(RampRate.SEC_0_3)
        assert test_prop.value == seconds
        seconds2 = seconds + 2
        ramp_rate2 = seconds_to_ramp_rate(seconds2)
        test_prop.new_value = seconds2
        assert ramp_rate_prop.new_value == ramp_rate2
        assert test_prop.new_value == ramp_rate_to_seconds(ramp_rate2)
        test_prop.new_value = test_prop.value
        assert test_prop.new_value is None
        assert ramp_rate_prop.new_value is None
    def test_is_dirty(self):
        """Test the id_dirty property."""
        address = random_address()
        delay_prop = ExtendedProperty(address, "delay", int, False, False,
                                      PropertyType.ADVANCED)
        prescaler_prop = ExtendedProperty(address, "delay", int, False, False,
                                          PropertyType.ADVANCED)

        test_prop = MomentaryDelayProperty(address, "test_prop", delay_prop,
                                           prescaler_prop)
        assert not test_prop.is_dirty
        delay_prop.load(0)
        assert not test_prop.is_dirty
        prescaler_prop.load(0)
        assert not test_prop.is_dirty

        delay_prop.new_value = randint(1, 255)
        assert test_prop.is_dirty

        delay_prop.new_value = None
        assert not test_prop.is_dirty

        prescaler_prop.new_value = randint(1, 255)
        assert test_prop.is_dirty

        prescaler_prop.new_value = None
        assert not test_prop.is_dirty

        delay_prop.new_value = randint(1, 255)
        assert test_prop.is_dirty

        delay_prop.new_value = randint(1, 255)
        prescaler_prop.new_value = randint(1, 255)
        assert test_prop.is_dirty

        delay_prop.new_value = None
        prescaler_prop.new_value = None
        assert not test_prop.is_dirty
Beispiel #5
0
    def test_load_method(self):
        """Test the load method."""
        prop = ExtendedProperty(random_address(), "prop_name", int, False,
                                False)

        value = random.randint(0, 255)
        assert not prop.is_loaded
        prop.load(value)
        assert prop.is_loaded
        assert prop.value == value
        assert not prop.is_dirty
        assert prop.new_value is None

        new_value = random.randint(0, 255)
        prop.new_value = new_value
        assert prop.new_value == new_value
        assert prop.is_dirty

        value2 = random.randint(0, 255)
        prop.load(value2)
        assert prop.is_loaded
        assert prop.value == value2
        assert not prop.is_dirty
        assert prop.new_value is None
Beispiel #6
0
    def test_is_dirty(self):
        """Test the id_dirty property."""

        address = random_address()

        momentary_mode_on_prop = ExtendedProperty(address, "mm_on", bool,
                                                  False, False,
                                                  PropertyType.ADVANCED)
        momentary_follow_sense_prop = ExtendedProperty(address, "m_follow",
                                                       bool, False, False,
                                                       PropertyType.ADVANCED)
        momentary_on_off_trigger_prop = ExtendedProperty(
            address, "m_on_off", bool, False, False, PropertyType.ADVANCED)

        test_prop = RelayModeProperty(
            address,
            "test_prop",
            momentary_mode_on_prop,
            momentary_follow_sense_prop,
            momentary_on_off_trigger_prop,
        )
        assert not test_prop.is_dirty
        momentary_mode_on_prop.load(False)
        assert not test_prop.is_dirty
        momentary_follow_sense_prop.load(False)
        assert not test_prop.is_dirty
        momentary_on_off_trigger_prop.load(False)
        assert not test_prop.is_dirty

        momentary_mode_on_prop.new_value = True
        assert test_prop.is_dirty
        momentary_mode_on_prop.new_value = None
        assert not test_prop.is_dirty

        momentary_follow_sense_prop.new_value = True
        assert test_prop.is_dirty
        momentary_follow_sense_prop.new_value = None
        assert not test_prop.is_dirty

        momentary_on_off_trigger_prop.new_value = True
        assert test_prop.is_dirty
        momentary_on_off_trigger_prop.new_value = None
        assert not test_prop.is_dirty