Skip to content

Commit 16bc86e

Browse files
author
James William Pye
committed
Add int8 tests.
1 parent 764aebd commit 16bc86e

1 file changed

Lines changed: 59 additions & 0 deletions

File tree

postgresql/test/test_optimized.py

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,41 @@ def test_int4(self):
139139
self.failUnlessRaises(OverflowError, optimized.swap_int4_pack, (-2**31)-1)
140140
self.failUnlessRaises(OverflowError, optimized.int4_pack, (-2**31)-1)
141141

142+
def test_int8(self):
143+
d = b'\x00\x00\x00\x00\x00\x00\x00\x01'
144+
rd = b'\x01\x00\x00\x00\x00\x00\x00\x00'
145+
s = optimized.swap_int8_unpack(d)
146+
n = optimized.int8_unpack(d)
147+
sd = optimized.swap_int8_pack(1)
148+
nd = optimized.int8_pack(1)
149+
if sys.byteorder == 'little':
150+
self.failUnlessEqual(0x1, s)
151+
self.failUnlessEqual(0x100000000000000, n)
152+
self.failUnlessEqual(d, sd)
153+
self.failUnlessEqual(rd, nd)
154+
else:
155+
self.failUnlessEqual(0x1, n)
156+
self.failUnlessEqual(0x100000000000000, s)
157+
self.failUnlessEqual(d, nd)
158+
self.failUnlessEqual(rd, sd)
159+
self.failUnlessEqual(optimized.swap_int8_pack(-1), b'\xFF\xFF\xFF\xFF'*2)
160+
self.failUnlessEqual(optimized.int8_pack(-1), b'\xFF\xFF\xFF\xFF'*2)
161+
self.failUnlessRaises(OverflowError, optimized.swap_int8_pack, 2**63)
162+
self.failUnlessRaises(OverflowError, optimized.int8_pack, 2**63)
163+
self.failUnlessRaises(OverflowError, optimized.swap_int8_pack, (-2**63)-1)
164+
self.failUnlessRaises(OverflowError, optimized.int8_pack, (-2**63)-1)
165+
# edge I/O
166+
int8_max = ((2**63) - 1)
167+
int8_min = (-(2**63))
168+
swap_max = optimized.swap_int8_pack(int8_max)
169+
max = optimized.int8_pack(int8_max)
170+
swap_min = optimized.swap_int8_pack(int8_min)
171+
min = optimized.int8_pack(int8_min)
172+
self.failUnlessEqual(optimized.swap_int8_unpack(swap_max), int8_max)
173+
self.failUnlessEqual(optimized.int8_unpack(max), int8_max)
174+
self.failUnlessEqual(optimized.swap_int8_unpack(swap_min), int8_min)
175+
self.failUnlessEqual(optimized.int8_unpack(min), int8_min)
176+
142177
def test_uint2(self):
143178
d = b'\x00\x01'
144179
rd = b'\x01\x00'
@@ -187,6 +222,30 @@ def test_uint4(self):
187222
self.failUnlessEqual(optimized.uint4_pack(2**32-1), b'\xFF\xFF\xFF\xFF')
188223
self.failUnlessEqual(optimized.swap_uint4_pack(2**32-1), b'\xFF\xFF\xFF\xFF')
189224

225+
def test_uint8(self):
226+
d = b'\x00\x00\x00\x00\x00\x00\x00\x01'
227+
rd = b'\x01\x00\x00\x00\x00\x00\x00\x00'
228+
s = optimized.swap_uint8_unpack(d)
229+
n = optimized.uint8_unpack(d)
230+
sd = optimized.swap_uint8_pack(1)
231+
nd = optimized.uint8_pack(1)
232+
if sys.byteorder == 'little':
233+
self.failUnlessEqual(0x1, s)
234+
self.failUnlessEqual(0x100000000000000, n)
235+
self.failUnlessEqual(d, sd)
236+
self.failUnlessEqual(rd, nd)
237+
else:
238+
self.failUnlessEqual(0x1, n)
239+
self.failUnlessEqual(0x100000000000000, s)
240+
self.failUnlessEqual(d, nd)
241+
self.failUnlessEqual(rd, sd)
242+
self.failUnlessRaises(OverflowError, optimized.swap_uint8_pack, -1)
243+
self.failUnlessRaises(OverflowError, optimized.uint8_pack, -1)
244+
self.failUnlessRaises(OverflowError, optimized.swap_uint8_pack, 2**64)
245+
self.failUnlessRaises(OverflowError, optimized.uint8_pack, 2**64)
246+
self.failUnlessEqual(optimized.uint8_pack((2**64)-1), b'\xFF\xFF\xFF\xFF'*2)
247+
self.failUnlessEqual(optimized.swap_uint8_pack((2**64)-1), b'\xFF\xFF\xFF\xFF'*2)
248+
190249
if __name__ == '__main__':
191250
from types import ModuleType
192251
this = ModuleType("this")

0 commit comments

Comments
 (0)