예제 #1
0
    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 )
예제 #2
0
    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 )