Example #1
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"))
Example #2
0
    def test_list_matches_no_template(self):
        global total_str

        topic = PatternOneOrMoreWildCardNode("*")
        word1 = PatternWordNode("Hi")
        word2 = PatternWordNode("There")
        context = MatchContext(max_search_depth=100,
                               max_search_timeout=60,
                               template_node=PatternTemplateNode(
                                   TemplateWordNode("Hello")),
                               sentence="HELLO",
                               response="Hi there")
        context.add_match(Match(Match.TOPIC, topic, None))
        context.add_match(Match(Match.WORD, word1, "Hi"))
        context.add_match(Match(Match.WORD, word2, "There"))

        total_str = ""
        context.list_matches(self._client_context,
                             output_func=collector,
                             include_template=False)
        self.assertEquals(
            "\tMatches...	Asked: HELLO		1: Match=(Topic) Node=(ONEORMORE [*]) Matched=()		"
            "2: Match=(Word) Node=(WORD [Hi]) Matched=(Hi)		"
            "3: Match=(Word) Node=(WORD [There]) Matched=(There)	"
            "Match score 100.00", total_str)
Example #3
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"))
Example #4
0
    def test_equivalent(self):
        word1 = PatternWordNode("word")
        word2 = PatternWordNode("word")
        word3 = PatternWordNode("word", userid="testuser")

        self.assertTrue(word1.equivalent(word2))
        self.assertFalse(word1.equivalent(word3))
Example #5
0
    def test_to_string(self):
        word1 = PatternWordNode("test1")
        self.assertEquals("WORD [test1]", word1.to_string(verbose=False))
        self.assertEquals("WORD [*] [P(0)^(0)#(0)C(0)_(0)*(0)To(0)Th(0)Te(0)] word=[test1]", word1.to_string(verbose=True))

        word2 = PatternWordNode("test2", "testid")
        self.assertEquals("WORD [test2]", word2.to_string(verbose=False))
        self.assertEquals("WORD [testid] [P(0)^(0)#(0)C(0)_(0)*(0)To(0)Th(0)Te(0)] word=[test2]", word2.to_string(verbose=True))
Example #6
0
 def test_init_match_nodes_not_empty(self):
     context1 = MatchContext(max_search_depth=100,
                             max_search_timeout=60,
                             matched_nodes=[
                                 Match(Match.WORD, PatternWordNode("Hello"),
                                       "Hello"),
                                 Match(Match.WORD, PatternWordNode("There"),
                                       "There")
                             ])
     self.assertEqual(100, context1.max_search_depth)
     self.assertEqual(60, context1.max_search_timeout)
     self.assertEqual(2, len(context1.matched_nodes))
     self.assertIsInstance(context1.total_search_start, datetime.datetime)
Example #7
0
    def test_get_set_matched_nodes(self):
        context = MatchContext(max_search_depth=100, max_search_timeout=60)

        context._matched_nodes = [
            Match(Match.WORD, PatternWordNode("Hello"), "Hello"),
            Match(Match.WORD, PatternWordNode("There"), "There")
        ]

        self.assertEqual(2, len(context.matched_nodes))

        matched = context.matched_nodes

        self.assertEqual(2, len(matched))
Example #8
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))
Example #9
0
    def test_word_node_exists(self):
        node = PatternNode()
        self.assertIsNotNone(node)

        new_node1 = PatternWordNode("test")

        self.assertIsNone(node._word_node_exist(new_node1))
        node.add_child(new_node1)
        self.assertIsNotNone(node._word_node_exist(new_node1))

        new_node2 = PatternWordNode("test", userid="testid2")

        self.assertIsNone(node._word_node_exist(new_node2))
        node.add_child(new_node2)
        self.assertIsNotNone(node._word_node_exist(new_node2))
Example #10
0
    def test_to_xml(self):
        word1 = PatternWordNode("test1")
        self.assertEqual('<word word="test1"></word>\n', word1.to_xml(self._client_context))
        self.assertEqual('<word userid="*" word="test1"></word>\n', word1.to_xml(self._client_context, include_user=True))

        word2 = PatternWordNode("test2", userid="testid")
        self.assertEqual('<word word="test2"></word>\n', word2.to_xml(self._client_context))
        self.assertEqual('<word userid="testid" word="test2"></word>\n', word2.to_xml(self._client_context, include_user=True))
Example #11
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)
Example #12
0
    def test_hash(self):
        node = PatternZeroOrMoreWildCardNode("#")

        self.assertFalse(node.is_root())
        self.assertFalse(node.is_priority())
        self.assertTrue(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.assertTrue(node.is_wildcard())

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

        sentence = Sentence("*")

        self.assertEqual(node.wildcard, "#")
        self.assertTrue(node.equivalent(PatternZeroOrMoreWildCardNode("#")))
        result = node.equals(self.bot, "testid", sentence, 0)
        self.assertFalse(result.matched)
        self.assertEqual(node.to_string(), "ZEROORMORE [P(0)^(0)#(0)C(0)_(0)*(0)To(0)Th(0)Te(0)] wildcard=[#]")

        self.assertFalse(node.equivalent(PatternWordNode("test")))
Example #13
0
    def assert_just_conversation_storage(self,
                                         store,
                                         can_empty=True,
                                         test_load=True):

        if can_empty is True:
            store.empty()

        client = TestClient()
        client_context = client.create_client_context("user1")

        conversation = Conversation(client_context)

        question1 = Question.create_from_text(client_context, "Hello There")
        question1.sentence(0).response = "Hi"
        question1.sentence(0).matched_context = MatchContext(
            max_search_depth=99,
            max_search_timeout=99,
            matched_nodes=[
                Match(Match.WORD, PatternWordNode("Hello"), "Hello")
            ],
            template_node=None,
            sentence="HELLO",
            response="Hi There")

        conversation.record_dialog(question1)

        store.store_conversation(client_context, conversation)
Example #14
0
    def test_add_that_to_node_pattern_with_set(self):
        graph = PatternGraph(self._aiml_parser)

        base_node = PatternWordNode("THAT_TEST")

        that_element = ET.fromstring('<that>HELLO <set name="test" /> WORLD</that>')

        end_node = graph.add_that_to_node(that_element, base_node)
        self.assertIsNotNone(end_node)

        self.assertIsNotNone(base_node)
        self.assertIsNotNone(base_node.that)
        self.assertIsInstance(base_node.that, PatternThatNode)

        self.assertTrue(base_node.that.has_children())
        self.assertIsInstance(base_node.that.children[0], PatternWordNode)
        self.assertEqual(base_node.that.children[0].word, "HELLO")

        self.assertTrue(base_node.that.children[0].has_children())
        self.assertIsInstance(base_node.that.children[0].children[0], PatternSetNode)
        self.assertEqual(base_node.that.children[0].children[0].set_name, "TEST")

        self.assertTrue(base_node.that.children[0].children[0].has_children())
        self.assertIsInstance(base_node.that.children[0].children[0].children[0], PatternWordNode)
        self.assertEqual(base_node.that.children[0].children[0].children[0].word, "WORLD")
Example #15
0
    def test_init(self):
        node = PatternPriorityWordNode("test1")
        self.assertIsNotNone(node)

        self.assertFalse(node.is_root())
        self.assertTrue(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(PatternPriorityWordNode("test1")))
        self.assertTrue(node.equals(self.bot, "testid", "test1"))
        self.assertFalse(node.equals(self.bot, "testid", "test2"))
        self.assertEqual(
            node.to_string(),
            "PWORD [P(0)^(0)#(0)C(0)_(0)*(0)To(0)Th(0)Te(0)] word=[test1]")

        node.add_child(PatternWordNode("test2"))
        self.assertEqual(len(node.children), 1)
        self.assertEqual(
            node.to_string(),
            "PWORD [P(0)^(0)#(0)C(1)_(0)*(0)To(0)Th(0)Te(0)] word=[test1]")
Example #16
0
    def test_dump_no_caller(self):
        global str1

        node = PatternNode()
        self.assertIsNotNone(node)

        node.add_child(PatternWordNode("test"))
        node.add_child(PatternPriorityWordNode("pTest"))
        node.add_child(PatternZeroOrMoreWildCardNode("^"))
        node.add_child(PatternZeroOrMoreWildCardNode("#"))
        node.add_child(PatternOneOrMoreWildCardNode("*"))
        node.add_child(PatternOneOrMoreWildCardNode("_"))
        node.add_child(PatternTemplateNode(TemplateNode()))
        node.add_child(PatternSetNode({"name": "test"}, "testtext"))
        node.add_child(PatternISetNode({"name": "test"}, "testtext"))
        node.add_child(PatternBotNode({"name": "test"}, "testtext"))
        node.add_child(PatternRegexNode({"name": ".*"}, "testtext"))

        node.dump("", output_func1)

        self.assertEquals(
            "NODE [*] [P(1)^(1)#(1)C(5)_(1)*(1)To(0)Th(0)Te(1)]	"
            "PWORD [*] [P(0)^(0)#(0)C(0)_(0)*(0)To(0)Th(0)Te(0)] word=[pTest]	"
            "ZEROORMORE [*] [P(0)^(0)#(0)C(0)_(0)*(0)To(0)Th(0)Te(0)] wildcard=[^]	"
            "ZEROORMORE [*] [P(0)^(0)#(0)C(0)_(0)*(0)To(0)Th(0)Te(0)] wildcard=[#]	"
            "ONEORMORE [*] [P(0)^(0)#(0)C(0)_(0)*(0)To(0)Th(0)Te(0)] wildcard=[_]	"
            "ONEORMORE [*] [P(0)^(0)#(0)C(0)_(0)*(0)To(0)Th(0)Te(0)] wildcard=[*]	"
            "PTEMPLATE [*] [P(0)^(0)#(0)C(0)_(0)*(0)To(0)Th(0)Te(1)]	"
            "WORD [*] [P(0)^(0)#(0)C(0)_(0)*(0)To(0)Th(0)Te(0)] word=[test]	"
            "SET [*] [P(0)^(0)#(0)C(0)_(0)*(0)To(0)Th(0)Te(0)] name=[TESTTEXT]	"
            "ISET [*] [P(0)^(0)#(0)C(0)_(0)*(0)To(0)Th(0)Te(0)] words=[TESTTEXT]	"
            "BOT [*] [P(0)^(0)#(0)C(0)_(0)*(0)To(0)Th(0)Te(0)] property=[test]	"
            "REGEX [*] [P(0)^(0)#(0)C(0)_(0)*(0)To(0)Th(0)Te(0)] pattern=[testtext]",
            str1)
Example #17
0
    def test_arrow(self):
        node = PatternZeroOrMoreWildCardNode("^")

        self.assertFalse(node.is_root())
        self.assertFalse(node.is_priority())
        self.assertTrue(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.assertTrue(node.is_wildcard())

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

        sentence = Sentence(self._client_context.brain.tokenizer, "*")

        self.assertEqual(node.wildcard, "^")
        self.assertTrue(node.equivalent(PatternZeroOrMoreWildCardNode("^")))
        result = node.equals(self._client_context, sentence, 0)
        self.assertFalse(result.matched)
        self.assertEqual(node.to_string(), "ZEROORMORE [P(0)^(0)#(0)C(0)_(0)*(0)To(0)Th(0)Te(0)] wildcard=[^]")
        self.assertEqual('<zerormore wildcard="^">\n</zerormore>\n', node.to_xml(self._client_context))

        self.assertFalse(node.equivalent(PatternWordNode("test")))
Example #18
0
    def test_underline(self):
        node = PatternOneOrMoreWildCardNode("_")
        self.assertIsNotNone(node)

        self.assertFalse(node.is_root())
        self.assertFalse(node.is_priority())
        self.assertFalse(node.is_zero_or_more())
        self.assertTrue(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.assertTrue(node.is_wildcard())

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

        self.assertEqual(node.wildcard, "_")

        sentence = Sentence(self._client_context, "*")

        self.assertTrue(node.equivalent(PatternOneOrMoreWildCardNode("_")))
        result = node.equals(self._client_context, sentence, 0)
        self.assertFalse(result.matched)
        self.assertEqual(
            node.to_string(),
            "ONEORMORE [*] [P(0)^(0)#(0)C(0)_(0)*(0)To(0)Th(0)Te(0)] wildcard=[_]"
        )
        self.assertEqual('<oneormore wildcard="_">\n</oneormore>\n',
                         node.to_xml(self._client_context))

        self.assertFalse(node.equivalent(PatternWordNode("test")))
Example #19
0
    def test_init(self):
        node = PatternPriorityWordNode("test1")
        self.assertIsNotNone(node)

        self.assertFalse(node.is_root())
        self.assertTrue(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())

        sentence = Sentence(self._client_context.brain.tokenizer, "test1 test2")
        self.assertTrue(node.equivalent(PatternPriorityWordNode("test1")))
        result = node.equals(self._client_context, sentence, 0)
        self.assertTrue(result.matched)
        result = node.equals(self._client_context, sentence, 1)
        self.assertFalse(result.matched)
        self.assertEqual(node.to_string(), "PWORD [*] [P(0)^(0)#(0)C(0)_(0)*(0)To(0)Th(0)Te(0)] word=[test1]")
        self.assertEqual('<priority word="test1"></priority>\n', node.to_xml(self._client_context))

        node.add_child(PatternWordNode("test2"))
        self.assertEqual(len(node.children), 1)
        self.assertEqual(node.to_string(), "PWORD [*] [P(0)^(0)#(0)C(1)_(0)*(0)To(0)Th(0)Te(0)] word=[test1]")
        self.assertEqual('<priority word="test1"><word word="test2"></word>\n</priority>\n', node.to_xml(self._client_context))
Example #20
0
    def test_equivalent(self):
        node = PatternBotNode({}, "test1")
        self.assertIsNotNone(node)

        self.assertTrue(node.equivalent(PatternBotNode([], "test1")))
        self.assertFalse(node.equivalent(PatternBotNode([], "test2")))
        self.assertFalse(node.equivalent(PatternWordNode("test2")))
Example #21
0
    def test_add_topic_to_node_pattern_with_set(self):
        graph = PatternGraph(self._client_context.brain.aiml_parser)

        base_node = PatternWordNode("TOPIC_TEST")

        topic_element = ET.fromstring(
            '<topic>HELLO <set name="test" /> WORLD</topic>')

        end_node = graph.add_topic_to_node(topic_element, base_node)
        self.assertIsNotNone(end_node)

        self.assertIsNotNone(base_node)
        self.assertIsNotNone(base_node.topic)
        self.assertIsInstance(base_node.topic, PatternTopicNode)

        self.assertTrue(base_node.topic.has_children())
        self.assertIsInstance(base_node.topic.children[0], PatternWordNode)
        self.assertEqual(base_node.topic.children[0].word, "HELLO")

        self.assertTrue(base_node.topic.children[0].has_children())
        self.assertIsInstance(base_node.topic.children[0].children[0],
                              PatternSetNode)
        self.assertEqual(base_node.topic.children[0].children[0].set_name,
                         "TEST")

        self.assertTrue(base_node.topic.children[0].children[0].has_children())
        self.assertIsInstance(
            base_node.topic.children[0].children[0].children[0],
            PatternWordNode)
        self.assertEqual(
            base_node.topic.children[0].children[0].children[0].word, "WORLD")
Example #22
0
    def test_to_json(self):
        topic = PatternOneOrMoreWildCardNode("*")
        word1 = PatternWordNode("Hi")
        word2 = PatternWordNode("There")
        context = MatchContext(max_search_depth=100,
                               max_search_timeout=60,
                               template_node=PatternTemplateNode(
                                   TemplateWordNode("Hello")))
        context.add_match(Match(Match.TOPIC, topic, None))
        context.add_match(Match(Match.WORD, word1, "Hi"))
        context.add_match(Match(Match.WORD, word2, "There"))

        json_data = context.to_json()

        self.assertIsNotNone(json_data)
        self.assertEquals(json_data["max_search_depth"], 100)
        self.assertEquals(json_data["max_search_timeout"], 60)
        self.assertIsInstance(json_data["total_search_start"],
                              datetime.datetime)

        self.assertEquals(3, len(json_data["matched_nodes"]))
        self.assertEquals(
            json_data["matched_nodes"][0], {
                'multi_word': True,
                'node': 'ONEORMORE [*]',
                'type': 'Topic',
                'wild_card': True,
                'words': []
            })
        self.assertEquals(
            json_data["matched_nodes"][1], {
                'multi_word': False,
                'node': 'WORD [Hi]',
                'type': 'Word',
                'wild_card': False,
                'words': ["Hi"]
            })
        self.assertEquals(
            json_data["matched_nodes"][2], {
                'multi_word': False,
                'node': 'WORD [There]',
                'type': 'Word',
                'wild_card': False,
                'words': ["There"]
            })
Example #23
0
    def test_word_nodes(self):
        node = PatternNode()
        self.assertIsNotNone(node)
        self.assertFalse(node.has_nodes())

        node = PatternNode()
        node.add_child(PatternWordNode("test"))
        self.assertTrue(node.has_nodes())
        self.assertTrue(node.has_children())
Example #24
0
    def test_to_json(self):

        topic = PatternOneOrMoreWildCardNode("*")
        word1 = PatternWordNode("Hi")
        word2 = PatternWordNode("There")
        context = MatchContext(max_search_depth=100,
                               max_search_timeout=60,
                               template_node=TemplateWordNode("Hello"))
        context.add_match(Match(Match.TOPIC, topic, None))
        context.add_match(Match(Match.WORD, word1, "Hi"))
        context.add_match(Match(Match.WORD, word2, "There"))

        sentence = Sentence(self._client_context,
                            "One Two Three",
                            matched_context=context)

        json_data = sentence.to_json()
        self.assertIsNotNone(json_data)
Example #25
0
 def node_from_text(word):
     if word.startswith("$"):
         return PatternPriorityWordNode(word[1:])
     elif PatternZeroOrMoreWildCardNode.is_wild_card(word):
         return PatternZeroOrMoreWildCardNode(word)
     elif PatternOneOrMoreWildCardNode.is_wild_card(word):
         return PatternOneOrMoreWildCardNode(word)
     else:
         return PatternWordNode(word)
Example #26
0
    def test_to_string(self):
        word1 = PatternWordNode("test1")
        self.assertEqual("WORD [test1]", word1.to_string(verbose=False))
        self.assertEqual(
            "WORD [*] [P(0)^(0)#(0)C(0)_(0)*(0)To(0)Th(0)Te(0)] word=[test1]",
            word1.to_string(verbose=True))

        word2 = PatternWordNode("test2", "testid")
        self.assertEqual("WORD [test2]", word2.to_string(verbose=False))
        self.assertEqual(
            "WORD [testid] [P(0)^(0)#(0)C(0)_(0)*(0)To(0)Th(0)Te(0)] word=[test2]",
            word2.to_string(verbose=True))
Example #27
0
    def test_equals(self):
        word1 = PatternWordNode("word")
        word2 = PatternWordNode("word", userid="testid")
        word3 = PatternWordNode("word", userid="testid2")

        match1 = word1.equals(self._client_context, Sentence(self._client_context.brain.tokenizer, 'word'), 0)
        self.assertIsNotNone(match1)
        self.assertTrue(match1.matched)

        match2 = word2.equals(self._client_context, Sentence(self._client_context.brain.tokenizer, 'word'), 0)
        self.assertIsNotNone(match2)
        self.assertTrue(match2.matched)

        match3 = word3.equals(self._client_context, Sentence(self._client_context.brain.tokenizer, 'word'), 0)
        self.assertIsNotNone(match3)
        self.assertFalse(match3.matched)
Example #28
0
    def test_to_json_word_node(self):
        word = PatternWordNode("Hello")
        match = Match(Match.WORD, word, "Hello")

        json_data = match.to_json()
        self.assertIsNotNone(json_data)
        self.assertEqual(json_data["type"], "Word")
        self.assertEqual(json_data["node"], "WORD [Hello]")
        self.assertEqual(json_data["words"], ["Hello"])
        self.assertEqual(json_data["multi_word"], False)
        self.assertEqual(json_data["wild_card"], False)
Example #29
0
    def test_set_get_matched_nodes(self):
        context1 = MatchContext(max_search_depth=100,
                                max_search_timeout=60,
                                matched_nodes=[])

        self.assertEquals([], context1.matched_nodes)

        context1.set_matched_nodes(
            [Match(Match.WORD, PatternWordNode("Hello"), "Hello")])

        self.assertEquals(1, len(context1.matched_nodes))
Example #30
0
    def test_remove_word_node(self):
        node = PatternNode()
        self.assertIsNotNone(node)

        child_node = PatternWordNode("test")
        node.add_child(child_node)
        self.assertEqual(1, len(node.children))
        self.assertEqual(1, len(node._children_words))

        node._remove_node(child_node)
        self.assertEqual(0, len(node.children))
        self.assertEqual(0, len(node._children_words))
Example #31
0
    def test_equivalent(self):
        word1 = PatternWordNode("word")
        word2 = PatternWordNode("word")
        word3 = PatternWordNode("word", userid="testuser")

        self.assertTrue(word1.equivalent(word2))
        self.assertFalse(word1.equivalent(word3))
Example #32
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.assertEqual(["*"], wildcard.matching_wildcards())
Example #33
0
    def test_to_xml(self):
        word1 = PatternWordNode("test1")
        self.assertEqual('<word word="test1"></word>\n', word1.to_xml(self._client_context))
        self.assertEqual('<word userid="*" word="test1"></word>\n', word1.to_xml(self._client_context, include_user=True))

        word2 = PatternWordNode("test2", userid="testid")
        self.assertEqual('<word word="test2"></word>\n', word2.to_xml(self._client_context))
        self.assertEqual('<word userid="testid" word="test2"></word>\n', word2.to_xml(self._client_context, include_user=True))
Example #34
0
    def test_dump_with_caller(self):
        node = PatternNode()
        self.assertIsNotNone(node)

        node.add_child(PatternWordNode("test"))
        node.add_child(PatternPriorityWordNode("pTest"))
        node.add_child(PatternZeroOrMoreWildCardNode("^"))
        node.add_child(PatternZeroOrMoreWildCardNode("#"))
        node.add_child(PatternOneOrMoreWildCardNode("*"))
        node.add_child(PatternOneOrMoreWildCardNode("_"))
        node.add_child(PatternTemplateNode(TemplateNode()))
        node.add_child(PatternSetNode({"name": "test"}, "testtext"))
        node.add_child(PatternISetNode({"name": "test"}, "testtext"))
        node.add_child(PatternBotNode({"name": "test"}, "testtext"))
        node.add_child(PatternRegexNode({"name": ".*"}, "testtext"))

        node.dump("", YLogger.debug)
Example #35
0
    def test_equals(self):
        word1 = PatternWordNode("word")
        word2 = PatternWordNode("word", userid="testid")
        word3 = PatternWordNode("word", userid="testid2")

        match1 = word1.equals(self._client_context, Sentence(self._client_context.brain.tokenizer, 'word'), 0)
        self.assertIsNotNone(match1)
        self.assertTrue(match1.matched)

        match2 = word2.equals(self._client_context, Sentence(self._client_context.brain.tokenizer, 'word'), 0)
        self.assertIsNotNone(match2)
        self.assertTrue(match2.matched)

        match3 = word3.equals(self._client_context, Sentence(self._client_context.brain.tokenizer, 'word'), 0)
        self.assertIsNotNone(match3)
        self.assertFalse(match3.matched)
Example #36
0
    def test_init(self):
        node = PatternWordNode("test1")

        self.assertFalse(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())

        sentence = Sentence(self._client_context.brain.tokenizer, "test1 test")

        self.assertTrue(node.equivalent(PatternWordNode("test1")))
        self.assertFalse(node.equivalent(PatternWordNode("test2")))
        self.assertFalse(node.equivalent(PatternBotNode([], "test1")))

        result = node.equals(self._client_context, sentence, 0)
        self.assertTrue(result.matched)
        result = node.equals(self._client_context, sentence, 1)
        self.assertFalse(result.matched)
        self.assertEqual(node.to_string(), "WORD [*] [P(0)^(0)#(0)C(0)_(0)*(0)To(0)Th(0)Te(0)] word=[test1]")

        node.add_child(PatternWordNode("test2"))
        self.assertEqual(len(node.children), 1)
        self.assertEqual(node.to_string(), "WORD [*] [P(0)^(0)#(0)C(1)_(0)*(0)To(0)Th(0)Te(0)] word=[test1]")
Example #37
0
    def test_init(self):
        node = PatternWordNode("test1")

        self.assertFalse(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.assertIsNotNone(node.children)
        self.assertFalse(node.has_children())

        self.assertTrue(node.equivalent(PatternWordNode("test1")))
        self.assertFalse(node.is_root())
        self.assertEqual(node.to_string(), "WORD [P(0)^(0)#(0)C(0)_(0)*(0)To(0)Th(0)Te(0)] word=[test1]")

        node.add_child(PatternWordNode("test2"))
        self.assertEqual(len(node.children), 1)
        self.assertEqual(node.to_string(), "WORD [P(0)^(0)#(0)C(1)_(0)*(0)To(0)Th(0)Te(0)] word=[test1]")
Example #38
0
 def __init__(self, word):
     PatternWordNode.__init__(self, word)