test_byteswap() fails on alphas, because treating the byte swapped bit

patterns as floats/doubles results in floating point exceptions.

Fix this by implementing a separate test_byteswap() for the floating
point tests. This new test compares the tostring() values of both arrays
instead of the arrays themselves.

Discovered by Neal Norwitz.
This commit is contained in:
Walter Dörwald 2003-05-22 13:15:31 +00:00
parent e41195fab6
commit cf99b0afb6
1 changed files with 17 additions and 0 deletions

View File

@ -847,6 +847,23 @@ class FPTest(NumberTest):
class FloatTest(FPTest): class FloatTest(FPTest):
typecode = 'f' typecode = 'f'
minitemsize = 4 minitemsize = 4
def test_byteswap(self):
a = array.array(self.typecode, self.example)
self.assertRaises(TypeError, a.byteswap, 42)
if a.itemsize in (1, 2, 4, 8):
b = array.array(self.typecode, self.example)
b.byteswap()
if a.itemsize==1:
self.assertEqual(a, b)
else:
# On alphas treating the byte swapped bit patters as
# floats/doubles results in floating point exceptions
# => compare the 8bit string values instead
self.assertNotEqual(a.tostring(), b.tostring())
b.byteswap()
self.assertEqual(a, b)
tests.append(FloatTest) tests.append(FloatTest)
class DoubleTest(FPTest): class DoubleTest(FPTest):