summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTzanetos Balitsaris <tbalitsaris@gmail.com>2020-05-13 10:29:31 (GMT)
committerGitHub <noreply@github.com>2020-05-13 10:29:31 (GMT)
commitb809717c1ead26b4e3693b8a5505dd8f8f666f08 (patch)
treefd0cb7ea6af160e15a6773eb61c12e47d9056658
parent42bae3a3d9d79f28e6b3b619bd27296d125c4c2c (diff)
downloadcpython-b809717c1ead26b4e3693b8a5505dd8f8f666f08.zip
cpython-b809717c1ead26b4e3693b8a5505dd8f8f666f08.tar.gz
cpython-b809717c1ead26b4e3693b8a5505dd8f8f666f08.tar.bz2
bpo-40331: Increase test coverage for the statistics module (GH-19608)
-rw-r--r--Lib/test/test_statistics.py60
1 files changed, 60 insertions, 0 deletions
diff --git a/Lib/test/test_statistics.py b/Lib/test/test_statistics.py
index 0e46a71..5c3b1fd 100644
--- a/Lib/test/test_statistics.py
+++ b/Lib/test/test_statistics.py
@@ -1004,6 +1004,10 @@ class ConvertTest(unittest.TestCase):
x = statistics._convert(nan, type(nan))
self.assertTrue(_nan_equal(x, nan))
+ def test_invalid_input_type(self):
+ with self.assertRaises(TypeError):
+ statistics._convert(None, float)
+
class FailNegTest(unittest.TestCase):
"""Test _fail_neg private function."""
@@ -1033,6 +1037,50 @@ class FailNegTest(unittest.TestCase):
self.assertEqual(errmsg, msg)
+class FindLteqTest(unittest.TestCase):
+ # Test _find_lteq private function.
+
+ def test_invalid_input_values(self):
+ for a, x in [
+ ([], 1),
+ ([1, 2], 3),
+ ([1, 3], 2)
+ ]:
+ with self.subTest(a=a, x=x):
+ with self.assertRaises(ValueError):
+ statistics._find_lteq(a, x)
+
+ def test_locate_successfully(self):
+ for a, x, expected_i in [
+ ([1, 1, 1, 2, 3], 1, 0),
+ ([0, 1, 1, 1, 2, 3], 1, 1),
+ ([1, 2, 3, 3, 3], 3, 2)
+ ]:
+ with self.subTest(a=a, x=x):
+ self.assertEqual(expected_i, statistics._find_lteq(a, x))
+
+
+class FindRteqTest(unittest.TestCase):
+ # Test _find_rteq private function.
+
+ def test_invalid_input_values(self):
+ for a, l, x in [
+ ([1], 2, 1),
+ ([1, 3], 0, 2)
+ ]:
+ with self.assertRaises(ValueError):
+ statistics._find_rteq(a, l, x)
+
+ def test_locate_successfully(self):
+ for a, l, x, expected_i in [
+ ([1, 1, 1, 2, 3], 0, 1, 2),
+ ([0, 1, 1, 1, 2, 3], 0, 1, 3),
+ ([1, 2, 3, 3, 3], 0, 3, 4)
+ ]:
+ with self.subTest(a=a, l=l, x=x):
+ self.assertEqual(expected_i, statistics._find_rteq(a, l, x))
+
+
# === Tests for public functions ===
class UnivariateCommonMixin:
@@ -1476,6 +1524,18 @@ class TestHarmonicMean(NumericTestCase, AverageMixin, UnivariateTypeMixin):
with self.subTest(values=values):
self.assertRaises(exc, self.func, values)
+ def test_invalid_type_error(self):
+ # Test error is raised when input contains invalid type(s)
+ for data in [
+ ['3.14'], # single string
+ ['1', '2', '3'], # multiple strings
+ [1, '2', 3, '4', 5], # mixed strings and valid integers
+ [2.3, 3.4, 4.5, '5.6'] # only one string and valid floats
+ ]:
+ with self.subTest(data=data):
+ with self.assertRaises(TypeError):
+ self.func(data)
+
def test_ints(self):
# Test harmonic mean with ints.
data = [2, 4, 4, 8, 16, 16]