def test_JoinNodeVarBindingOnOrderedPatternCEWithNegativeTermOverVariable(self): self.network.addRule(types.DefRuleConstruct("A", self.MM, lhs=[ types.OrderedPatternCE([ types.Symbol("A"), types.SingleFieldVariable(types.Symbol("varA")), types.Symbol("C"), ], self.MM), types.OrderedPatternCE([ types.NegativeTerm(types.SingleFieldVariable(types.Symbol("varA")), True), types.UnnamedSingleFieldVariable(), types.Symbol("C"), ], self.MM) ])) self.assertIsInstance(self.network._root.children[0].children[0].children[0].memory.children[0], JoinNode) self.assertFalse(self.network._root.children[0].children[0].children[0].memory.children[0].isLeftRoot()) trap = activationCatcher() self.network._root.children[0].children[0].children[0].memory.children[0].appendChild(trap) f = fact([types.Symbol("A"), types.Symbol("B"), types.Symbol("C")]) self.network.assertFact(f) self.assertTrue(trap.leftCatch)
def test_JoinNodeIntraElementVarBindingTestInBetaNetwork(self): self.network.addRule(types.DefRuleConstruct("A", self.MM, lhs=[ types.OrderedPatternCE([ types.SingleFieldVariable(types.Symbol("varA")), types.SingleFieldVariable(types.Symbol("varA")), types.Symbol("C"), ], self.MM) ])) self.assertIsInstance(self.network._root.children[0].children[0].children[0].memory.children[0], JoinNode) self.assertTrue(self.network._root.children[0].children[0].children[0].memory.children[0].isLeftRoot()) trap = activationCatcher() self.network._root.children[0].children[0].children[0].memory.children[0].appendChild(trap) f = fact([types.Symbol("A"), types.Symbol("B"), types.Symbol("C")]) self.network.assertFact(f) self.assertFalse(trap.leftCatch) f = fact([types.Symbol("A"), types.Symbol("A"), types.Symbol("C")]) self.network.assertFact(f) self.assertTrue(trap.leftCatch)
def test_NetworkPlotting_DefRuleWithOrClause(self): self.network.addRule( types.DefRuleConstruct( "A", self.MM, lhs=[ types.OrPatternCE([ types.OrderedPatternCE([ types.Symbol("A"), types.SingleFieldVariable(types.Symbol("varA")), types.Symbol("C"), ], self.MM), types.OrderedPatternCE([ types.SingleFieldVariable(types.Symbol("varA")), types.Symbol("A"), types.Symbol("C"), ], self.MM) ]) ])) # manually fire the network ready event self.network.eventsManager.fire(EventsManager.E_NETWORK_READY, self.network) self.network.eventsManager.fire(EventsManager.E_NETWORK_SHUTDOWN, self.network)