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
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
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
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