summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRaymond Hettinger <rhettinger@users.noreply.github.com>2019-04-29 04:31:55 (GMT)
committerGitHub <noreply@github.com>2019-04-29 04:31:55 (GMT)
commitdb81ba1393af40ba920a996651e2c11943c3663c (patch)
tree36c62378dc605ee1a322cc537712b6aecef7bd63
parent86f0c8215c2fdaeef58d185ff00b854a45971f84 (diff)
downloadcpython-db81ba1393af40ba920a996651e2c11943c3663c.zip
cpython-db81ba1393af40ba920a996651e2c11943c3663c.tar.gz
cpython-db81ba1393af40ba920a996651e2c11943c3663c.tar.bz2
bpo-36546: More tests: type preservation and equal inputs (#13000)
-rw-r--r--Lib/test/test_statistics.py30
1 files changed, 18 insertions, 12 deletions
diff --git a/Lib/test/test_statistics.py b/Lib/test/test_statistics.py
index c988d7f..0a96705 100644
--- a/Lib/test/test_statistics.py
+++ b/Lib/test/test_statistics.py
@@ -2153,12 +2153,11 @@ class TestQuantiles(unittest.TestCase):
]:
self.assertEqual(expected, quantiles(data, n=n))
self.assertEqual(len(quantiles(data, n=n)), n - 1)
- self.assertEqual(list(map(float, expected)),
- quantiles(map(Decimal, data), n=n))
- self.assertEqual(list(map(Decimal, expected)),
- quantiles(map(Decimal, data), n=n))
- self.assertEqual(list(map(Fraction, expected)),
- quantiles(map(Fraction, data), n=n))
+ # Preserve datatype when possible
+ for datatype in (float, Decimal, Fraction):
+ result = quantiles(map(datatype, data), n=n)
+ self.assertTrue(all(type(x) == datatype) for x in result)
+ self.assertEqual(result, list(map(datatype, expected)))
# Invariant under tranlation and scaling
def f(x):
return 3.5 * x - 1234.675
@@ -2199,12 +2198,11 @@ class TestQuantiles(unittest.TestCase):
]:
self.assertEqual(expected, quantiles(data, n=n, method="inclusive"))
self.assertEqual(len(quantiles(data, n=n, method="inclusive")), n - 1)
- self.assertEqual(list(map(float, expected)),
- quantiles(map(Decimal, data), n=n, method="inclusive"))
- self.assertEqual(list(map(Decimal, expected)),
- quantiles(map(Decimal, data), n=n, method="inclusive"))
- self.assertEqual(list(map(Fraction, expected)),
- quantiles(map(Fraction, data), n=n, method="inclusive"))
+ # Preserve datatype when possible
+ for datatype in (float, Decimal, Fraction):
+ result = quantiles(map(datatype, data), n=n, method="inclusive")
+ self.assertTrue(all(type(x) == datatype) for x in result)
+ self.assertEqual(result, list(map(datatype, expected)))
# Invariant under tranlation and scaling
def f(x):
return 3.5 * x - 1234.675
@@ -2222,6 +2220,14 @@ class TestQuantiles(unittest.TestCase):
self.assertTrue(all(math.isclose(e, a, abs_tol=0.0001)
for e, a in zip(expected, actual)))
+ def test_equal_inputs(self):
+ quantiles = statistics.quantiles
+ for n in range(2, 10):
+ data = [10.0] * n
+ self.assertEqual(quantiles(data), [10.0, 10.0, 10.0])
+ self.assertEqual(quantiles(data, method='inclusive'),
+ [10.0, 10.0, 10.0])
+
def test_equal_sized_groups(self):
quantiles = statistics.quantiles
total = 10_000