Initial commit of OpenSPARC T2 architecture model.
[OpenSPARC-T2-SAM] / sam-t2 / devtools / v9 / lib / python2.4 / test / test_marshal.py
CommitLineData
920dae64
AT
1#!/usr/bin/env python
2# -*- coding: iso-8859-1 -*-
3
4from test import test_support
5import marshal
6import sys
7import unittest
8import os
9
10class IntTestCase(unittest.TestCase):
11 def test_ints(self):
12 # Test the full range of Python ints.
13 n = sys.maxint
14 while n:
15 for expected in (-n, n):
16 s = marshal.dumps(expected)
17 got = marshal.loads(s)
18 self.assertEqual(expected, got)
19 marshal.dump(expected, file(test_support.TESTFN, "wb"))
20 got = marshal.load(file(test_support.TESTFN, "rb"))
21 self.assertEqual(expected, got)
22 n = n >> 1
23 os.unlink(test_support.TESTFN)
24
25 def test_int64(self):
26 # Simulate int marshaling on a 64-bit box. This is most interesting if
27 # we're running the test on a 32-bit box, of course.
28
29 def to_little_endian_string(value, nbytes):
30 bytes = []
31 for i in range(nbytes):
32 bytes.append(chr(value & 0xff))
33 value >>= 8
34 return ''.join(bytes)
35
36 maxint64 = (1L << 63) - 1
37 minint64 = -maxint64-1
38
39 for base in maxint64, minint64, -maxint64, -(minint64 >> 1):
40 while base:
41 s = 'I' + to_little_endian_string(base, 8)
42 got = marshal.loads(s)
43 self.assertEqual(base, got)
44 if base == -1: # a fixed-point for shifting right 1
45 base = 0
46 else:
47 base >>= 1
48
49 def test_bool(self):
50 for b in (True, False):
51 new = marshal.loads(marshal.dumps(b))
52 self.assertEqual(b, new)
53 self.assertEqual(type(b), type(new))
54 marshal.dump(b, file(test_support.TESTFN, "wb"))
55 new = marshal.load(file(test_support.TESTFN, "rb"))
56 self.assertEqual(b, new)
57 self.assertEqual(type(b), type(new))
58
59class FloatTestCase(unittest.TestCase):
60 def test_floats(self):
61 # Test a few floats
62 small = 1e-25
63 n = sys.maxint * 3.7e250
64 while n > small:
65 for expected in (-n, n):
66 f = float(expected)
67 s = marshal.dumps(f)
68 got = marshal.loads(s)
69 self.assertEqual(f, got)
70 marshal.dump(f, file(test_support.TESTFN, "wb"))
71 got = marshal.load(file(test_support.TESTFN, "rb"))
72 self.assertEqual(f, got)
73 n /= 123.4567
74
75 f = 0.0
76 s = marshal.dumps(f)
77 got = marshal.loads(s)
78 self.assertEqual(f, got)
79
80 n = sys.maxint * 3.7e-250
81 while n < small:
82 for expected in (-n, n):
83 f = float(expected)
84 s = marshal.dumps(f)
85 got = marshal.loads(s)
86 self.assertEqual(f, got)
87 marshal.dump(f, file(test_support.TESTFN, "wb"))
88 got = marshal.load(file(test_support.TESTFN, "rb"))
89 self.assertEqual(f, got)
90 n *= 123.4567
91 os.unlink(test_support.TESTFN)
92
93class StringTestCase(unittest.TestCase):
94 def test_unicode(self):
95