def test_add_topic_to_node_pattern_with_set(self): graph = PatternGraph(self._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")
def test_add_topic_to_node_pattern_with_set(self): graph = PatternGraph() 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].word, "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")
def test_add_topic_to_node_multi_children(self): graph = PatternGraph(self._client_context.brain.aiml_parser) pattern = ET.fromstring(""" <pattern> HELLO </pattern>""") pattern_node = graph.add_pattern_to_node(pattern) topic = ET.fromstring(""" <topic> THIS <set name="ubertopic" /> OTHER </topic>""") topic_node = graph.add_topic_to_node(topic, pattern_node) self.assertIsNotNone(topic_node) self.assertIsInstance(topic_node, PatternWordNode)
def test_add_topic_to_node_word_with_multiple_words(self): graph = PatternGraph(self._client_context.brain.aiml_parser) pattern = ET.fromstring(""" <pattern> HELLO </pattern>""") pattern_node = graph.add_pattern_to_node(pattern) topic = ET.fromstring(""" <topic> THERE * </topic>""") last_node = graph.add_topic_to_node(topic, pattern_node) self.assertIsNotNone(last_node) self.assertIsInstance(last_node, PatternOneOrMoreWildCardNode)
def test_add_topic_to_node_wildcard(self): graph = PatternGraph(self._client_context.brain.aiml_parser) pattern = ET.fromstring(""" <pattern> HELLO </pattern>""") pattern_node = graph.add_pattern_to_node(pattern) topic = ET.fromstring(""" <topic> * </topic>""") topic_node = graph.add_topic_to_node(topic, pattern_node) self.assertIsNotNone(topic_node) self.assertIsInstance(topic_node, PatternOneOrMoreWildCardNode) self.assertEqual(topic_node.wildcard, "*")
def test_add_topic_to_node_star(self): graph = PatternGraph(self._aiml_parser) base_node = PatternWordNode("TOPIC_TEST") topic_element = ET.fromstring('<topic>*</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.assertFalse(base_node.topic.has_children()) self.assertTrue(base_node.topic.has_wildcard()) self.assertIsNotNone(base_node.topic.star) self.assertEqual(base_node.topic.star.wildcard, "*")
def test_add_topic_to_node_star(self): graph = PatternGraph() base_node = PatternWordNode("TOPIC_TEST") topic_element = ET.fromstring('<topic>*</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.assertFalse(base_node.topic.has_children()) self.assertTrue(base_node.topic.has_wildcard()) self.assertIsNotNone(base_node.topic.star) self.assertEqual(base_node.topic.star.wildcard, "*")
def test_add_topic_to_node_pattern(self): graph = PatternGraph() base_node = PatternWordNode("TOPIC_TEST") topic_element = ET.fromstring('<topic>HELLO 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], PatternWordNode) self.assertEqual(base_node.topic.children[0].children[0].word, "WORLD")
def test_add_topic_to_node_pattern(self): graph = PatternGraph(self._client_context.brain.aiml_parser) base_node = PatternWordNode("TOPIC_TEST") topic_element = ET.fromstring('<topic>HELLO 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], PatternWordNode) self.assertEqual(base_node.topic.children[0].children[0].word, "WORLD")
def test_add_topic_to_node_pattern_with_set(self): graph = PatternGraph(self._client_context.brain.aiml_parser) base_node = PatternWordNode("TOPIC_TEST") set_dict = {"VAL1": [["VAL1"]]} values = {"VAL1": "val1"} self._client_context.brain.sets.add_set("TEST", set_dict, "test_sets", False, values) 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")