コード例 #1
0
 def test_pack_signed(self):
     self.assertEqual(_S.pack('i\x00\x00\x08', ((-1,), (2,), (-3,))), '\xff\x02\xfd')
     fmt = 'i\x00\x00\x02' * 4
     self.assertEqual(_S.pack(fmt, ((1, -1) * 2,)), '\x77')
     v = _S.pack(fmt, ((1, -1) * 4,), offset=4)
     self.assertEqual(ord(v[0]) & 15, 7)
     self.assertEqual(ord(v[1]) & (15 << 4), 7 << 4)
     self.assertRaises(ValueError, _S.pack, 'i\x00\x00\x08', (('a',), (2,)))
コード例 #2
0
 def test_pack_float(self):
     fmt1 = 'f\x00\x00\x20'
     fmt2 = 'f\x00\x00\x40'
     self.assertEqual(_S.pack(fmt1, ((1.,), (2.,))), struct.pack('>ff', 1., 2.))
     self.assertEqual(_S.pack(fmt2, ((1.,), (2.,))), struct.pack('>dd', 1., 2.))
     self.assertEqual(_S.pack(fmt1, ((1,), (2,))), struct.pack('>ff', 1., 2.))
     self.assertEqual(_S.pack(fmt2, ((1,), (2,))), struct.pack('>dd', 1., 2.))
     self.assertRaises(ValueError, _S.pack, fmt2, (('a',), (2,)))
コード例 #3
0
 def test_pack_char(self):
     fmt = 'c\x00\x00\x08'
     self.assertRaises(ValueError, _S.pack, fmt, (('',), ('',)))
     self.assertEqual(_S.pack(fmt, (('a',), ('b',))), 'ab')
     self.assertEqual(_S.pack(fmt, 'abcd'), 'abcd')
     self.assertEqual(_S.pack(fmt, '\x7f\x80\x7f\x80\x00', offset=7)[1:5], '\xff\x00\xff\x00')
     self.assertEqual(_S.pack(fmt, '\x3f\xc0\x3f\xc0\x00', offset=6)[1:5], '\xff\x00\xff\x00')
     self.assertEqual(_S.pack(fmt, '\x1f\xe0\x1f\xe0\x00', offset=5)[1:5], '\xff\x00\xff\x00')
     self.assertEqual(_S.pack(fmt, '\x0f\xf0\x0f\xf0\x00', offset=4)[1:5], '\xff\x00\xff\x00')
     self.assertEqual(_S.pack(fmt, '\x07\xf8\x07\xf8\x00', offset=3)[1:5], '\xff\x00\xff\x00')
     self.assertEqual(_S.pack(fmt, '\x03\xfc\x03\xfc\x00', offset=2)[1:5], '\xff\x00\xff\x00')
     self.assertEqual(_S.pack(fmt, '\x01\xfe\x01\xfe\x00', offset=1)[1:5], '\xff\x00\xff\x00')
コード例 #4
0
 def test_pack_unsigned(self):
     self.assertEqual(_S.pack('u\x00\x00\x08', ((1,), (2,), (3,))), '\x01\x02\x03')
     fmt = 'u\x00\x00\x01' * 8
     self.assertEqual(_S.pack(fmt, ((1, 0) * 4,)), '\xaa')
     v = _S.pack(fmt, ((1, 0) * 4,), offset=4)
     self.assertEqual(ord(v[0]) & 15, ord('\x0a'))
     self.assertEqual(ord(v[1]) & (15 << 4), ord('\xa0'))
     fmt = 'u\x00\x00\x02u\x00\x00\x04u\x00\x00\x0fu\x00\x00\x03'
     self.assertEqual(_S.pack(fmt, ((1, 2, 3, 4),)), '\x48\x00\x1c')
     self.assertEqual(_S.pack(fmt, ((1., 2., 3., 4.),)), '\x48\x00\x1c')
     self.assertRaises(ValueError, _S.pack, 'u\x00\x00\x08', (('a',), (2,)))
     fmt = 'u\x00\x00\x28'
     self.assertEqual(_S.pack(fmt, ((2 ** 32 + 2 ** 8,),)), '\x01\x00\x00\x01\x00')
コード例 #5
0
 def test_pack_mixed(self):
     fmt = 'c\x00\x00\x08u\x00\x00\x18'
     self.assertEqual(_S.pack(fmt, (('c', 8), ('u', 24))), fmt)