Ejemplo n.º 1
0
 def testSubscription(self):
     pm = PropertyLayer()
     pm["testkey"] = "before"
     mock = Mock()
     pm.wire(mock.method)
     pm["testkey"] = "after"
     mock.method.assert_called_once_with({"testkey": "after"})
Ejemplo n.º 2
0
 def testEventPreventedWhenValueUnchanged(self):
     pm = PropertyLayer()
     pm["testkey"] = "testvalue"
     mock = Mock()
     pm.wire(mock.method)
     pm["testkey"] = "testvalue"
     mock.method.assert_not_called()
Ejemplo n.º 3
0
 def testSubscribeBeforeSet(self):
     pm = PropertyLayer()
     mock = Mock()
     pm.wireProperty("testkey", mock.method)
     mock.method.assert_not_called()
     pm["testkey"] = "newvalue"
     mock.method.assert_called_once_with("newvalue")
Ejemplo n.º 4
0
 def testDeletionIsSent(self):
     pm = PropertyLayer(testkey="somevalue")
     mock = Mock()
     pm.wireProperty("testkey", mock.method)
     mock.method.reset_mock()
     del pm["testkey"]
     mock.method.assert_called_once_with(PropertyDeleted)
Ejemplo n.º 5
0
    def testCreationWithKwArgs(self):
        pm = PropertyLayer(testkey="value")
        self.assertEqual(pm["testkey"], "value")

        # this should be synonymous, so this is rather for illustration purposes
        contents = {"testkey": "value"}
        pm = PropertyLayer(**contents)
        self.assertEqual(pm["testkey"], "value")
Ejemplo n.º 6
0
 def testNoDeletionEventWhenPropertyDoesntExist(self):
     pm = PropertyLayer(otherkey="somevalue")
     mock = Mock()
     pm.wireProperty("testkey", mock.method)
     mock.method.reset_mock()
     with self.assertRaises(KeyError):
         del pm["testkey"]
     mock.method.assert_not_called()
Ejemplo n.º 7
0
 def testPriorityFallback(self):
     om = PropertyStack()
     low_pm = PropertyLayer()
     high_pm = PropertyLayer()
     low_pm["testkey"] = "low value"
     om.addLayer(1, low_pm)
     om.addLayer(0, high_pm)
     self.assertEqual(om["testkey"], "low value")
Ejemplo n.º 8
0
 def __init__(self, pm: PropertyManager):
     self.subscriptions = {}
     self.profileSubscriptions = {}
     self._layer = PropertyLayer()
     super().__init__(self._layer)
     for key, value in pm.items():
         self._addSource(key, value)
     pm.wire(self.handleSdrDeviceChange)
Ejemplo n.º 9
0
 def testWritesToExpectedLayer(self):
     om = PropertyStack()
     low_pm = PropertyLayer()
     high_pm = PropertyLayer()
     low_pm["testkey"] = "low value"
     om.addLayer(1, low_pm)
     om.addLayer(0, high_pm)
     om["testkey"] = "new value"
     self.assertEqual(low_pm["testkey"], "new value")
Ejemplo n.º 10
0
 def testChangeEventWhenKeyDeleted(self):
     ps = PropertyStack()
     low_pm = PropertyLayer(testkey="lowvalue")
     high_pm = PropertyLayer(testkey="highvalue")
     ps.addLayer(0, high_pm)
     ps.addLayer(1, low_pm)
     mock = Mock()
     ps.wire(mock.method)
     del high_pm["testkey"]
     mock.method.assert_called_once_with({"testkey": "lowvalue"})
Ejemplo n.º 11
0
 def testDeletionWithSecondLayer(self):
     ps = PropertyStack()
     low_pm = PropertyLayer(testkey="testvalue")
     high_pm = PropertyLayer()
     ps.addLayer(0, high_pm)
     ps.addLayer(1, low_pm)
     mock = Mock()
     ps.wire(mock.method)
     del low_pm["testkey"]
     mock.method.assert_called_once_with({"testkey": PropertyDeleted})
Ejemplo n.º 12
0
 def testLayerRemoval(self):
     om = PropertyStack()
     low_pm = PropertyLayer()
     high_pm = PropertyLayer()
     low_pm["testkey"] = "low value"
     high_pm["testkey"] = "high value"
     om.addLayer(1, low_pm)
     om.addLayer(0, high_pm)
     self.assertEqual(om["testkey"], "high value")
     om.removeLayer(high_pm)
     self.assertEqual(om["testkey"], "low value")
Ejemplo n.º 13
0
 def testNoEventsIfKeysDontChange(self):
     pc = PropertyCarousel()
     pl_x = PropertyLayer(testkey="same_value")
     pc.addLayer("x", pl_x)
     pl_y = PropertyLayer(testkey="same_value")
     pc.addLayer("y", pl_y)
     pc.switch("x")
     mock = Mock()
     pc.wire(mock.method)
     pc.switch("y")
     mock.method.assert_not_called()
Ejemplo n.º 14
0
 def testEventOnLayerWithNewProperty(self):
     low_layer = PropertyLayer()
     low_layer["existingkey"] = "existing value"
     stack = PropertyStack()
     stack.addLayer(1, low_layer)
     mock = Mock()
     stack.wireProperty("newkey", mock.method)
     high_layer = PropertyLayer()
     high_layer["newkey"] = "new value"
     stack.addLayer(0, high_layer)
     mock.method.assert_called_once_with("new value")
Ejemplo n.º 15
0
 def testEventsOnSwitch(self):
     pc = PropertyCarousel()
     pl_x = PropertyLayer(old_key="old_value")
     pc.addLayer("x", pl_x)
     pl_y = PropertyLayer(new_key="new_value")
     pc.addLayer("y", pl_y)
     pc.switch("x")
     mock = Mock()
     pc.wire(mock.method)
     pc.switch("y")
     mock.method.assert_called_once_with({"old_key": PropertyDeleted, "new_key": "new_value"})
Ejemplo n.º 16
0
 def testSendsChangesIfActiveLayerIsReplaced(self):
     pc = PropertyCarousel()
     pl = PropertyLayer(testkey="testvalue")
     pc.addLayer("x", pl)
     pc.switch("x")
     self.assertEqual(pc["testkey"], "testvalue")
     mock = Mock()
     pc.wire(mock.method)
     pl = PropertyLayer(testkey="othervalue")
     pc.addLayer("x", pl)
     mock.method.assert_called_once_with({"testkey": "othervalue"})
Ejemplo n.º 17
0
    def testUnsubscribe(self):
        pm = PropertyLayer()
        pm["testkey"] = "before"
        mock = Mock()
        sub = pm.wire(mock.method)
        pm["testkey"] = "between"
        mock.method.assert_called_once_with({"testkey": "between"})

        mock.reset_mock()
        pm.unwire(sub)
        pm["testkey"] = "after"
        mock.method.assert_not_called()
Ejemplo n.º 18
0
 def testStopsForwardingAfterSwitch(self):
     pc = PropertyCarousel()
     pl_x = PropertyLayer(testkey="old_value")
     pc.addLayer("x", pl_x)
     pl_y = PropertyLayer(testkey="new_value")
     pc.addLayer("y", pl_y)
     pc.switch("x")
     pc.switch("y")
     mock = Mock()
     pc.wire(mock.method)
     pl_x["testkey"] = "new_value"
     mock.method.assert_not_called()
Ejemplo n.º 19
0
 def testPropertyEventOnLayerAdd(self):
     low_layer = PropertyLayer()
     low_layer["testkey"] = "low value"
     stack = PropertyStack()
     stack.addLayer(1, low_layer)
     mock = Mock()
     stack.wireProperty("testkey", mock.method)
     mock.reset_mock()
     high_layer = PropertyLayer()
     high_layer["testkey"] = "high value"
     stack.addLayer(0, high_layer)
     mock.method.assert_called_once_with("high value")
Ejemplo n.º 20
0
 def testNoEventOnExistingValue(self):
     low_layer = PropertyLayer()
     low_layer["testkey"] = "same value"
     stack = PropertyStack()
     stack.addLayer(1, low_layer)
     mock = Mock()
     stack.wireProperty("testkey", mock.method)
     mock.reset_mock()
     high_layer = PropertyLayer()
     high_layer["testkey"] = "same value"
     stack.addLayer(0, high_layer)
     mock.method.assert_not_called()
Ejemplo n.º 21
0
 def testPropertyChangeEventPriority(self):
     low_layer = PropertyLayer()
     high_layer = PropertyLayer()
     low_layer["testkey"] = "initial low value"
     high_layer["testkey"] = "initial high value"
     stack = PropertyStack()
     stack.addLayer(1, low_layer)
     stack.addLayer(0, high_layer)
     mock = Mock()
     stack.wire(mock.method)
     low_layer["testkey"] = "modified low value"
     mock.method.assert_not_called()
     high_layer["testkey"] = "modified high value"
     mock.method.assert_called_once_with("testkey", "modified high value")
Ejemplo n.º 22
0
    def testReplaceLayer(self):
        first_layer = PropertyLayer()
        first_layer["testkey"] = "old value"
        second_layer = PropertyLayer()
        second_layer["testkey"] = "new value"

        stack = PropertyStack()
        stack.addLayer(0, first_layer)

        mock = Mock()
        stack.wireProperty("testkey", mock.method)
        mock.method.assert_called_once_with("old value")
        mock.reset_mock()

        stack.replaceLayer(0, second_layer)
        mock.method.assert_called_once_with("new value")
Ejemplo n.º 23
0
 def testPreventsDeletes(self):
     layer = PropertyLayer(testkey="some value")
     ro = PropertyReadOnly(layer)
     with self.assertRaises(PropertyWriteError):
         del ro["testkey"]
     self.assertEqual(ro["testkey"], "some value")
     self.assertEqual(layer["testkey"], "some value")
Ejemplo n.º 24
0
 def testMissesProperty(self):
     pm = PropertyLayer()
     pm["testkey"] = "testvalue"
     pf = PropertyFilter(pm, "other_key")
     self.assertFalse("testkey" in pf)
     with self.assertRaises(KeyError):
         x = pf["testkey"]
Ejemplo n.º 25
0
 def testForwardsPropertyEvent(self):
     pm = PropertyLayer()
     pf = PropertyFilter(pm, "testkey")
     mock = Mock()
     pf.wireProperty("testkey", mock.method)
     pm["testkey"] = "testvalue"
     mock.method.assert_called_once_with("testvalue")
Ejemplo n.º 26
0
 def testOverwrite(self):
     pm = PropertyLayer()
     pm["testkey"] = "old value"
     pf = PropertyFilter(pm, "testkey")
     pf["testkey"] = "new value"
     self.assertEqual(pm["testkey"], "new value")
     self.assertEqual(pf["testkey"], "new value")
Ejemplo n.º 27
0
 def testRejectsWrite(self):
     pm = PropertyLayer()
     pm["testkey"] = "old value"
     pf = PropertyFilter(pm, "otherkey")
     with self.assertRaises(KeyError):
         pf["testkey"] = "new value"
     self.assertEqual(pm["testkey"], "old value")
Ejemplo n.º 28
0
 def _loadConfig():
     for file in ["/etc/openwebrx/config_webrx.py", "./config_webrx.py"]:
         try:
             return ClassicConfig._loadPythonFile(file)
         except FileNotFoundError:
             pass
     return PropertyLayer()
Ejemplo n.º 29
0
 def testPassesProperty(self):
     pm = PropertyLayer()
     pm["testkey"] = "testvalue"
     mock = Mock()
     mock.apply.return_value = True
     pf = PropertyFilter(pm, mock)
     self.assertEqual(pf["testkey"], "testvalue")
Ejemplo n.º 30
0
    def testNoneOnKeyRemoval(self):
        low_layer = PropertyLayer()
        high_layer = PropertyLayer()
        stack = PropertyStack()
        stack.addLayer(1, low_layer)
        stack.addLayer(0, high_layer)
        low_layer["testkey"] = "low value"
        high_layer["testkey"] = "high value"
        high_layer["unique key"] = "unique value"

        mock = Mock()
        stack.wireProperty("unique key", mock.method)
        mock.method.assert_called_once_with("unique value")
        mock.reset_mock()
        stack.removeLayer(high_layer)
        mock.method.assert_called_once_with(None)