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