def get_condition_variable_value(self, client_context, var_type, name): if var_type == TemplateConditionVariable.GLOBAL: return TemplateGetNode.get_property_value(client_context, False, name) elif var_type == TemplateConditionVariable.LOCAL: return TemplateGetNode.get_property_value(client_context, True, name) elif var_type == TemplateConditionVariable.BOT: return TemplateBotNode.get_bot_variable(client_context, name) else: return"unknown"
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_no_name(self): root = TemplateNode() self.assertIsNotNone(root) self.assertIsNotNone(root.children) self.assertEqual(len(root.children), 0) node = TemplateGetNode() node.append(TemplateWordNode("Fred")) self.assertIsNotNone(node) self.assertEqual("[GET [Global] - None]", 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("", 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.nlp.tokenizer, "Hello") conversation.record_question(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.nlp.tokenizer, "Hello") conversation.record_question(question) result = root.resolve(self._client_context) self.assertIsNotNone(result) self.assertEqual("unknown", result)
def test_tuples(self): root = TemplateNode() self.assertIsNotNone(root) self.assertIsNotNone(root.children) self.assertEqual(len(root.children), 0) select = TemplateSelectNode() self.assertIsNotNone(select) node = TemplateGetNode() node.name = TemplateWordNode("?x ?y") node.tuples = select root.append(node) self.assertEqual(len(root.children), 1) self.assertEqual("[GET [Tuples] - ([WORD]?x ?y)]", node.to_string()) 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="?x ?y"><select /></get></template>', xml_str)
def execute(self, client_context, data): YLogger.debug(client_context, "Properties Admin - [%s]", data) properties = "" splits = data.split() if splits[0] == 'GET': if splits[1] == 'BOT': properties = TemplateBotNode.get_bot_variable( client_context, splits[2]) elif splits[1] == "USER": local = bool(splits[2].upper == 'LOCAL') properties = TemplateGetNode.get_property_value( client_context, local, splits[3]) elif splits[0] == 'BOT': properties += "Properties:<br /><ul>" for pair in client_context.brain.properties.pairs: properties += "<li>%s = %s</li>" % (pair[0], pair[1]) properties += "</ul>" properties += "<br />" elif splits[0] == "USER": if client_context.bot.has_conversation(client_context): conversation = client_context.bot.conversation(client_context) properties += "Properties:<br /><ul>" for name, value in conversation.properties.items(): properties += "<li>%s = %s</li>" % (name, value) properties += "</ul>" properties += "<br />" else: properties += "No conversation currently available" return properties
aiml_file = sys.argv[4] test_file = sys.argv[6] # ljust = int(sys.argv[3]) ljust = 20 replace_file = sys.argv[8] print("aiml_file: {}".format(aiml_file)) print("test_file: {}".format(test_file)) print("ljust: {}".format(ljust)) print("replace_file: {}".format(replace_file)) client = TestCreatorBotClient() client_context = client.create_bot(1, load_variables=False) bot_node = TemplateBotNode() get_node = TemplateGetNode() default = None # if len(sys.argv) > 5: # default = sys.argv[5] print("loading in file: " + aiml_file + "...") # print("test_file:", test_file) # print("replace_file:", replace_file) # print("Default:", default) texts, sets, bots = load_replacements(replace_file) with open(test_file, "w+") as output_file: # if default is not None: # output_file.write('$DEFAULT, "%s"\n\n'%default)
def __init__(self): TemplateGetNode.__init__(self)