diff options
author | Raymond Hettinger <rhettinger@users.noreply.github.com> | 2019-04-29 04:31:55 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-04-29 04:31:55 (GMT) |
commit | db81ba1393af40ba920a996651e2c11943c3663c (patch) | |
tree | 36c62378dc605ee1a322cc537712b6aecef7bd63 | |
parent | 86f0c8215c2fdaeef58d185ff00b854a45971f84 (diff) | |
download | cpython-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.py | 30 |
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 |