#standard libraries import unittest, doctest #local libraries from pyogp.lib.base.data import msg_tmpl from pyogp.lib.base.message_template import MessageTemplate, MessageTemplateBlock, MessageTemplateVariable from pyogp.lib.base.message_template_parser import MessageTemplateParser import pyogp.lib.base.message_types class TestTemplateBuilder(unittest.TestCase): def tearDown(self): pass def setUp(self): self.template_file = msg_tmpl parser = MessageTemplateParser(None) self.template_list = parser.get_template_list() def test_builder(self): try: builder = MessageTemplateBuilder(None) assert False, "Template builder fail case list==None not caught" except: assert True def test_create_message_fail(self): builder = MessageTemplateBuilder(None) builder.new_message('CreateFakeLindenMessage') assert builder.get_current_message() == None, "Created a message despite its non-existence" def test_create_message(self): builder = MessageTemplateBuilder(self.template_list) assert builder.get_current_message() == None, "Message exists before it was created" builder.new_message('AddCircuitCode') assert builder.get_current_message() != None, "Create message failed" def test_create_message_blocks(self): builder = MessageTemplateBuilder(self.template_list) builder.new_message('AvatarTextureUpdate') blocks = builder.get_current_message().blocks assert len(blocks) == 3, "Blocks not added to the message" try: t_block = blocks['AgentData'] assert t_block != None,"Message doesn't have AgentData block" except KeyError: assert False, "Message doesn't have AgentData block" try: t_block = blocks['WearableData'] assert t_block != None, "Message doesn't have WearableData block" except KeyError: assert False, "Message doesn't have WearableData block" try: t_block = blocks['TextureData'] assert t_block != None, "Message doesn't have TextureData block" except KeyError: assert False, "Message doesn't have TextureData block" def test_next_block(self): builder = MessageTemplateBuilder(self.template_list) builder.new_message('AvatarTextureUpdate') assert builder.get_current_block() == None, "Message block exists before it was created" builder.next_block('AgentData') assert builder.get_current_block() != None, "Setting next block failed" assert builder.get_current_block().get_name() == 'AgentData', "Wrong block set" def test_next_block_fail(self): builder = MessageTemplateBuilder(self.template_list) builder.new_message('AvatarTextureUpdate') builder.next_block('AgentSocialIdeas') assert builder.get_current_block() == None, "Set block without one existing" def test_next_block_variables(self): builder = MessageTemplateBuilder(self.template_list) builder.new_message('AvatarTextureUpdate') builder.next_block('AgentData') variables = builder.get_current_block().variables assert len(variables) == 2, "Variables not added to the block" try: t_var = variables['AgentID'] assert t_var != None,"Block doesn't have AgentID variable" assert t_var.get_name() == 'AgentID', "AgentID name incorrect" assert t_var.get_type() == message_types.MVT_LLUUID, "AgentID type incorrect" except KeyError: assert False, "Block doesn't have AgentID variable" try: t_var = variables['TexturesChanged'] assert t_var != None,"Block doesn't have TexturesChanged variable" assert t_var.get_name() == 'TexturesChanged', "Name incorrect" assert t_var.get_type() == message_types.MVT_BOOL, "Type incorrect" except KeyError: assert False, "Block doesn't have TexturesChanged variable" def test_add_bool(self): builder = MessageTemplateBuilder(self.template_list) builder.new_message('AvatarTextureUpdate') builder.next_block('AgentData') builder.add_bool('TexturesChanged', True, message_types.MVT_BOOL) #need a way to determine the right variable data is sent compared to the type assert builder.get_current_block().variables['TexturesChanged'].get_data() == True,\ "Data not set correctly" def test_add_lluuid(self): builder = MessageTemplateBuilder(self.template_list) builder.new_message('AvatarTextureUpdate') builder.next_block('AgentData') builder.add_data('AgentID', "4baff.afef.1234.1241fvbaf", message_types.MVT_LLUUID) assert builder.get_current_block().variables['AgentID'].get_data() == "4baff.afef.1234.1241fvbaf",\ "Data not set correctly" assert builder.get_current_block().variables['AgentID'].get_size() == "4baff.afef.1234.1241fvbaf",\ def test_suite(): from unittest import TestSuite, makeSuite suite = TestSuite() suite.addTest(makeSuite(TestTemplateBuilder)) return suite