@@ -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+
190249if __name__ == '__main__' :
191250 from types import ModuleType
192251 this = ModuleType ("this" )
0 commit comments