137 lines
5.7 KiB
Python
137 lines
5.7 KiB
Python
#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
|
|
from pyogp.lib.base.message_template_builder import MessageTemplateBuilder
|
|
from pyogp.lib.base.message_template_dict import TemplateDictionary
|
|
from pyogp.lib.base.message_types import MsgType
|
|
|
|
|
|
class TestTemplateBuilder(unittest.TestCase):
|
|
|
|
def tearDown(self):
|
|
pass
|
|
|
|
def setUp(self):
|
|
self.template_file = msg_tmpl
|
|
parser = MessageTemplateParser(self.template_file)
|
|
self.template_list = parser.get_template_list()
|
|
self.template_dict = TemplateDictionary(self.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(self.template_dict)
|
|
try:
|
|
builder.new_message('CreateFakeLindenMessage')
|
|
assert False, "Creating a message that doesn't exist"
|
|
except:
|
|
assert True
|
|
|
|
assert builder.get_current_message() == None, "Created a message despite its non-existence"
|
|
|
|
def test_create_message(self):
|
|
builder = MessageTemplateBuilder(self.template_dict)
|
|
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_dict)
|
|
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_dict)
|
|
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_dict)
|
|
|
|
builder.new_message('AvatarTextureUpdate')
|
|
try:
|
|
builder.next_block('AgentSocialIdeas')
|
|
assert False, "Using block AgentSocialIdeas that doesn't exist"
|
|
except:
|
|
assert True
|
|
assert builder.get_current_block() == None, "Set block without one existing"
|
|
|
|
def test_next_block_variables(self):
|
|
builder = MessageTemplateBuilder(self.template_dict)
|
|
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() == MsgType.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() == MsgType.MVT_BOOL, "Type incorrect"
|
|
except KeyError:
|
|
assert False, "Block doesn't have TexturesChanged variable"
|
|
|
|
def test_add_bool(self):
|
|
builder = MessageTemplateBuilder(self.template_dict)
|
|
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_dict)
|
|
builder.new_message('AvatarTextureUpdate')
|
|
builder.next_block('AgentData')
|
|
builder.add_lluuid('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() == ?
|
|
|
|
|
|
|
|
def test_suite():
|
|
from unittest import TestSuite, makeSuite
|
|
suite = TestSuite()
|
|
suite.addTest(makeSuite(TestTemplateBuilder))
|
|
return suite
|