From 9841ac2da5689ff765250c1abdbf5af9d3750519 Mon Sep 17 00:00:00 2001 From: "Miss Islington (bot)" <31488909+miss-islington@users.noreply.github.com> Date: Sat, 20 Nov 2021 16:27:44 -0800 Subject: [PATCH] bpo-45852: Fix the Counter/iter test for statistics.mode() (GH-29667) (GH-29671) Suggested by Stefan Pochmann. (cherry picked from commit 48744db70ed519c1566c22bf123a0e1f5c69253f) Co-authored-by: Raymond Hettinger Co-authored-by: Raymond Hettinger --- Lib/test/test_statistics.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/Lib/test/test_statistics.py b/Lib/test/test_statistics.py index adccfad7b8e..2853b1b2b2f 100644 --- a/Lib/test/test_statistics.py +++ b/Lib/test/test_statistics.py @@ -1897,10 +1897,13 @@ def test_none_data(self): def test_counter_data(self): # Test that a Counter is treated like any other iterable. - data = collections.Counter([1, 1, 1, 2]) - # Since the keys of the counter are treated as data points, not the - # counts, this should return the first mode encountered, 1 - self.assertEqual(self.func(data), 1) + # We're making sure mode() first calls iter() on its input. + # The concern is that a Counter of a Counter returns the original + # unchanged rather than counting its keys. + c = collections.Counter(a=1, b=2) + # If iter() is called, mode(c) loops over the keys, ['a', 'b'], + # all the counts will be 1, and the first encountered mode is 'a'. + self.assertEqual(self.func(c), 'a') class TestMultiMode(unittest.TestCase):