reader fully tested (again, says only 80ish percent, but testrunner includes method defs as untested code)

This commit is contained in:
locklainn.linden
2008-07-29 15:46:27 +00:00
committed by Salad Dais
parent 950558377a
commit e83be80e6d
3 changed files with 21 additions and 25 deletions

View File

@@ -8,7 +8,7 @@ import pprint
import message_template
from pyogp.lib.base.data import msg_tmpl
from pyogp.lib.base.message.message_types import MsgFrequency, MsgTrust, \
MsgEncoding, MsgDeprecation, MsgBlockType, MsgType
MsgEncoding, MsgDeprecation, MsgBlockType, MsgType, sizeof
class MessageTemplateParser(object):
def __init__(self, template_file):
@@ -154,58 +154,40 @@ class MessageTemplateParser(object):
var_size = -1
if type_string == 'U8':
var_type = MsgType.MVT_U8
var_size = 1
elif type_string == 'U16':
var_type = MsgType.MVT_U16
var_size = 2
elif type_string == 'U32':
var_type = MsgType.MVT_U32
var_size = 4
elif type_string == 'U64':
var_type = MsgType.MVT_U64
var_size = 8
elif type_string == 'S8':
var_type = MsgType.MVT_S8
var_size = 1
elif type_string == 'S16':
var_type = MsgType.MVT_S16
var_size = 2
elif type_string == 'S32':
var_type = MsgType.MVT_S32
var_size = 4
elif type_string == 'S64':
var_type = MsgType.MVT_S64
var_size = 8
elif type_string == 'F32':
var_type = MsgType.MVT_F32
var_size = 4
elif type_string == 'F64':
var_type = MsgType.MVT_F64
var_size = 8
elif type_string == 'LLVector3':
var_type = MsgType.MVT_LLVector3
var_size = 12
elif type_string == 'LLVector3d':
var_type = MsgType.MVT_LLVector3d
var_size = 24
elif type_string == 'LLVector4':
var_type = MsgType.MVT_LLVector4
var_size = 16
elif type_string == 'LLQuaternion':
var_type = MsgType.MVT_LLQuaternion
var_size = 12
elif type_string == 'LLUUID':
var_type = MsgType.MVT_LLUUID
var_size = 16
elif type_string == 'BOOL':
var_type = MsgType.MVT_BOOL
var_size = 1
elif type_string == 'IPADDR':
var_type = MsgType.MVT_IP_ADDR
var_size = 4
elif type_string == 'IPPORT':
var_type = MsgType.MVT_IP_PORT
var_size = 2
elif type_string == 'Fixed' or type_string == 'Variable':
if type_string == 'Fixed':
var_type = MsgType.MVT_FIXED
@@ -215,7 +197,10 @@ class MessageTemplateParser(object):
var_size = int(parts[2])
if var_size <= 0:
raise Exception('Bad variable size')
if var_size == -1:
var_size = sizeof(var_type)
current_var = message_template.MessageTemplateVariable(parts[0], var_type, var_size)
current_block.add_variable(current_var)

View File

@@ -85,7 +85,7 @@ class MessageTemplateReader(object):
offset = self.unpacker.unpack_data(data[MsgHeader.PHL_OFFSET:MsgHeader.PHL_OFFSET+1], MsgType.MVT_U8)
freq_bytes = self.current_template.frequency
#fixed case
#HACK: fixed case
if freq_bytes == -1:
freq_bytes = 4
@@ -135,8 +135,6 @@ class MessageTemplateReader(object):
var_size = struct.unpack('>B', data[decode_pos:decode_pos+1])[0]
elif data_size == 2:
var_size = struct.unpack('>H', data[decode_pos:decode_pos+2])[0]
print 'Data size 2'
print 'Var size: ' + str(var_size)
elif data_size == 4:
var_size = struct.unpack('>I', data[decode_pos:decode_pos+4])[0]
else:

View File

@@ -249,7 +249,7 @@ class TestTemplateReader(unittest.TestCase):
self.builder.next_block('Info')
self.builder.add_data('AgentID', UUID("550e8400-e29b-41d4-a716-446655440000"), MsgType.MVT_LLUUID)
self.builder.add_data('LocationID', 0x00000001, MsgType.MVT_U32)
self.builder.add_data('SimIP', 'www.testing.com', MsgType.MVT_IP_ADDR)
self.builder.add_data('SimIP', '.com', MsgType.MVT_IP_ADDR)
self.builder.add_data('SimPort', 80, MsgType.MVT_IP_PORT)
self.builder.add_data('RegionHandle', 0x0000000000000001, MsgType.MVT_U64)
self.builder.add_data('SeedCapability', "Testing", MsgType.MVT_VARIABLE)
@@ -263,7 +263,20 @@ class TestTemplateReader(unittest.TestCase):
assert self.reader.get_data('Info', 'SeedCapability', MsgType.MVT_VARIABLE) == "Testing",\
"TeleportFinish variable not read correctly"
assert self.reader.get_data('Info', 'SimPort', MsgType.MVT_IP_PORT) == 80,\
"TeleportFinish variable not read correctly"
def test_read_medium(self):
self.builder.new_message('ConfirmEnableSimulator')
self.builder.next_block('AgentData')
self.builder.add_data('AgentID', UUID("550e8400-e29b-41d4-a716-446655440000"), MsgType.MVT_LLUUID)
self.builder.add_data('SessionID', UUID("550e8400-e29b-41d4-a716-446655440000"), MsgType.MVT_LLUUID)
message, size = self.builder.build_message()
message = PackFlags.LL_NONE + '\x00\x00\x00\x01' + '\x00' + message
size = len(message)
assert self.reader.validate_message(message, size), "Variable invalid"
assert self.reader.read_message(message), "Variable read fail"
def test_get_bad_data(self):
self.reader.clear_message()