def parse_get_expression(self, expression, branch): get_node = TemplateGetNode() branch.children.append(get_node) name_found = False var_found = False if 'name' in expression.attrib: node = TemplateNode() name_node = TemplateWordNode(expression.attrib['name']) node.append(name_node) get_node.local = False name_found = True get_node.name = node if 'var' in expression.attrib: node = TemplateNode() var_node = TemplateWordNode(expression.attrib['var']) node.append(var_node) get_node.local = True var_found = True get_node.name = node for child in expression: if child.tag == 'name': node = TemplateNode() self.parse_text(self.get_text_from_element(child), node) for sub_child in child: self.parse_tag_expression(sub_child, node) self.parse_text(self.get_text_from_element(child), node) get_node.name = node get_node.local = False name_found = True elif child.tag == 'var': node = TemplateNode() self.parse_text(self.get_text_from_element(child), node) for sub_child in child: self.parse_tag_expression(sub_child, node) self.parse_text(self.get_text_from_element(child), node) get_node.name = node get_node.local = True var_found = True else: raise ParserException("Error, invalid get", xml_element=expression) if name_found is True and var_found is True: raise ParserException("Error, get node has both name AND var values", xml_element=expression)
def test_global_get(self): root = TemplateNode() self.assertIsNotNone(root) self.assertIsNotNone(root.children) self.assertEqual(len(root.children), 0) node = TemplateGetNode() node.name = TemplateWordNode("name") node.local = False node.append(TemplateWordNode("Fred")) self.assertIsNotNone(node) root.append(node) self.assertEqual(len(root.children), 1) conversation = self.bot.get_conversation(self.clientid) self.assertIsNotNone(conversation) question = Question.create_from_text("Hello") conversation.record_dialog(question) self.assertIsNotNone(conversation.current_question()) conversation.set_property("name", "keith") result = root.resolve(self.bot, self.clientid) self.assertIsNotNone(result) self.assertEqual("keith", result)
def test_local_no_value(self): root = TemplateNode() self.assertIsNotNone(root) self.assertIsNotNone(root.children) self.assertEqual(len(root.children), 0) node = TemplateGetNode() node.name = TemplateWordNode("name") node.local = True node.append(TemplateWordNode("Fred")) self.assertIsNotNone(node) root.append(node) self.assertEqual(len(root.children), 1) self.bot.brain.properties.add_property("default-get", "unknown") conversation = self.bot.get_conversation(self.clientid) self.assertIsNotNone(conversation) question = Question.create_from_text("Hello") conversation.record_dialog(question) result = root.resolve(self.bot, self.clientid) self.assertIsNotNone(result) self.assertEqual("unknown", result)
def test_global_get(self): root = TemplateNode() self.assertIsNotNone(root) self.assertIsNotNone(root.children) self.assertEqual(len(root.children), 0) node = TemplateGetNode() node.name = TemplateWordNode("name") node.local = False node.append(TemplateWordNode("Fred")) self.assertIsNotNone(node) root.append(node) self.assertEqual(len(root.children), 1) conversation = self._client_context.bot.get_conversation(self._client_context) self.assertIsNotNone(conversation) question = Question.create_from_text(self._client_context.brain.tokenizer, "Hello") conversation.record_dialog(question) self.assertIsNotNone(conversation.current_question()) conversation.set_property("name", "keith") result = root.resolve(self._client_context) self.assertIsNotNone(result) self.assertEqual("keith", result)
def test_local_no_value(self): root = TemplateNode() self.assertIsNotNone(root) self.assertIsNotNone(root.children) self.assertEqual(len(root.children), 0) node = TemplateGetNode() node.name = TemplateWordNode("name") node.local = True node.append(TemplateWordNode("Fred")) self.assertIsNotNone(node) root.append(node) self.assertEqual(len(root.children), 1) self._client_context.brain.properties.add_property("default-get", "unknown") conversation = self._client_context.bot.get_conversation(self._client_context) self.assertIsNotNone(conversation) question = Question.create_from_text(self._client_context.brain.tokenizer, "Hello") conversation.record_dialog(question) result = root.resolve(self._client_context) self.assertIsNotNone(result) self.assertEqual("unknown", result)
def test_to_xml_local_get(self): root = TemplateNode() node = TemplateGetNode() node.name = TemplateWordNode("name") node.local = True root.append(node) xml = root.xml_tree(self.bot, self.clientid) self.assertIsNotNone(xml) xml_str = ET.tostring(xml, "utf-8").decode("utf-8") self.assertEqual('<template><get var="name" /></template>', xml_str)
def test_to_xml_global_get(self): root = TemplateNode() node = TemplateGetNode() node.name = TemplateWordNode("name") node.local = False root.append(node) xml = root.xml_tree(self._client_context) self.assertIsNotNone(xml) xml_str = ET.tostring(xml, "utf-8").decode("utf-8") self.assertEqual('<template><get name="name" /></template>', xml_str)
def test_to_xml_local_get(self): root = TemplateNode() node = TemplateGetNode() node.name = TemplateWordNode("name") node.local = True root.append(node) xml = root.xml_tree(self._client_context) self.assertIsNotNone(xml) xml_str = ET.tostring(xml, "utf-8").decode("utf-8") self.assertEqual('<template><get var="name" /></template>', xml_str)
def test_global_get_no_value(self): root = TemplateNode() self.assertIsNotNone(root) self.assertIsNotNone(root.children) self.assertEqual(len(root.children), 0) node = TemplateGetNode() node.name = TemplateWordNode("name") node.local = False node.append(TemplateWordNode("Fred")) self.assertIsNotNone(node) root.append(node) self.assertEqual(len(root.children), 1) self.bot.brain.properties.add_property("default-get", "unknown") result = root.resolve(self.bot, self.clientid) self.assertIsNotNone(result) self.assertEqual("unknown", result)
def test_global_get_no_value(self): root = TemplateNode() self.assertIsNotNone(root) self.assertIsNotNone(root.children) self.assertEqual(len(root.children), 0) node = TemplateGetNode() node.name = TemplateWordNode("name") node.local = False node.append(TemplateWordNode("Fred")) self.assertIsNotNone(node) self.assertEqual("[GET [Global] - [WORD]name]", node.to_string()) root.append(node) self.assertEqual(len(root.children), 1) self._client_context.brain.properties.add_property("default-get", "unknown") result = root.resolve(self._client_context) self.assertIsNotNone(result) self.assertEqual("unknown", result)
def test_global_get_no_value(self): root = TemplateNode() self.assertIsNotNone(root) self.assertIsNotNone(root.children) self.assertEqual(len(root.children), 0) node = TemplateGetNode() node.name = TemplateWordNode("name") node.local = False node.append(TemplateWordNode("Fred")) self.assertIsNotNone(node) self.assertEqual("[GET [Global] - [WORD]name]", node.to_string()) root.append(node) self.assertEqual(len(root.children), 1) self._client_context.brain.properties.add_property("default-get", "unknown") result = root.resolve(self._client_context) self.assertIsNotNone(result) self.assertEqual("unknown", result)