(self)
| 983 | self.assertEqual(hypot(x, y), z) |
| 984 | |
| 985 | def testDist(self): |
| 986 | from decimal import Decimal as D |
| 987 | from fractions import Fraction as F |
| 988 | |
| 989 | dist = math.dist |
| 990 | sqrt = math.sqrt |
| 991 | |
| 992 | # Simple exact cases |
| 993 | self.assertEqual(dist((1.0, 2.0, 3.0), (4.0, 2.0, -1.0)), 5.0) |
| 994 | self.assertEqual(dist((1, 2, 3), (4, 2, -1)), 5.0) |
| 995 | |
| 996 | # Test different numbers of arguments (from zero to nine) |
| 997 | # against a straightforward pure python implementation |
| 998 | for i in range(9): |
| 999 | for j in range(5): |
| 1000 | p = tuple(random.uniform(-5, 5) for k in range(i)) |
| 1001 | q = tuple(random.uniform(-5, 5) for k in range(i)) |
| 1002 | self.assertAlmostEqual( |
| 1003 | dist(p, q), |
| 1004 | sqrt(sum((px - qx) ** 2.0 for px, qx in zip(p, q))) |
| 1005 | ) |
| 1006 | |
| 1007 | # Test non-tuple inputs |
| 1008 | self.assertEqual(dist([1.0, 2.0, 3.0], [4.0, 2.0, -1.0]), 5.0) |
| 1009 | self.assertEqual(dist(iter([1.0, 2.0, 3.0]), iter([4.0, 2.0, -1.0])), 5.0) |
| 1010 | |
| 1011 | # Test allowable types (those with __float__) |
| 1012 | self.assertEqual(dist((14.0, 1.0), (2.0, -4.0)), 13.0) |
| 1013 | self.assertEqual(dist((14, 1), (2, -4)), 13) |
| 1014 | self.assertEqual(dist((FloatLike(14.), 1), (2, -4)), 13) |
| 1015 | self.assertEqual(dist((11, 1), (FloatLike(-1.), -4)), 13) |
| 1016 | self.assertEqual(dist((14, FloatLike(-1.)), (2, -6)), 13) |
| 1017 | self.assertEqual(dist((14, -1), (2, -6)), 13) |
| 1018 | self.assertEqual(dist((D(14), D(1)), (D(2), D(-4))), D(13)) |
| 1019 | self.assertEqual(dist((F(14, 32), F(1, 32)), (F(2, 32), F(-4, 32))), |
| 1020 | F(13, 32)) |
| 1021 | self.assertEqual(dist((True, True, False, False, True, True), |
| 1022 | (True, False, True, False, False, False)), |
| 1023 | 2.0) |
| 1024 | |
| 1025 | # Test corner cases |
| 1026 | self.assertEqual(dist((13.25, 12.5, -3.25), |
| 1027 | (13.25, 12.5, -3.25)), |
| 1028 | 0.0) # Distance with self is zero |
| 1029 | self.assertEqual(dist((), ()), 0.0) # Zero-dimensional case |
| 1030 | self.assertEqual(1.0, # Convert negative zero to positive zero |
| 1031 | math.copysign(1.0, dist((-0.0,), (0.0,))) |
| 1032 | ) |
| 1033 | self.assertEqual(1.0, # Convert negative zero to positive zero |
| 1034 | math.copysign(1.0, dist((0.0,), (-0.0,))) |
| 1035 | ) |
| 1036 | self.assertEqual( # Handling of moving max to the end |
| 1037 | dist((1.5, 1.5, 0.5), (0, 0, 0)), |
| 1038 | dist((1.5, 0.5, 1.5), (0, 0, 0)) |
| 1039 | ) |
| 1040 | |
| 1041 | # Verify tuple subclasses are allowed |
| 1042 | class T(tuple): |
nothing calls this directly
no test coverage detected