예제 #1
0
    def test_decode_submsg(self):
        file = open('tests/data/subMsg.dat', 'r')
        bytes = file.read()

        e = Envelope.decode(bytes)
        m = e.message
        self.assertEquals(2, len(m.fields))
        self.assertTrue(m.fields[0].is_type(types.FUDGEMSG_TYPE_ID))
        self.assertEquals(u'sub1', m.fields[0].name)
        self.assertTrue(m.fields[1].is_type(types.FUDGEMSG_TYPE_ID))
        self.assertEquals(u'sub2', m.fields[1].name)
        sub1 = m.fields[0].value
        sub2 = m.fields[1].value

        self.assertEquals(2, len(sub1.fields))
        self.assertTrue(sub1.fields[0].is_type(types.STRING_TYPE_ID))
        self.assertEquals(u'bibble', sub1.fields[0].name)
        self.assertEquals(None, sub1.fields[0].ordinal)
        self.assertEquals(u'fibble', sub1.fields[0].value)

        self.assertTrue(sub1.fields[1].is_type(types.STRING_TYPE_ID))
        self.assertEquals(None, sub1.fields[1].name)
        self.assertEquals(827, sub1.fields[1].ordinal)
        self.assertEquals(u'Blibble', sub1.fields[1].value)

        self.assertEquals(2, len(sub2.fields))
        self.assertTrue(sub2.fields[0].is_type(types.INT_TYPE_ID))
        self.assertEquals(u'bibble9', sub2.fields[0].name)
        self.assertEquals(None, sub2.fields[0].ordinal)
        self.assertEquals(9837438, sub2.fields[0].value)

        self.assertTrue(sub2.fields[1].is_type(types.FLOAT_TYPE_ID))
        self.assertEquals(None, sub2.fields[1].name)
        self.assertEquals(828, sub2.fields[1].ordinal)
        self.assertAlmostEquals(82.769997, sub2.fields[1].value, 6)
    def test_decode_encode_deeper(self):
        """decode then encode the deeper_fudge_msg.

        Check they are the same.
        """

        foo = open('tests/data/deeper_fudge_msg.dat', 'r')
        expected = foo.read()
        foo.close()
        e = Envelope.decode(expected)

        writer = cStringIO.StringIO()
        e.encode(writer)
        bytes = writer.getvalue()

        self.assertEquals(len(expected), len(bytes))
        self.assertEquals(expected, bytes)
    def test_simpletest(self):
        """Equivalent to the examples/simpletest"""
        MSG_TYPE = registry.DEFAULT_REGISTRY[types.FUDGEMSG_TYPE_ID]
        message = Message()

        message.add(MY_NAME, name=u"name")
        message.add(19801231L, ordinal=4, name=u"dob" )

        submsg = Message()
        for line, ordinal in zip(ADDRESS, range(len(ADDRESS))):
            submsg.add(line, ordinal=ordinal)
        message.add(submsg, name=u"address")
        e = Envelope(message)

        writer = cStringIO.StringIO()
        e.encode(writer)
        bytes = writer.getvalue()

        self.assertEquals(110, len(bytes))

        returned = Envelope.decode(bytes)

        self.assertEquals(0, returned.schema_version)
        self.assertEquals(0, returned.directives)

        returned_message = returned.message
        self.assertEquals(3, len(returned_message.fields))

        f0 = returned_message.fields[0]
        self.assertEquals(u'name', f0.name)
        self.assertEquals(None, f0.ordinal)
        self.assertEquals(MY_NAME, f0.value)

        f1 = returned_message.fields[1]
        self.assertEquals(u'dob', f1.name)
        self.assertEquals(4, f1.ordinal)
        self.assertEquals(19801231L, f1.value)

        submsg = returned_message.fields[2]
        self.assertEquals(u'address', submsg.name)
        self.assertEquals(None, submsg.ordinal)
        self.assertEquals(4, len(submsg.value.fields))