1import unittest 2from test.support import warnings_helper 3 4xdrlib = warnings_helper.import_deprecated("xdrlib") 5 6 7class XDRTest(unittest.TestCase): 8 9 def test_xdr(self): 10 p = xdrlib.Packer() 11 12 s = b'hello world' 13 a = [b'what', b'is', b'hapnin', b'doctor'] 14 15 p.pack_int(42) 16 p.pack_int(-17) 17 p.pack_uint(9) 18 p.pack_bool(True) 19 p.pack_bool(False) 20 p.pack_uhyper(45) 21 p.pack_float(1.9) 22 p.pack_double(1.9) 23 p.pack_string(s) 24 p.pack_list(range(5), p.pack_uint) 25 p.pack_array(a, p.pack_string) 26 27 # now verify 28 data = p.get_buffer() 29 up = xdrlib.Unpacker(data) 30 31 self.assertEqual(up.get_position(), 0) 32 33 self.assertEqual(up.unpack_int(), 42) 34 self.assertEqual(up.unpack_int(), -17) 35 self.assertEqual(up.unpack_uint(), 9) 36 self.assertTrue(up.unpack_bool() is True) 37 38 # remember position 39 pos = up.get_position() 40 self.assertTrue(up.unpack_bool() is False) 41 42 # rewind and unpack again 43 up.set_position(pos) 44 self.assertTrue(up.unpack_bool() is False) 45 46 self.assertEqual(up.unpack_uhyper(), 45) 47 self.assertAlmostEqual(up.unpack_float(), 1.9) 48 self.assertAlmostEqual(up.unpack_double(), 1.9) 49 self.assertEqual(up.unpack_string(), s) 50 self.assertEqual(up.unpack_list(up.unpack_uint), list(range(5))) 51 self.assertEqual(up.unpack_array(up.unpack_string), a) 52 up.done() 53 self.assertRaises(EOFError, up.unpack_uint) 54 55class ConversionErrorTest(unittest.TestCase): 56 57 def setUp(self): 58 self.packer = xdrlib.Packer() 59 60 def assertRaisesConversion(self, *args): 61 self.assertRaises(xdrlib.ConversionError, *args) 62 63 def test_pack_int(self): 64 self.assertRaisesConversion(self.packer.pack_int, 'string') 65 66 def test_pack_uint(self): 67 self.assertRaisesConversion(self.packer.pack_uint, 'string') 68 69 def test_float(self): 70 self.assertRaisesConversion(self.packer.pack_float, 'string') 71 72 def test_double(self): 73 self.assertRaisesConversion(self.packer.pack_double, 'string') 74 75 def test_uhyper(self): 76 self.assertRaisesConversion(self.packer.pack_uhyper, 'string') 77 78if __name__ == "__main__": 79 unittest.main() 80