Esempio n. 1
0
 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)
Esempio n. 2
0
    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)