1from PyObjCTools.TestSupport import *
2import sys
3from CoreFoundation import *
4
5
6class TestByteOrder (TestCase):
7
8    def testConstants(self):
9        self.assertEqual(CFByteOrderUnknown , 0)
10        self.assertEqual(CFByteOrderLittleEndian , 1)
11        self.assertEqual(CFByteOrderBigEndian , 2)
12    def testCurrent(self):
13        if sys.byteorder == 'little':
14            self.assertTrue(CFByteOrderGetCurrent(), CFByteOrderLittleEndian)
15        else:
16            self.assertTrue(CFByteOrderGetCurrent(), CFByteOrderBigEndian)
17
18    def testSwap(self):
19        v = CFSwapInt16(0x1)
20        self.assertEqual(v , 1 << 8)
21        v = CFSwapInt32(0x1)
22        self.assertEqual(v , 1 << 24)
23        v = CFSwapInt64(0x1)
24        self.assertEqual(v , 1 << 56)
25        if sys.byteorder == 'big':
26            v = CFSwapInt16BigToHost(0x1)
27            self.assertEqual(v, 1)
28            v = CFSwapInt32BigToHost(0x1)
29            self.assertEqual(v, 1)
30            v = CFSwapInt64BigToHost(0x1)
31            self.assertEqual(v, 1)
32            v = CFSwapInt16HostToBig(0x1)
33            self.assertEqual(v, 1)
34            v = CFSwapInt32HostToBig(0x1)
35            self.assertEqual(v, 1)
36            v = CFSwapInt64HostToBig(0x1)
37            self.assertEqual(v, 1)
38        else:
39            v = CFSwapInt16BigToHost(0x1)
40            self.assertEqual(v, 1 << 8)
41            v = CFSwapInt32BigToHost(0x1)
42            self.assertEqual(v, 1 << 24)
43            v = CFSwapInt64BigToHost(0x1)
44            self.assertEqual(v, 1 << 56)
45            v = CFSwapInt16HostToBig(0x1)
46            self.assertEqual(v, 1 << 8)
47            v = CFSwapInt32HostToBig(0x1)
48            self.assertEqual(v, 1 << 24)
49            v = CFSwapInt64HostToBig(0x1)
50            self.assertEqual(v, 1 << 56)
51
52        if sys.byteorder == 'little':
53            v = CFSwapInt16LittleToHost(0x1)
54            self.assertEqual(v, 1)
55            v = CFSwapInt32LittleToHost(0x1)
56            self.assertEqual(v, 1)
57            v = CFSwapInt64LittleToHost(0x1)
58            self.assertEqual(v, 1)
59            v = CFSwapInt16HostToLittle(0x1)
60            self.assertEqual(v, 1)
61            v = CFSwapInt32HostToLittle(0x1)
62            self.assertEqual(v, 1)
63            v = CFSwapInt64HostToLittle(0x1)
64            self.assertEqual(v, 1)
65        else:
66            v = CFSwapInt16LittleToHost(0x1)
67            self.assertEqual(v, 1 << 8)
68            v = CFSwapInt32LittleToHost(0x1)
69            self.assertEqual(v, 1 << 24)
70            v = CFSwapInt64LittleToHost(0x1)
71            self.assertEqual(v, 1 << 56)
72            v = CFSwapInt16HostToLittle(0x1)
73            self.assertEqual(v, 1 << 8)
74            v = CFSwapInt32HostToLittle(0x1)
75            self.assertEqual(v, 1 << 24)
76            v = CFSwapInt64HostToLittle(0x1)
77            self.assertEqual(v, 1 << 56)
78
79        swapped =  CFConvertFloat32HostToSwapped(2.5)
80        self.assertIsInstance(swapped, CFSwappedFloat32)
81        v = CFConvertFloat32SwappedToHost(swapped)
82        self.assertEqual(v , 2.5)
83        swapped = CFConvertFloat64HostToSwapped(2.5)
84        self.assertIsInstance(swapped, CFSwappedFloat64)
85        v = CFConvertFloat64SwappedToHost(swapped)
86        self.assertEqual(v , 2.5)
87        swapped = CFConvertFloatHostToSwapped(2.5)
88        self.assertIsInstance(swapped, CFSwappedFloat32)
89        v = CFConvertFloatSwappedToHost(swapped)
90        self.assertEqual(v , 2.5)
91        swapped = CFConvertDoubleHostToSwapped(2.5)
92        self.assertIsInstance(swapped, CFSwappedFloat64)
93        v = CFConvertDoubleSwappedToHost(swapped)
94        self.assertEqual(v , 2.5)
95if __name__ == "__main__":
96    main()
97