MCPcopy Index your code
hub / github.com/RustPython/RustPython / testDist

Method testDist

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

Source from the content-addressed store, hash-verified

942 self.assertEqual(hypot(x, y), z)
943
944 def testDist(self):
945 from decimal import Decimal as D
946 from fractions import Fraction as F
947
948 dist = math.dist
949 sqrt = math.sqrt
950
951 # Simple exact cases
952 self.assertEqual(dist((1.0, 2.0, 3.0), (4.0, 2.0, -1.0)), 5.0)
953 self.assertEqual(dist((1, 2, 3), (4, 2, -1)), 5.0)
954
955 # Test different numbers of arguments (from zero to nine)
956 # against a straightforward pure python implementation
957 for i in range(9):
958 for j in range(5):
959 p = tuple(random.uniform(-5, 5) for k in range(i))
960 q = tuple(random.uniform(-5, 5) for k in range(i))
961 self.assertAlmostEqual(
962 dist(p, q),
963 sqrt(sum((px - qx) ** 2.0 for px, qx in zip(p, q)))
964 )
965
966 # Test non-tuple inputs
967 self.assertEqual(dist([1.0, 2.0, 3.0], [4.0, 2.0, -1.0]), 5.0)
968 self.assertEqual(dist(iter([1.0, 2.0, 3.0]), iter([4.0, 2.0, -1.0])), 5.0)
969
970 # Test allowable types (those with __float__)
971 self.assertEqual(dist((14.0, 1.0), (2.0, -4.0)), 13.0)
972 self.assertEqual(dist((14, 1), (2, -4)), 13)
973 self.assertEqual(dist((FloatLike(14.), 1), (2, -4)), 13)
974 self.assertEqual(dist((11, 1), (FloatLike(-1.), -4)), 13)
975 self.assertEqual(dist((14, FloatLike(-1.)), (2, -6)), 13)
976 self.assertEqual(dist((14, -1), (2, -6)), 13)
977 self.assertEqual(dist((D(14), D(1)), (D(2), D(-4))), D(13))
978 self.assertEqual(dist((F(14, 32), F(1, 32)), (F(2, 32), F(-4, 32))),
979 F(13, 32))
980 self.assertEqual(dist((True, True, False, False, True, True),
981 (True, False, True, False, False, False)),
982 2.0)
983
984 # Test corner cases
985 self.assertEqual(dist((13.25, 12.5, -3.25),
986 (13.25, 12.5, -3.25)),
987 0.0) # Distance with self is zero
988 self.assertEqual(dist((), ()), 0.0) # Zero-dimensional case
989 self.assertEqual(1.0, # Convert negative zero to positive zero
990 math.copysign(1.0, dist((-0.0,), (0.0,)))
991 )
992 self.assertEqual(1.0, # Convert negative zero to positive zero
993 math.copysign(1.0, dist((0.0,), (-0.0,)))
994 )
995 self.assertEqual( # Handling of moving max to the end
996 dist((1.5, 1.5, 0.5), (0, 0, 0)),
997 dist((1.5, 0.5, 1.5), (0, 0, 0))
998 )
999
1000 # Verify tuple subclasses are allowed
1001 class T(tuple):

Callers

nothing calls this directly

Calls 15

DClass · 0.90
distFunction · 0.85
iterFunction · 0.85
uniformMethod · 0.80
assertTrueMethod · 0.80
FloatLikeClass · 0.70
FClass · 0.70
TClass · 0.70
BadFloatClass · 0.70
sqrtFunction · 0.50
sumFunction · 0.50
absFunction · 0.50

Tested by

no test coverage detected