예제 #1
0
    def test_multiple_roots(self):
        node1 = PatternRootNode()
        node2 = PatternRootNode()

        with self.assertRaises(ParserException) as raised:
            node1.can_add(node2)
        self.assertTrue(str(raised.exception).startswith("Cannot add root node to existing root node"))
예제 #2
0
    def test_that_to_root(self):
        node1 = PatternRootNode()
        node2 = PatternThatNode()

        with self.assertRaises(ParserException) as raised:
            node1.can_add(node2)
        self.assertEqual(str(raised.exception), "Cannot add that node to root node")
예제 #3
0
    def test_remove_children_with_userid(self):
        root = PatternRootNode()

        root.add_child(PatternWordNode("test1"))
        root.add_child(PatternWordNode("test2", userid="user1"))
        root.add_child(PatternWordNode("test3", userid="user1"))
        root.add_child(PatternWordNode("test4", userid="user2"))

        self.assertEquals(4, len(root.children))

        root.remove_children_with_userid("user1")

        self.assertEquals(2, len(root.children))
예제 #4
0
    def test_to_string(self):
        node1 = PatternRootNode()
        self.assertEquals("ROOT ", node1.to_string(verbose=False))
        self.assertEquals("ROOT [*] [P(0)^(0)#(0)C(0)_(0)*(0)To(0)Th(0)Te(0)]", node1.to_string(verbose=True))

        node2 = PatternRootNode("testid")
        self.assertEquals("ROOT ", node2.to_string(verbose=False))
        self.assertEquals("ROOT [testid] [P(0)^(0)#(0)C(0)_(0)*(0)To(0)Th(0)Te(0)]", node2.to_string(verbose=True))
예제 #5
0
    def test_root_added_to_child(self):
        node1 = PatternWordNode("test")
        node2 = PatternRootNode()

        with self.assertRaises(ParserException) as raised:
            node1.can_add(node2)
        self.assertTrue(str(raised.exception).startswith("Cannot add root node to child node"))
예제 #6
0
 def test_parse_text_nothing(self):
     graph = PatternGraph(self._client_context.brain.aiml_parser)
     root = PatternRootNode()
     final_node = graph._parse_text("", root)
     self.assertIsNotNone(final_node)
     self.assertIsInstance(final_node, PatternRootNode)
     self.assertEqual(final_node, root)
예제 #7
0
 def test_parse_text_multiple_words_whitespaces(self):
     graph = PatternGraph(self._client_context.brain.aiml_parser)
     root = PatternRootNode()
     final_node = graph._parse_text("HELLO \t\n\r THERE", root)
     self.assertIsNotNone(final_node)
     self.assertIsInstance(final_node, PatternWordNode)
     self.assertEqual(final_node.word, "THERE")
예제 #8
0
 def test_parse_text_word(self):
     graph = PatternGraph(self._client_context.brain.aiml_parser)
     root = PatternRootNode()
     final_node = graph._parse_text("HELLO", root)
     self.assertIsNotNone(final_node)
     self.assertIsInstance(final_node, PatternWordNode)
     self.assertEqual(final_node.word, "HELLO")
예제 #9
0
    def test_root_to_template(self):
        node1 = PatternTemplateNode(TemplateNode())
        node2 = PatternRootNode()

        with self.assertRaises(ParserException) as raised:
            node1.can_add(node2)
        self.assertEqual(str(raised.exception),
                         "Cannot add root node to template node")
예제 #10
0
 def test_init_with_root(self):
     root = PatternRootNode()
     graph = PatternGraph(self._client_context.brain.aiml_parser,
                          root_node=root)
     self.assertIsNotNone(graph)
     self.assertIsNotNone(graph.root)
     self.assertIsInstance(graph.root, PatternRootNode)
     self.assertEqual(graph.root, root)
예제 #11
0
    def test_parse_text_oneormore(self):
        graph = PatternGraph(self._client_context.brain.aiml_parser)
        root = PatternRootNode()
        final_node = graph._parse_text("_", root)
        self.assertIsNotNone(final_node)
        self.assertIsInstance(final_node, PatternOneOrMoreWildCardNode)

        final_node = graph._parse_text("*", root)
        self.assertIsNotNone(final_node)
        self.assertIsInstance(final_node, PatternOneOrMoreWildCardNode)
예제 #12
0
    def test_equivalent_userid(self):
        node1 = PatternRootNode()
        node2 = PatternRootNode()
        node3 = PatternRootNode(userid="testuser")

        self.assertTrue(node1.equivalent(node2))
        self.assertFalse(node1.equivalent(node3))
예제 #13
0
    def test_wildcard(self):

        wildcard = MockPatternWildCardNode("*")
        self.assertIsNotNone(wildcard)

        self.assertTrue(wildcard.is_wildcard())

        with self.assertRaises(ParserException):
            wildcard.can_add(PatternRootNode())

        wildcard.can_add(PatternWordNode("test"))

        self.assertEquals(["*"], wildcard.matching_wildcards())
예제 #14
0
    def test_init(self):
        node = PatternRootNode()
        self.assertIsNotNone(node)

        self.assertTrue(node.is_root())
        self.assertFalse(node.is_priority())
        self.assertFalse(node.is_wildcard())
        self.assertFalse(node.is_zero_or_more())
        self.assertFalse(node.is_one_or_more())
        self.assertFalse(node.is_set())
        self.assertFalse(node.is_bot())
        self.assertFalse(node.is_template())
        self.assertFalse(node.is_that())
        self.assertFalse(node.is_topic())
        self.assertFalse(node.is_wildcard())

        self.assertIsNotNone(node.children)
        self.assertFalse(node.has_children())

        self.assertTrue(node.equivalent(PatternRootNode()))
        self.assertEqual(node.to_string(), "ROOT [*] [P(0)^(0)#(0)C(0)_(0)*(0)To(0)Th(0)Te(0)]")

        node.add_child(PatternNode())
        self.assertEqual(len(node.children), 1)
        self.assertEqual(node.to_string(), "ROOT [*] [P(0)^(0)#(0)C(1)_(0)*(0)To(0)Th(0)Te(0)]")
예제 #15
0
    def test_remove_all_types_children_with_userid(self):
        root = PatternRootNode()

        root.add_child(PatternPriorityWordNode("test1", userid="user1"))
        root.add_child(PatternWordNode("test2", userid="user1"))
        root.add_child(PatternZeroOrMoreWildCardNode('^', userid="user1"))
        root.add_child(PatternZeroOrMoreWildCardNode('#', userid="user1"))
        root.add_child(PatternOneOrMoreWildCardNode('_', userid="user1"))
        root.add_child(PatternOneOrMoreWildCardNode('*', userid="user1"))

        self.assertEquals(1, len(root.priority_words))
        self.assertIsNotNone(root._0ormore_hash)
        self.assertIsNotNone(root._1ormore_underline)
        self.assertEquals(1, len(root.children))
        self.assertIsNotNone(root._0ormore_arrow)
        self.assertIsNotNone(root._1ormore_star)

        root.remove_children_with_userid("user1")

        self.assertEquals(0, len(root.priority_words))
        self.assertIsNone(root._0ormore_hash)
        self.assertIsNone(root._1ormore_underline)
        self.assertEquals(0, len(root.children))
        self.assertIsNone(root._0ormore_arrow)
        self.assertIsNone(root._1ormore_star)
예제 #16
0
 def test_parse_text_priority(self):
     graph = PatternGraph(self._client_context.brain.aiml_parser)
     root = PatternRootNode()
     final_node = graph._parse_text("$HELLO", root)
     self.assertIsNotNone(final_node)
     self.assertIsInstance(final_node, PatternPriorityWordNode)