Example #1
0
    def test_equivalent_template(self):
        node1 = PatternRegexNode({"template": "LEGION"}, "")
        node2 = PatternRegexNode({"template": "LEGION"}, "")
        node3 = PatternRegexNode({"template": "LEGION"}, "", userid="testuser")

        self.assertTrue(node1.equivalent(node2))
        self.assertFalse(node1.equivalent(node3))
Example #2
0
    def test_equivalent_pattern(self):
        node1 = PatternRegexNode({}, "^LEGION$")
        node2 = PatternRegexNode({}, "^LEGION$")
        node3 = PatternRegexNode({}, "^LEGION$", userid="testuser")

        self.assertTrue(node1.equivalent(node2))
        self.assertFalse(node1.equivalent(node3))
Example #3
0
    def test_not_equals_template(self):
        self._client_context.brain.regex_templates.add_regex(
            "LEGION", re.compile("^LEGION$", re.IGNORECASE))

        node1 = PatternRegexNode({"template": "OTHER"}, "")
        match = node1.equals(self._client_context,
                             Sentence(self._client_context, 'LEGION'), 0)
        self.assertIsNotNone(match)
        self.assertFalse(match.matched)
    def test_equals_template(self):
        self._client_context.brain.regex_templates.add_regex(
            "LEGION", re.compile("^LEGION$", re.IGNORECASE))

        node1 = PatternRegexNode({"template": "LEGION"}, "")
        node2 = PatternRegexNode({"template": "LEGION"}, "", userid="testid")
        node3 = PatternRegexNode({"template": "LEGION"}, "", userid="testid2")

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

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

        match3 = node3.equals(
            self._client_context,
            Sentence(self._client_context.brain.tokenizer, 'LEGION'), 0)
        self.assertIsNotNone(match3)
        self.assertFalse(match3.matched)
Example #5
0
    def test_to_string_form(self):
        node1 = PatternRegexNode({"form": "今[はわ]何時"}, "")
        self.assertEqual(node1.to_string(verbose=False), "REGEX form=[今[はわ]何時]")
        self.assertEqual(node1.to_string(verbose=True), "REGEX [*] [P(0)^(0)#(0)C(0)_(0)*(0)To(0)Th(0)Te(0)] form=[今[はわ]何時]")

        node2 = PatternRegexNode({"form": "今[はわ]何時"}, "", userid="testid")
        self.assertEqual(node2.to_string(verbose=False), "REGEX form=[今[はわ]何時]")
        self.assertEqual(node2.to_string(verbose=True), "REGEX [testid] [P(0)^(0)#(0)C(0)_(0)*(0)To(0)Th(0)Te(0)] form=[今[はわ]何時]")
Example #6
0
    def test_to_xml_form(self):
        node1 = PatternRegexNode({"form": "今[はわ]何時"}, "")
        self.assertEqual('<regex form="今[はわ]何時"></regex>\n', node1.to_xml(self._client_context, include_user=False))
        self.assertEqual('<regex userid="*" form="今[はわ]何時"></regex>\n', node1.to_xml(self._client_context, include_user=True))

        node2 = PatternRegexNode({"form": "今[はわ]何時"}, "", userid="testid")
        self.assertEqual('<regex form="今[はわ]何時"></regex>\n', node2.to_xml(self._client_context, include_user=False))
        self.assertEqual('<regex userid="testid" form="今[はわ]何時"></regex>\n', node2.to_xml(self._client_context, include_user=True))
Example #7
0
    def test_regex_node_exists(self):
        node = PatternNode()
        self.assertIsNotNone(node)

        new_node1 = PatternRegexNode([], "test")

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

        new_node2 = PatternRegexNode([], "test", userid="testid2")

        self.assertIsNone(node._regex_node_exist(new_node2))
        node.add_child(new_node2)
        self.assertIsNotNone(node._regex_node_exist(new_node2))
Example #8
0
    def test_to_xml_template(self):
        node1 = PatternRegexNode({"template": "LEGION"}, "")
        self.assertEqual('<regex template="LEGION"></regex>\n', node1.to_xml(self._client_context, include_user=False))
        self.assertEqual('<regex userid="*" template="LEGION"></regex>\n', node1.to_xml(self._client_context, include_user=True))

        node2 = PatternRegexNode({"template": "LEGION"}, "", userid="testid")
        self.assertEqual('<regex template="LEGION"></regex>\n', node2.to_xml(self._client_context, include_user=False))
        self.assertEqual('<regex userid="testid" template="LEGION"></regex>\n', node2.to_xml(self._client_context, include_user=True))
Example #9
0
    def test_to_string_template(self):
        node1 = PatternRegexNode({"template": "LEGION"}, "")
        self.assertEqual(node1.to_string(verbose=False), "REGEX template=[LEGION]")
        self.assertEqual(node1.to_string(verbose=True), "REGEX [*] [P(0)^(0)#(0)C(0)_(0)*(0)To(0)Th(0)Te(0)] template=[LEGION]")

        node2 = PatternRegexNode({"template": "LEGION"}, "", userid="testid")
        self.assertEqual(node2.to_string(verbose=False), "REGEX template=[LEGION]")
        self.assertEqual(node2.to_string(verbose=True), "REGEX [testid] [P(0)^(0)#(0)C(0)_(0)*(0)To(0)Th(0)Te(0)] template=[LEGION]")
Example #10
0
    def test_to_string_pattern(self):
        node1 = PatternRegexNode({}, "^LEGION$")
        self.assertEqual(node1.to_string(verbose=False), "REGEX pattern=[^LEGION$]")
        self.assertEqual(node1.to_string(verbose=True), "REGEX [*] [P(0)^(0)#(0)C(0)_(0)*(0)To(0)Th(0)Te(0)] pattern=[^LEGION$]")

        node2 = PatternRegexNode({}, "^LEGION$", userid="testid")
        self.assertEqual(node2.to_string(verbose=False), "REGEX pattern=[^LEGION$]")
        self.assertEqual(node2.to_string(verbose=True), "REGEX [testid] [P(0)^(0)#(0)C(0)_(0)*(0)To(0)Th(0)Te(0)] pattern=[^LEGION$]")
Example #11
0
    def test_to_xml_pattern(self):
        node1 = PatternRegexNode({}, "^LEGION$")
        self.assertEqual('<regex pattern="^LEGION$"></regex>\n', node1.to_xml(self._client_context, include_user=False))
        self.assertEqual('<regex userid="*" pattern="^LEGION$"></regex>\n', node1.to_xml(self._client_context, include_user=True))

        node2 = PatternRegexNode({}, "^LEGION$", userid="testid")
        self.assertEqual('<regex pattern="^LEGION$"></regex>\n', node2.to_xml(self._client_context, include_user=False))
        self.assertEqual('<regex userid="testid" pattern="^LEGION$"></regex>\n', node2.to_xml(self._client_context, include_user=True))
Example #12
0
 def test_init_with_nothing(self):
     with self.assertRaises(ParserException) as raised:
         node = PatternRegexNode({}, "")
     self.assertEqual(
         str(raised.exception),
         "Invalid regex node, neither pattern or template specified as attribute or text"
     )
Example #13
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 #14
0
    def test_not_at_equivalent_at_template_level(self):
        node1 = PatternRegexNode({}, "^LEGION$")
        template1 = TemplateNode()
        template1.append(TemplateWordNode("test1"))
        node1.add_template(template1)

        node2 = PatternRegexNode({}, "^LEGION$")
        template2 = TemplateNode()
        template2.append(TemplateWordNode("test2"))
        node1.add_template(template2)

        self.assertTrue(node1.equivalent(node2))
Example #15
0
    def test_remove_regex_node(self):
        node = PatternNode()
        self.assertIsNotNone(node)

        child_node = PatternRegexNode([], "test")
        node.add_child(child_node)
        self.assertEqual(1, len(node.children))

        node._remove_node(child_node)
        self.assertEqual(0, len(node.children))
Example #16
0
    def test_remove_regex_node(self):
        node = PatternNode()
        self.assertIsNotNone(node)

        child_node = PatternRegexNode({"name": ".*"}, "testtext")
        node.add_child(child_node)
        self.assertTrue(node._regex_node_exist(child_node))

        node._remove_node(child_node)
        self.assertFalse(node._regex_node_exist(child_node))
Example #17
0
    def test_equals_pattern(self):
        node1 = PatternRegexNode({}, "^LEGION$")
        node2 = PatternRegexNode({}, "^LEGION$", userid="testid")
        node3 = PatternRegexNode({}, "^LEGION$", userid="testid2")

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

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

        match3 = node3.equals(self._client_context, Sentence(self._client_context.brain.tokenizer, 'LEGION'), 0)
        self.assertIsNotNone(match3)
        self.assertFalse(match3.matched)
Example #18
0
    def test_equivalent_template(self):
        node1 = PatternRegexNode({"template": "LEGION"}, "")
        node2 = PatternRegexNode({"template": "LEGION"}, "")
        node3 = PatternRegexNode({"template": "LEGION"}, "", userid="testuser")

        self.assertTrue(node1.equivalent(node2))
        self.assertFalse(node1.equivalent(node3))
    def test_equivalent_from(self):
        node1 = PatternRegexNode({"form": "今[はわ]何時"}, "")
        node2 = PatternRegexNode({"form": "今[はわ]何時"}, "")
        node3 = PatternRegexNode({"form": "今[はわ]何時"}, "", userid="testuser")

        self.assertTrue(node1.equivalent(node2))
        self.assertFalse(node1.equivalent(node3))
Example #20
0
    def test_equivalent_pattern(self):
        node1 = PatternRegexNode({}, "^LEGION$")
        node2 = PatternRegexNode({}, "^LEGION$")
        node3 = PatternRegexNode({}, "^LEGION$", userid="testuser")

        self.assertTrue(node1.equivalent(node2))
        self.assertFalse(node1.equivalent(node3))
Example #21
0
    def test_to_string_template(self):
        node1 = PatternRegexNode({"template": "LEGION"}, "")
        self.assertEqual(node1.to_string(verbose=False), "REGEX template=[LEGION]")
        self.assertEqual(node1.to_string(verbose=True), "REGEX [*] [P(0)^(0)#(0)C(0)_(0)*(0)To(0)Th(0)Te(0)] template=[LEGION]")

        node2 = PatternRegexNode({"template": "LEGION"}, "", userid="testid")
        self.assertEqual(node2.to_string(verbose=False), "REGEX template=[LEGION]")
        self.assertEqual(node2.to_string(verbose=True), "REGEX [testid] [P(0)^(0)#(0)C(0)_(0)*(0)To(0)Th(0)Te(0)] template=[LEGION]")
Example #22
0
    def test_to_xml_pattern(self):
        node1 = PatternRegexNode({}, "^LEGION$")
        self.assertEqual('<regex pattern="^LEGION$"></regex>\n', node1.to_xml(self._client_context, include_user=False))
        self.assertEqual('<regex userid="*" pattern="^LEGION$"></regex>\n', node1.to_xml(self._client_context, include_user=True))

        node2 = PatternRegexNode({}, "^LEGION$", userid="testid")
        self.assertEqual('<regex pattern="^LEGION$"></regex>\n', node2.to_xml(self._client_context, include_user=False))
        self.assertEqual('<regex userid="testid" pattern="^LEGION$"></regex>\n', node2.to_xml(self._client_context, include_user=True))
Example #23
0
    def test_to_xml_template(self):
        node1 = PatternRegexNode({"template": "LEGION"}, "")
        self.assertEqual('<regex template="LEGION"></regex>\n', node1.to_xml(self._client_context, include_user=False))
        self.assertEqual('<regex userid="*" template="LEGION"></regex>\n', node1.to_xml(self._client_context, include_user=True))

        node2 = PatternRegexNode({"template": "LEGION"}, "", userid="testid")
        self.assertEqual('<regex template="LEGION"></regex>\n', node2.to_xml(self._client_context, include_user=False))
        self.assertEqual('<regex userid="testid" template="LEGION"></regex>\n', node2.to_xml(self._client_context, include_user=True))
Example #24
0
    def test_to_string_pattern(self):
        node1 = PatternRegexNode({}, "^LEGION$")
        self.assertEqual(node1.to_string(verbose=False), "REGEX pattern=[^LEGION$]")
        self.assertEqual(node1.to_string(verbose=True), "REGEX [*] [P(0)^(0)#(0)C(0)_(0)*(0)To(0)Th(0)Te(0)] pattern=[^LEGION$]")

        node2 = PatternRegexNode({}, "^LEGION$", userid="testid")
        self.assertEqual(node2.to_string(verbose=False), "REGEX pattern=[^LEGION$]")
        self.assertEqual(node2.to_string(verbose=True), "REGEX [testid] [P(0)^(0)#(0)C(0)_(0)*(0)To(0)Th(0)Te(0)] pattern=[^LEGION$]")
Example #25
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 #26
0
    def test_equivalent_mixed(self):
        node1 = PatternRegexNode({}, "^LEGION$")
        node2 = PatternRegexNode({}, "^LEGION$", userid="testid")
        node3 = PatternRegexNode({}, "^LEGION$", userid="testid2")

        self._client_context.brain.regex_templates["LEGION"] = re.compile("^LEGION$", re.IGNORECASE)

        node4 = PatternRegexNode({"template": "LEGION"}, "")
        node5 = PatternRegexNode({"template": "LEGION"}, "", userid="testid")
        node6 = PatternRegexNode({"template": "LEGION"}, "", userid="testid2")

        self.assertFalse(node1.equivalent(node4))
        self.assertFalse(node2.equivalent(node5))
        self.assertFalse(node3.equivalent(node6))
Example #27
0
    def test_equals_pattern(self):
        node1 = PatternRegexNode({}, "^LEGION$")
        node2 = PatternRegexNode({}, "^LEGION$", userid="testid")
        node3 = PatternRegexNode({}, "^LEGION$", userid="testid2")

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

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

        match3 = node3.equals(self._client_context, Sentence(self._client_context.brain.tokenizer, 'LEGION'), 0)
        self.assertIsNotNone(match3)
        self.assertFalse(match3.matched)
Example #28
0
    def test_equals_template(self):
        self._client_context.brain.regex_templates["LEGION"] = re.compile("^LEGION$", re.IGNORECASE)

        node1 = PatternRegexNode({"template": "LEGION"}, "")
        node2 = PatternRegexNode({"template": "LEGION"}, "", userid="testid")
        node3 = PatternRegexNode({"template": "LEGION"}, "", userid="testid2")

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

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

        match3 = node3.equals(self._client_context, Sentence(self._client_context.brain.tokenizer, 'LEGION'), 0)
        self.assertIsNotNone(match3)
        self.assertFalse(match3.matched)
Example #29
0
 def test_equivalent_at_pattern_template_missing_rhs(self):
     node1 = PatternRegexNode({"template": "[A-Z]"}, "^LEGION$")
     node2 = PatternRegexNode({}, "^LEGION$")
     self.assertFalse(node1.equivalent(node2))
Example #30
0
    def test_init_template(self):

        node = PatternRegexNode({"template": "LEGION"}, "")
        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.assertFalse(node.is_set())
        self.assertFalse(node.is_bot())
        self.assertTrue(node.is_regex())
        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(PatternRegexNode({"template": "LEGION"}, "")))
Example #31
0
 def test_init_with_template_attrib(self):
     node = PatternRegexNode({"template": "PhoneNumber"}, "")
     self.assertIsNotNone(node)
     self.assertIsNone(node._pattern_text)
     self.assertEqual("PhoneNumber", node._pattern_template)
Example #32
0
    def test_equivalent_mixed(self):
        node1 = PatternRegexNode({}, "^LEGION$")
        node2 = PatternRegexNode({}, "^LEGION$", userid="testid")
        node3 = PatternRegexNode({}, "^LEGION$", userid="testid2")

        self._client_context.brain.regex_templates.add_regex("LEGION", re.compile("^LEGION$", re.IGNORECASE))

        node4 = PatternRegexNode({"template": "LEGION"}, "")
        node5 = PatternRegexNode({"template": "LEGION"}, "", userid="testid")
        node6 = PatternRegexNode({"template": "LEGION"}, "", userid="testid2")

        self.assertFalse(node1.equivalent(node4))
        self.assertFalse(node2.equivalent(node5))
        self.assertFalse(node3.equivalent(node6))
Example #33
0
 def test_init_with_pattern_attrib(self):
     node = PatternRegexNode({"pattern": "^LEGION$"}, "")
     self.assertIsNotNone(node)
     self.assertIsNone(node._pattern_template)
     self.assertEqual("^LEGION$", node._pattern_text)
Example #34
0
    def test_init_template(self):

        node = PatternRegexNode({"template": "LEGION"}, "")
        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.assertFalse(node.is_set())
        self.assertFalse(node.is_bot())
        self.assertTrue(node.is_regex())
        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(PatternRegexNode({"template": "LEGION"}, "")))
Example #35
0
    def test_init_template(self):

        node = PatternRegexNode({"template": "LEGION"}, "")
        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.assertFalse(node.is_set())
        self.assertFalse(node.is_bot())
        self.assertTrue(node.is_regex())
        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(PatternRegexNode({"template": "LEGION"}, "")))

        self.assertEqual(
            node.to_string(),
            "REGEX [P(0)^(0)#(0)C(0)_(0)*(0)To(0)Th(0)Te(0)] template=[LEGION]"
        )
        self.assertEqual('<regex template="LEGION"></regex>\n',
                         node.to_xml(self._bot, self._clientid))
 def test_init_with_form_attrib(self):
     node = PatternRegexNode({"form": "今[はわ]何時"}, "")
     self.assertIsNotNone(node)
     self.assertIsNotNone(node._pattern_text)
     self.assertTrue(node._is_form)
     self.assertEqual("今[はわ]何時", node.pattern_text)
 def test_init_with_nothing(self):
     with self.assertRaises(ParserException) as raised:
         PatternRegexNode({}, "")
     self.assertEqual(str(raised.exception),
                      "No Parameter specified as attribute or text")
 def test_init_with_invalid_attribs(self):
     with self.assertRaises(ParserException) as raised:
         PatternRegexNode({"unknwon": "test1"}, "")
     self.assertEqual(str(raised.exception),
                      "No Parameter specified as attribute or text")
Example #39
0
    def test_node_exists(self):

        node = PatternNode()
        self.assertIsNotNone(node)

        self.assert_child_node_exists(node, PatternWordNode("word"),
                                      PatternWordNode("word"))
        self.assert_child_node_exists(node,
                                      PatternPriorityWordNode("priority"),
                                      PatternPriorityWordNode("priority"))

        self.assert_child_node_exists(node, PatternOneOrMoreWildCardNode('_'),
                                      PatternOneOrMoreWildCardNode('_'))
        self.assert_child_node_exists(node, PatternOneOrMoreWildCardNode('*'),
                                      PatternOneOrMoreWildCardNode('*'))

        self.assert_child_node_exists(node, PatternZeroOrMoreWildCardNode('#'),
                                      PatternZeroOrMoreWildCardNode('#'))
        self.assert_child_node_exists(node, PatternZeroOrMoreWildCardNode('^'),
                                      PatternZeroOrMoreWildCardNode('^'))

        self.assert_child_node_exists(node, PatternSetNode({}, "setname"),
                                      PatternSetNode([], "setname"))
        self.assert_child_node_exists(node, PatternBotNode({}, "botname"),
                                      PatternBotNode([], "botname"))
        self.assert_child_node_exists(node, PatternISetNode({}, "word1 word2"),
                                      PatternISetNode([], "word1 word2"))

        self.assert_child_node_exists(
            node, PatternRegexNode({"pattern": "^LEGION$"}, None),
            PatternRegexNode({"pattern": "^LEGION$"}, None))
        self.assert_child_node_exists(
            node, PatternRegexNode({"template": "LEGION"}, None),
            PatternRegexNode({"template": "LEGION"}, None))

        topic1 = PatternTopicNode()
        topic2 = PatternTopicNode()
        self.assertIsNone(node._node_exists(topic1))
        node.add_topic(topic1)
        new_node = node._node_exists(topic1)
        self.assertIsNotNone(new_node)
        self.assertEquals(new_node, topic1)
        new_node = node.add_topic(topic2)
        self.assertIsNotNone(new_node)
        self.assertEquals(new_node, topic1)

        that1 = PatternThatNode()
        that2 = PatternThatNode()
        self.assertIsNone(node._node_exists(that1))
        node.add_that(that1)
        new_node = node._node_exists(that1)
        self.assertIsNotNone(new_node)
        self.assertEquals(new_node, that1)
        new_node = node.add_that(that2)
        self.assertIsNotNone(new_node)
        self.assertEquals(new_node, that1)

        template1 = PatternTemplateNode(None)
        template2 = PatternTemplateNode(None)
        self.assertIsNone(node._node_exists(template1))
        node.add_template(template1)
        new_node = node._node_exists(template1)
        self.assertIsNotNone(new_node)
        self.assertEquals(new_node, template1)
        new_node = node.add_template(template2)
        self.assertIsNotNone(new_node)
        self.assertEquals(new_node, template1)

        node.dump("")

        self.assertEqual(
            node.to_xml(None, None), """<priority word="priority"></priority>
<zerormore wildcard="^">
</zerormore>
<zerormore wildcard="#">
</zerormore>
<oneormore wildcard="_">
</oneormore>
<oneormore wildcard="*">
</oneormore>
<topic></topic>
<that></that>
<template></template>
<word word="word"></word>
<set name="SETNAME">
</set><bot property="botname">
</bot><iset words="WORD1 WORD2"></iset>
<regex pattern="^LEGION$"></regex>
<regex template="LEGION"></regex>
""")
 def test_init_with_text(self):
     node = PatternRegexNode({}, "^LEGION$")
     self.assertIsNotNone(node)
     self.assertIsNone(node._pattern_template)
     self.assertFalse(node._is_form)
     self.assertEqual("^LEGION$", node.pattern_text)