(self)
| 47 | self.check_equal_hash(True, 1) |
| 48 | |
| 49 | def test_integers(self): |
| 50 | # check that equal values hash equal |
| 51 | |
| 52 | # exact integers |
| 53 | for i in range(-1000, 1000): |
| 54 | self.check_equal_hash(i, float(i)) |
| 55 | self.check_equal_hash(i, D(i)) |
| 56 | self.check_equal_hash(i, F(i)) |
| 57 | |
| 58 | # the current hash is based on reduction modulo 2**n-1 for some |
| 59 | # n, so pay special attention to numbers of the form 2**n and 2**n-1. |
| 60 | for i in range(100): |
| 61 | n = 2**i - 1 |
| 62 | if n == int(float(n)): |
| 63 | self.check_equal_hash(n, float(n)) |
| 64 | self.check_equal_hash(-n, -float(n)) |
| 65 | self.check_equal_hash(n, D(n)) |
| 66 | self.check_equal_hash(n, F(n)) |
| 67 | self.check_equal_hash(-n, D(-n)) |
| 68 | self.check_equal_hash(-n, F(-n)) |
| 69 | |
| 70 | n = 2**i |
| 71 | self.check_equal_hash(n, float(n)) |
| 72 | self.check_equal_hash(-n, -float(n)) |
| 73 | self.check_equal_hash(n, D(n)) |
| 74 | self.check_equal_hash(n, F(n)) |
| 75 | self.check_equal_hash(-n, D(-n)) |
| 76 | self.check_equal_hash(-n, F(-n)) |
| 77 | |
| 78 | # random values of various sizes |
| 79 | for _ in range(1000): |
| 80 | e = random.randrange(300) |
| 81 | n = random.randrange(-10**e, 10**e) |
| 82 | self.check_equal_hash(n, D(n)) |
| 83 | self.check_equal_hash(n, F(n)) |
| 84 | if n == int(float(n)): |
| 85 | self.check_equal_hash(n, float(n)) |
| 86 | |
| 87 | def test_binary_floats(self): |
| 88 | # check that floats hash equal to corresponding Fractions and Decimals |
nothing calls this directly
no test coverage detected