def testEncodeDeepTree ( self ): rawByteStr = ''.join ( chr ( idx % 256 ) for idx in range ( 512 ) ) rawShortSeq = self.__createIntSeq ( 15, 16 ) rawIntSeq = [ 0l ] * 15 rawLongSeq = [ 0l ] * 15 rawFloatSeq = [ 0.0 ] * 15 rawDoubleSeq = [ float ( i ) / 10.0 for i in self.__createIntSeq ( 15, 64 ) ] # Construct the message message1 = Message ( ) message1.addField ( None, 'Indicator' ) message1.addField ( True, 'Boolean' ) message1.addField ( -128, 'Byte' ) message1.addField ( -32768, 'Short' ) message1.addField ( 2147483647, 'Int' ) message1.addField ( 9223372036854775807, 'Long' ) message1.addFieldF32 ( 1.23456, 'Float' ) message1.addField ( 1.2345678, 'Double' ) submessage = Message ( ) submessage.addField4ByteArray ( rawByteStr [ : 4 ], ordinal = 4 ) submessage.addField8ByteArray ( rawByteStr [ : 8 ], ordinal = 8 ) submessage.addField16ByteArray ( rawByteStr [ : 16 ], ordinal = 16 ) submessage.addField20ByteArray ( rawByteStr [ : 20 ], ordinal = 20 ) submessage.addField32ByteArray ( rawByteStr [ : 32 ], ordinal = 32 ) submessage.addField64ByteArray ( rawByteStr [ : 64 ], ordinal = 64 ) submessage.addField128ByteArray ( rawByteStr [ : 128 ], ordinal = 128 ) submessage.addField256ByteArray ( rawByteStr [ : 256 ], ordinal = 256 ) submessage.addField512ByteArray ( rawByteStr [ : 512 ], ordinal = 512 ) message1.addField ( submessage, 'ByteArrays' ) message1.addField ( '', u'Empty String' ) message1.addField ( 'This is a string.', u'String' ) submessage = Message ( ) subsubmessage = Message ( ) submessage.addFieldByteArray ( [ ], 'Byte[0]' ) submessage.addFieldByteArray ( rawByteStr [ : 15 ], 'Byte[15]' ) submessage.addField ( subsubmessage, 'FP Arrays' ) submessage.addFieldI16Array ( [] , 'Short[0]' ) submessage.addFieldI16Array ( rawShortSeq, 'Short[15]' ) submessage.addFieldI32Array ( [] , 'Int[0]' ) submessage.addFieldI32Array ( rawIntSeq, 'Int[15]' ) submessage.addFieldI64Array ( [] , 'Long[0]' ) submessage.addFieldI64Array ( rawLongSeq, 'Long[15]' ) message1.addField ( submessage, 'Arrays' ) subsubmessage.addFieldF32Array ( [ ], 'Float[0]' ) subsubmessage.addFieldF32Array ( rawFloatSeq, 'Float[15]' ) subsubmessage.addFieldF64Array ( [ ], 'Double[0]' ) subsubmessage.addFieldF64Array ( rawDoubleSeq, 'Double[15]' ) message1.addField ( Message ( ), 'Null Message' ) # Encode it and compare against the test file encoded = Envelope ( message1 ).encode ( ) reference = self.__loadFile ( 'DEEPERTREE' ) self.assertEqual ( encoded, reference )
def testEncodeFixedWidths ( self ): rawByteSeq = self.__createIntSeq ( 512, 8 ) # Construct the message message1 = Message ( ) message1.addField4ByteArray ( rawByteSeq [ : 4 ], 'byte[4]' ) message1.addField8ByteArray ( rawByteSeq [ : 8 ], 'byte[8]' ) message1.addField16ByteArray ( rawByteSeq [ : 16 ], 'byte[16]' ) message1.addField20ByteArray ( rawByteSeq [ : 20 ], 'byte[20]' ) message1.addField32ByteArray ( rawByteSeq [ : 32 ], 'byte[32]' ) message1.addField64ByteArray ( rawByteSeq [ : 64 ], 'byte[64]' ) message1.addField128ByteArray ( rawByteSeq [ : 128 ], 'byte[128]' ) message1.addField256ByteArray ( rawByteSeq [ : 256 ], 'byte[256]' ) message1.addField512ByteArray ( rawByteSeq [ : 512 ], 'byte[512]' ) message1.addFieldByteArray ( rawByteSeq [ : 28 ], 'byte[28]' ) # Encode it and compare against the test file encoded = Envelope ( message1 ).encode ( ) reference = self.__loadFile ( 'FIXEDWIDTH' ) self.assertEqual ( encoded, reference )