(self, type)
| 4 | class PowTest(unittest.TestCase): |
| 5 | |
| 6 | def powtest(self, type): |
| 7 | if type != float: |
| 8 | for i in range(-1000, 1000): |
| 9 | self.assertEqual(pow(type(i), 0), 1) |
| 10 | self.assertEqual(pow(type(i), 1), type(i)) |
| 11 | self.assertEqual(pow(type(0), 1), type(0)) |
| 12 | self.assertEqual(pow(type(1), 1), type(1)) |
| 13 | |
| 14 | for i in range(-100, 100): |
| 15 | self.assertEqual(pow(type(i), 3), i*i*i) |
| 16 | |
| 17 | pow2 = 1 |
| 18 | for i in range(0, 31): |
| 19 | self.assertEqual(pow(2, i), pow2) |
| 20 | if i != 30 : pow2 = pow2*2 |
| 21 | |
| 22 | for i in list(range(-10, 0)) + list(range(1, 10)): |
| 23 | ii = type(i) |
| 24 | inv = pow(ii, -1) # inverse of ii |
| 25 | for jj in range(-10, 0): |
| 26 | self.assertAlmostEqual(pow(ii, jj), pow(inv, -jj)) |
| 27 | |
| 28 | for othertype in int, float: |
| 29 | for i in range(1, 100): |
| 30 | zero = type(0) |
| 31 | exp = -othertype(i/10.0) |
| 32 | if exp == 0: |
| 33 | continue |
| 34 | self.assertRaises(ZeroDivisionError, pow, zero, exp) |
| 35 | |
| 36 | il, ih = -20, 20 |
| 37 | jl, jh = -5, 5 |
| 38 | kl, kh = -10, 10 |
| 39 | asseq = self.assertEqual |
| 40 | if type == float: |
| 41 | il = 1 |
| 42 | asseq = self.assertAlmostEqual |
| 43 | elif type == int: |
| 44 | jl = 0 |
| 45 | elif type == int: |
| 46 | jl, jh = 0, 15 |
| 47 | for i in range(il, ih+1): |
| 48 | for j in range(jl, jh+1): |
| 49 | for k in range(kl, kh+1): |
| 50 | if k != 0: |
| 51 | if type == float or j < 0: |
| 52 | self.assertRaises(TypeError, pow, type(i), j, k) |
| 53 | continue |
| 54 | asseq( |
| 55 | pow(type(i),j,k), |
| 56 | pow(type(i),j)% type(k) |
| 57 | ) |
| 58 | |
| 59 | def test_powint(self): |
| 60 | self.powtest(int) |
no test coverage detected