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