def test_twoNodeOneSource_ManualSub_Op(self): e = Event(1) NetInput = Node("Net Input") src = Node("src", can_hold=False) a = Node("A1") b = Node("B1") mod0 = Modifier(NetInput, src, 200) mod1 = Modifier(src, a, 0.50, method='proportion') mod2 = Modifier(src, b, 0.50, method='proportion') mod0.subscribe_to(e) mod1.subscribe_to(e) mod2.subscribe_to(e) self.assertTrue(NetInput._val == 0) self.assertTrue(src._val == 0) self.assertTrue(a._val == 0) self.assertTrue(b._val == 0) e() self.assertTrue(NetInput._val == -200) self.assertTrue(src._val == 0) self.assertTrue(a._val == 100) self.assertTrue(b._val == 100)
def test_SweepBasic_ManualIdxAdd_nop(self): """ Here we don't have to make several events to which each element must subscribe to. Instead, we only make one base event, and re-use that event over a Sweep object """ A = Node("A") B = Node("B") M = Modifier(A, B, 1) e = Event(1) M.subscribe_to(e) s = Sweep(e) #This won't happen in actual code, but for TDD purposes #we will extend the list like this s._indexes.extend([1, 2, 3]) self.assertTrue(A.val == 0) self.assertTrue(B.val == 0) ret = 0 while ret is not None: ret = s() self.assertTrue(A.val == -B.val) self.assertTrue(B.val == 3)
def test_twoNodeNoSource_ManualSub_Op(self): e = Event(1) a = Node("A", init_val = 100) b = Node("B") mod = Modifier(a,b,100) mod.subscribe_to(e) self.assertTrue(a._val == 100) self.assertTrue(b._val == 0) e() self.assertTrue(a._stage == 0) self.assertTrue(a._val == 0) self.assertTrue(b._stage == 0) self.assertTrue(b._val == 100)
def test_twoEvents_ManualSub_Op(self): e = Event(1) e2 = Event(2) e.nextEvent = e2 NetInput = Node("Net Input") src = Node("src", can_hold=False) a = Node("A1") b = Node("B1") mod0 = Modifier(NetInput, src, 200) mod1 = Modifier(src, a, 0.50, method='proportion') mod2 = Modifier(src, b, 0.50, method='proportion') mod0.subscribe_to(e, e2) mod1.subscribe_to(e, e2) mod2.subscribe_to(e, e2) self.assertTrue(NetInput._val == 0) self.assertTrue(src._val == 0) self.assertTrue(a._val == 0) self.assertTrue(b._val == 0) e = e() self.assertTrue(NetInput._val == -200) self.assertTrue(src._val == 0) self.assertTrue(a._val == 100) self.assertTrue(b._val == 100) e = e() self.assertTrue(NetInput._val == -400) self.assertTrue(src._val == 0) self.assertTrue(a._val == 200) self.assertTrue(b._val == 200) self.assertTrue(e is None)
def test_nodeStaging_noHold_op(self): n = Node("test", can_hold=False) n.stage(100) self.assertTrue(n._val == 0) self.assertTrue(n._stage == 100) n.apply() self.assertTrue(n._stage == 0) self.assertTrue(n._val == 0)
def test_nodeStaging_withHolds_op(self): n = Node("test") n.stage(100) self.assertTrue(n._val == 0) self.assertTrue(n._stage == 100) n.apply() self.assertTrue(n._stage == 0) self.assertTrue(n._val == 100)
def test_modifierSimple_add_op(self): a = Node("A", init_val=100) b = Node("B") mod = Modifier(a, b, 100) self.assertTrue(a._val == 100) self.assertTrue(b._val == 0) mod.apply() self.assertTrue(a._stage == -100) self.assertTrue(a._val == 100) self.assertTrue(b._stage == 100) self.assertTrue(b._val == 0) a.apply() b.apply() self.assertTrue(a._stage == 0) self.assertTrue(a._val == 0) self.assertTrue(b._stage == 0) self.assertTrue(b._val == 100)