def test_home_automation(self): """A simple example in the home automation domain""" brightness_1 = Input() brightness_2 = Input() brightness_sum = Node(action=lambda *args: sum(args), inputs=Node.inputs(brightness_1, brightness_2)) def inverse(value): """Return the inverse of a value in the range 0..510""" return 510 - value brightness_inverse = Node(action=inverse, inputs=Node.inputs(brightness_sum)) lamp_power_changes = [] def set_lamp_power(value): """Log changes to lamp power""" lamp_power_changes.append(value) _lamp_power = Node(action=set_lamp_power, inputs=Node.inputs(brightness_inverse), triggered=True) update_inputs_get_triggered([(brightness_1, 20), (brightness_2, 40)]) self.assertEqual([450], lamp_power_changes) update_inputs_get_triggered([(brightness_1, 20), (brightness_2, 40)]) self.assertEqual([450], lamp_power_changes) update_inputs_get_triggered([(brightness_1, 24), (brightness_2, 40)]) self.assertEqual([450, 446], lamp_power_changes)
def test_only_leafs_triggered_2(self): """Updating a Node only triggers its descendents""" triggered = update_inputs_get_triggered([(self.branch2, 2)]) self.assertEqual({self.leaf3, self.leaf4}, triggered)