Ejemplo n.º 1
0
    def test_equivalent_attribs(self):
        node1 = PatternSetNode({"name": "test1"}, "")
        node2 = PatternSetNode({"name": "test1"}, "")
        node3 = PatternSetNode({"name": "test1"}, "", userid="testid")

        self.assertTrue(node1.equivalent(node2))
        self.assertFalse(node1.equivalent(node3))
Ejemplo n.º 2
0
    def test_equivalent_text(self):
        node1 = PatternSetNode({}, "test1")
        node2 = PatternSetNode({}, "test1")
        node3 = PatternSetNode({}, "test1", userid="testid")

        self.assertTrue(node1.equivalent(node2))
        self.assertFalse(node1.equivalent(node3))
Ejemplo n.º 3
0
    def test_init(self):
        self.bot.brain.sets.add_set("TEST1", ["VALUE1", "VALUE2", "VALUE3"])

        node = PatternSetNode("test1")
        self.assertIsNotNone(node)

        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.assertTrue(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(PatternSetNode("TEST1")))
        self.assertTrue(node.equals(self.bot, "testid", "VALUE1"))
        self.assertTrue(node.equals(self.bot, "testid", "VALUE2"))
        self.assertTrue(node.equals(self.bot, "testid", "VALUE3"))
        self.assertFalse(node.equals(self.bot, "testid", "VALUE4"))
        self.assertEqual(
            node.to_string(),
            "SET [P(0)^(0)#(0)C(0)_(0)*(0)To(0)Th(0)Te(0)] words=[TEST1]")
Ejemplo n.º 4
0
    def test_spaces(self):
        self.bot.brain.sets.add_set(
            "TEST1", ["VALUE1 TEXT1", "VALUE2 TEXT2", "VALUE3 TEXT3"])

        node = PatternSetNode("test1")
        self.assertIsNotNone(node)

        self.assertTrue(node.equivalent(PatternSetNode("TEST1")))
        self.assertTrue(node.equals(self.bot, "testid", "VALUE1 TEXT1"))
        self.assertTrue(node.equals(self.bot, "testid", "VALUE2 TEXT2"))
        self.assertTrue(node.equals(self.bot, "testid", "VALUE3 TEXT3"))
Ejemplo n.º 5
0
    def test_equivalent_mixed(self):
        self._client_context.brain._sets_collection.add_set(
            "TEST1", {
                "VALUE1": [["VALUE1"]],
                "VALUE2": [["VALUE2"]],
                "VALUE3": [["VALUE3"]],
                "VALUE4": [["VALUE4"]]
            }, "teststore")

        node1 = PatternSetNode({}, "test1")
        node2 = PatternSetNode({}, "test1", userid="testid")
        node3 = PatternSetNode({}, "test1", userid="testid2")

        node4 = PatternSetNode({"name": "test1"}, "")
        node5 = PatternSetNode({"name": "test1"}, "", userid="testid")
        node6 = PatternSetNode({"name": "test1"}, "", userid="testid2")

        self.assertTrue(node1.equivalent(node4))
        self.assertTrue(node2.equivalent(node5))
        self.assertTrue(node3.equivalent(node6))
Ejemplo n.º 6
0
    def test_equals_mixed(self):
        loader = SetLoader()

        self._client_context.brain._sets_collection._sets["TEST1"] = loader.load_from_text("""
                    VALUE1
                    VALUE2
                    VALUE3
                    VALUE4
                """)

        node1 = PatternSetNode({}, "test1")
        node2 = PatternSetNode({}, "test1", userid="testid")
        node3 = PatternSetNode({}, "test1", userid="testid2")

        node4 = PatternSetNode({"name": "test1"}, "")
        node5 = PatternSetNode({"name": "test1"}, "", userid="testid")
        node6 = PatternSetNode({"name": "test1"}, "", userid="testid2")

        self.assertTrue(node1.equivalent(node4))
        self.assertTrue(node2.equivalent(node5))
        self.assertTrue(node3.equivalent(node6))
Ejemplo n.º 7
0
    def test_multi_word_set(self):
        loader = SetLoader()

        self._client_context.brain._sets_collection._sets[
            "TEST1"] = loader.load_from_text("""
            Red
            Red Amber
            Red Brown
        """)

        node = PatternSetNode([], "test1")
        self.assertIsNotNone(node)

        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.assertTrue(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.assertTrue(node.equivalent(PatternSetNode([], "TEST1")))
        self.assertIsNotNone(node.children)
        self.assertFalse(node.has_children())

        sentence = Sentence(self._client_context.brain.tokenizer,
                            "RED Red BROWN red AMBER")

        result = node.equals(self._client_context, sentence, 0)
        self.assertTrue(result.matched)
        self.assertEquals(result.matched_phrase, "Red")
        self.assertEquals(result.word_no, 0)

        result = node.equals(self._client_context, sentence,
                             result.word_no + 1)
        self.assertTrue(result.matched)
        self.assertEquals(result.matched_phrase, "Red Brown")

        result = node.equals(self._client_context, sentence,
                             result.word_no + 1)
        self.assertTrue(result.matched)
        self.assertEquals(result.matched_phrase, "Red Amber")

        self.assertEqual(
            node.to_string(),
            "SET [P(0)^(0)#(0)C(0)_(0)*(0)To(0)Th(0)Te(0)] name=[TEST1]")
        self.assertEqual('<set name="TEST1">\n</set>',
                         node.to_xml(self._client_context))
Ejemplo n.º 8
0
    def test_init(self):
        node = PatternSetNode("test1")
        self.assertIsNotNone(node)

        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(PatternSetNode("test1")))
        self.assertFalse(node.is_root())
        self.assertEqual(node.to_string(), "SET [P(0)^(0)#(0)C(0)_(0)*(0)To(0)Th(0)Te(0)] name=[TEST1]")
Ejemplo n.º 9
0
    def test_multi_node_set(self):
        self._client_context.brain._sets_collection.add_set(
            "TEST1", {"RED": [["RED"], ["RED", "AMBER"], ["RED", "BROWN"]]},
            "teststore")

        node = PatternSetNode([], "test1")
        self.assertIsNotNone(node)

        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.assertTrue(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.assertTrue(node.equivalent(PatternSetNode([], "TEST1")))
        self.assertIsNotNone(node.children)
        self.assertFalse(node.has_children())

        sentence = Sentence(self._client_context.brain.tokenizer,
                            "RED Red BROWN red AMBER")

        result = node.equals(self._client_context, sentence, 0)
        self.assertTrue(result.matched)
        self.assertEqual(result.matched_phrase, "RED")
        self.assertEqual(result.word_no, 0)

        result = node.equals(self._client_context, sentence,
                             result.word_no + 1)
        self.assertTrue(result.matched)
        self.assertEqual(result.matched_phrase, "RED BROWN")

        result = node.equals(self._client_context, sentence,
                             result.word_no + 1)
        self.assertTrue(result.matched)
        self.assertEqual(result.matched_phrase, "RED AMBER")

        self.assertEqual(
            node.to_string(),
            "SET [*] [P(0)^(0)#(0)C(0)_(0)*(0)To(0)Th(0)Te(0)] name=[TEST1]")
        self.assertEqual('<set name="TEST1">\n</set>',
                         node.to_xml(self._client_context))
Ejemplo n.º 10
0
    def test_init(self):
        node = PatternSetNode("test1")
        self.assertIsNotNone(node)

        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(PatternSetNode("test1")))
        self.assertFalse(node.is_root())
        self.assertEqual(
            node.to_string(),
            "SET [P(0)^(0)#(0)C(0)_(0)*(0)To(0)Th(0)Te(0)] name=[TEST1]")
Ejemplo n.º 11
0
    def test_init(self):
        loader = SetLoader()

        self._client_context.brain._sets_collection._sets[
            "TEST1"] = loader.load_from_text("""
            VALUE1
            VALUE2
            VALUE3
            VALUE4
        """)

        node = PatternSetNode([], "test1")
        self.assertIsNotNone(node)

        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.assertTrue(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,
                            "VALUE1 VALUE2 VALUE3 VALUE4")

        self.assertTrue(node.equivalent(PatternSetNode([], "TEST1")))
        result = node.equals(self._client_context, sentence, 0)
        self.assertTrue(result.matched)
        result = node.equals(self._client_context, sentence, 1)
        self.assertTrue(result.matched)
        result = node.equals(self._client_context, sentence, 2)
        self.assertTrue(result.matched)
        result = node.equals(self._client_context, sentence, 3)
        self.assertTrue(result.matched)
        self.assertEqual(
            node.to_string(),
            "SET [P(0)^(0)#(0)C(0)_(0)*(0)To(0)Th(0)Te(0)] name=[TEST1]")
        self.assertEqual('<set name="TEST1">\n</set>',
                         node.to_xml(self._client_context))
Ejemplo n.º 12
0
    def test_multi_node_set(self):
        loader = SetLoader()

        self._client_context.brain._sets_collection._sets["TEST1"] = loader.load_from_text("""
            Red
            Red Amber
            Red Brown
        """)

        node = PatternSetNode([], "test1")
        self.assertIsNotNone(node)

        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.assertTrue(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.assertTrue(node.equivalent(PatternSetNode([], "TEST1")))
        self.assertIsNotNone(node.children)
        self.assertFalse(node.has_children())

        sentence = Sentence(self._client_context.brain.tokenizer, "RED Red BROWN red AMBER")

        result = node.equals(self._client_context, sentence, 0)
        self.assertTrue(result.matched)
        self.assertEquals(result.matched_phrase, "Red")
        self.assertEquals(result.word_no, 0)

        result = node.equals(self._client_context, sentence, result.word_no+1)
        self.assertTrue(result.matched)
        self.assertEquals(result.matched_phrase, "Red Brown")

        result = node.equals(self._client_context, sentence, result.word_no+1)
        self.assertTrue(result.matched)
        self.assertEquals(result.matched_phrase, "Red Amber")

        self.assertEqual(node.to_string(), "SET [*] [P(0)^(0)#(0)C(0)_(0)*(0)To(0)Th(0)Te(0)] name=[TEST1]")
        self.assertEqual('<set name="TEST1">\n</set>', node.to_xml(self._client_context))
Ejemplo n.º 13
0
    def test_init(self):
        loader = SetLoader()

        self._client_context.brain._sets_collection._sets["TEST1"] = loader.load_from_text("""
            VALUE1
            VALUE2
            VALUE3
            VALUE4
        """)

        node = PatternSetNode([], "test1")
        self.assertIsNotNone(node)

        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.assertTrue(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, "VALUE1 VALUE2 VALUE3 VALUE4")

        self.assertTrue(node.equivalent(PatternSetNode([], "TEST1")))
        result = node.equals(self._client_context, sentence, 0)
        self.assertTrue(result.matched)
        result = node.equals(self._client_context, sentence, 1)
        self.assertTrue(result.matched)
        result = node.equals(self._client_context, sentence, 2)
        self.assertTrue(result.matched)
        result = node.equals(self._client_context, sentence, 3)
        self.assertTrue(result.matched)
        self.assertEqual(node.to_string(), "SET [*] [P(0)^(0)#(0)C(0)_(0)*(0)To(0)Th(0)Te(0)] name=[TEST1]")
        self.assertEqual('<set name="TEST1">\n</set>', node.to_xml(self._client_context))
Ejemplo n.º 14
0
    def test_equivalent_diff_set_names(self):
        node1 = PatternSetNode({}, "test1")
        node2 = PatternSetNode({}, "test2")

        self.assertFalse(node1.equivalent(node2))
Ejemplo n.º 15
0
    def test_equivalent_diff_nodes(self):
        node1 = PatternSetNode({}, "test1")
        node2 = PatternWordNode("*")

        self.assertFalse(node1.equivalent(node2))