Skip to content

Commit db81ba1

Browse files
authored
bpo-36546: More tests: type preservation and equal inputs (#13000)
1 parent 86f0c82 commit db81ba1

File tree

1 file changed

+18
-12
lines changed

1 file changed

+18
-12
lines changed

Lib/test/test_statistics.py

Lines changed: 18 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2153,12 +2153,11 @@ def test_specific_cases(self):
21532153
]:
21542154
self.assertEqual(expected, quantiles(data, n=n))
21552155
self.assertEqual(len(quantiles(data, n=n)), n - 1)
2156-
self.assertEqual(list(map(float, expected)),
2157-
quantiles(map(Decimal, data), n=n))
2158-
self.assertEqual(list(map(Decimal, expected)),
2159-
quantiles(map(Decimal, data), n=n))
2160-
self.assertEqual(list(map(Fraction, expected)),
2161-
quantiles(map(Fraction, data), n=n))
2156+
# Preserve datatype when possible
2157+
for datatype in (float, Decimal, Fraction):
2158+
result = quantiles(map(datatype, data), n=n)
2159+
self.assertTrue(all(type(x) == datatype) for x in result)
2160+
self.assertEqual(result, list(map(datatype, expected)))
21622161
# Invariant under tranlation and scaling
21632162
def f(x):
21642163
return 3.5 * x - 1234.675
@@ -2199,12 +2198,11 @@ def test_specific_cases_inclusive(self):
21992198
]:
22002199
self.assertEqual(expected, quantiles(data, n=n, method="inclusive"))
22012200
self.assertEqual(len(quantiles(data, n=n, method="inclusive")), n - 1)
2202-
self.assertEqual(list(map(float, expected)),
2203-
quantiles(map(Decimal, data), n=n, method="inclusive"))
2204-
self.assertEqual(list(map(Decimal, expected)),
2205-
quantiles(map(Decimal, data), n=n, method="inclusive"))
2206-
self.assertEqual(list(map(Fraction, expected)),
2207-
quantiles(map(Fraction, data), n=n, method="inclusive"))
2201+
# Preserve datatype when possible
2202+
for datatype in (float, Decimal, Fraction):
2203+
result = quantiles(map(datatype, data), n=n, method="inclusive")
2204+
self.assertTrue(all(type(x) == datatype) for x in result)
2205+
self.assertEqual(result, list(map(datatype, expected)))
22082206
# Invariant under tranlation and scaling
22092207
def f(x):
22102208
return 3.5 * x - 1234.675
@@ -2222,6 +2220,14 @@ def f(x):
22222220
self.assertTrue(all(math.isclose(e, a, abs_tol=0.0001)
22232221
for e, a in zip(expected, actual)))
22242222

2223+
def test_equal_inputs(self):
2224+
quantiles = statistics.quantiles
2225+
for n in range(2, 10):
2226+
data = [10.0] * n
2227+
self.assertEqual(quantiles(data), [10.0, 10.0, 10.0])
2228+
self.assertEqual(quantiles(data, method='inclusive'),
2229+
[10.0, 10.0, 10.0])
2230+
22252231
def test_equal_sized_groups(self):
22262232
quantiles = statistics.quantiles
22272233
total = 10_000

0 commit comments

Comments
 (0)