[Python-checkins] python/dist/src/Lib/test test_pow.py,1.16,1.17
doerwalter@users.sourceforge.net
doerwalter@users.sourceforge.net
Mon, 03 Feb 2003 12:17:21 -0800
Update of /cvsroot/python/python/dist/src/Lib/test
In directory sc8-pr-cvs1:/tmp/cvs-serv15333/Lib/test
Modified Files:
test_pow.py
Log Message:
Port test_pow.py to PyUnit. From SF patch #662807
Index: test_pow.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Lib/test/test_pow.py,v
retrieving revision 1.16
retrieving revision 1.17
diff -C2 -d -r1.16 -r1.17
*** test_pow.py 7 Dec 2002 10:05:27 -0000 1.16
--- test_pow.py 3 Feb 2003 20:17:19 -0000 1.17
***************
*** 1,125 ****
! import sys
! from test import test_support
! def powtest(type):
! if type != float:
! print " Testing 2-argument pow() function..."
! for i in range(-1000, 1000):
! if pow(type(i), 0) != 1:
! raise ValueError, 'pow('+str(i)+',0) != 1'
! if pow(type(i), 1) != type(i):
! raise ValueError, 'pow('+str(i)+',1) != '+str(i)
! if pow(type(0), 1) != type(0):
! raise ValueError, 'pow(0,'+str(i)+') != 0'
! if pow(type(1), 1) != type(1):
! raise ValueError, 'pow(1,'+str(i)+') != 1'
! for i in range(-100, 100):
! if pow(type(i), 3) != i*i*i:
! raise ValueError, 'pow('+str(i)+',3) != '+str(i*i*i)
! pow2 = 1
! for i in range(0,31):
! if pow(2, i) != pow2:
! raise ValueError, 'pow(2,'+str(i)+') != '+str(pow2)
! if i != 30 : pow2 = pow2*2
! for othertype in int, long:
! for i in range(-10, 0) + range(1, 10):
! ii = type(i)
! for j in range(1, 11):
! jj = -othertype(j)
! try:
pow(ii, jj)
- except ValueError:
- raise ValueError, "pow(%s, %s) failed" % (ii, jj)
! for othertype in int, long, float:
! for i in range(1, 100):
! zero = type(0)
! exp = -othertype(i/10.0)
! if exp == 0:
! continue
! try:
! pow(zero, exp)
! except ZeroDivisionError:
! pass # taking zero to any negative exponent should fail
! else:
! raise ValueError, "pow(%s, %s) did not fail" % (zero, exp)
! print " Testing 3-argument pow() function..."
! il, ih = -20, 20
! jl, jh = -5, 5
! kl, kh = -10, 10
! compare = cmp
! if type == float:
! il = 1
! compare = test_support.fcmp
! elif type == int:
! jl = 0
! elif type == long:
! jl, jh = 0, 15
! for i in range(il, ih+1):
! for j in range(jl, jh+1):
! for k in range(kl, kh+1):
! if k != 0:
! if type == float or j < 0:
! try:
! pow(type(i),j,k)
! except TypeError:
! pass
! else:
! raise ValueError, "expected TypeError from " + \
! "pow%r" % ((type(i), j, k),)
! continue
! if compare(pow(type(i),j,k), pow(type(i),j)% type(k)):
! raise ValueError, "pow(" +str(i)+ "," +str(j)+ \
! "," +str(k)+ ") != pow(" +str(i)+ "," + \
! str(j)+ ") % " +str(k)
! print 'Testing integer mode...'
! powtest(int)
! print 'Testing long integer mode...'
! powtest(long)
! print 'Testing floating point mode...'
! powtest(float)
! # Other tests-- not very systematic
! print 'The number in both columns should match.'
! print `pow(3,3) % 8`, `pow(3,3,8)`
! print `pow(3,3) % -8`, `pow(3,3,-8)`
! print `pow(3,2) % -2`, `pow(3,2,-2)`
! print `pow(-3,3) % 8`, `pow(-3,3,8)`
! print `pow(-3,3) % -8`, `pow(-3,3,-8)`
! print `pow(5,2) % -8`, `pow(5,2,-8)`
! print
! print `pow(3L,3L) % 8`, `pow(3L,3L,8)`
! print `pow(3L,3L) % -8`, `pow(3L,3L,-8)`
! print `pow(3L,2) % -2`, `pow(3L,2,-2)`
! print `pow(-3L,3L) % 8`, `pow(-3L,3L,8)`
! print `pow(-3L,3L) % -8`, `pow(-3L,3L,-8)`
! print `pow(5L,2) % -8`, `pow(5L,2,-8)`
! print
! print
! for i in range(-10, 11):
! for j in range(0, 6):
! for k in range(-7, 11):
! if j >= 0 and k != 0:
! o = pow(i,j) % k
! n = pow(i,j,k)
! if o != n: print 'Integer mismatch:', i,j,k
! if j >= 0 and k != 0:
! o = pow(long(i),j) % k
! n = pow(long(i),j,k)
! if o != n: print 'Integer mismatch:', i,j,k
! class TestRpow:
! def __rpow__(self, other):
! return None
! None ** TestRpow() # Won't fail when __rpow__ invoked. SF bug #643260.
--- 1,111 ----
! import test.test_support, unittest
+ class PowTest(unittest.TestCase):
! def powtest(self, type):
! if type != float:
! for i in range(-1000, 1000):
! self.assertEquals(pow(type(i), 0), 1)
! self.assertEquals(pow(type(i), 1), type(i))
! self.assertEquals(pow(type(0), 1), type(0))
! self.assertEquals(pow(type(1), 1), type(1))
! for i in range(-100, 100):
! self.assertEquals(pow(type(i), 3), i*i*i)
! pow2 = 1
! for i in range(0,31):
! self.assertEquals(pow(2, i), pow2)
! if i != 30 : pow2 = pow2*2
! for othertype in int, long:
! for i in range(-10, 0) + range(1, 10):
! ii = type(i)
! for j in range(1, 11):
! jj = -othertype(j)
pow(ii, jj)
! for othertype in int, long, float:
! for i in range(1, 100):
! zero = type(0)
! exp = -othertype(i/10.0)
! if exp == 0:
! continue
! self.assertRaises(ZeroDivisionError, pow, zero, exp)
! il, ih = -20, 20
! jl, jh = -5, 5
! kl, kh = -10, 10
! asseq = self.assertEqual
! if type == float:
! il = 1
! asseq = self.assertAlmostEqual
! elif type == int:
! jl = 0
! elif type == long:
! jl, jh = 0, 15
! for i in range(il, ih+1):
! for j in range(jl, jh+1):
! for k in range(kl, kh+1):
! if k != 0:
! if type == float or j < 0:
! self.assertRaises(TypeError, pow, type(i), j, k)
! continue
! asseq(
! pow(type(i),j,k),
! pow(type(i),j)% type(k)
! )
+ def test_powint(self):
+ self.powtest(int)
! def test_powlong(self):
! self.powtest(long)
! def test_powfloat(self):
! self.powtest(float)
! def test_other(self):
! # Other tests-- not very systematic
! self.assertEquals(pow(3,3) % 8, pow(3,3,8))
! self.assertEquals(pow(3,3) % -8, pow(3,3,-8))
! self.assertEquals(pow(3,2) % -2, pow(3,2,-2))
! self.assertEquals(pow(-3,3) % 8, pow(-3,3,8))
! self.assertEquals(pow(-3,3) % -8, pow(-3,3,-8))
! self.assertEquals(pow(5,2) % -8, pow(5,2,-8))
! self.assertEquals(pow(3L,3L) % 8, pow(3L,3L,8))
! self.assertEquals(pow(3L,3L) % -8, pow(3L,3L,-8))
! self.assertEquals(pow(3L,2) % -2, pow(3L,2,-2))
! self.assertEquals(pow(-3L,3L) % 8, pow(-3L,3L,8))
! self.assertEquals(pow(-3L,3L) % -8, pow(-3L,3L,-8))
! self.assertEquals(pow(5L,2) % -8, pow(5L,2,-8))
! for i in range(-10, 11):
! for j in range(0, 6):
! for k in range(-7, 11):
! if j >= 0 and k != 0:
! self.assertEquals(
! pow(i,j) % k,
! pow(i,j,k)
! )
! if j >= 0 and k != 0:
! self.assertEquals(
! pow(long(i),j) % k,
! pow(long(i),j,k)
! )
! def test_bug643260(self):
! class TestRpow:
! def __rpow__(self, other):
! return None
! None ** TestRpow() # Won't fail when __rpow__ invoked. SF bug #643260.
!
! def test_main():
! suite = unittest.TestSuite()
! suite.addTest(unittest.makeSuite(PowTest))
! test.test_support.run_suite(suite)
!
! if __name__ == "__main__":
! test_main()