MCPcopy Index your code
hub / github.com/python/cpython / testDist

Method testDist

Lib/test/test_math.py:985–1112  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

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):

Callers

nothing calls this directly

Calls 14

DClass · 0.90
absFunction · 0.85
uniformMethod · 0.80
assertTrueMethod · 0.80
FloatLikeClass · 0.70
FClass · 0.70
TClass · 0.70
BadFloatClass · 0.70
anyFunction · 0.50
assertEqualMethod · 0.45
assertAlmostEqualMethod · 0.45
assertRaisesMethod · 0.45

Tested by

no test coverage detected