From: Raymond Hettinger Date: Mon, 19 Feb 2007 07:30:21 +0000 (+0000) Subject: Add test for merge stability X-Git-Tag: v2.6a1~2161 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=01b9881062b5f751e5e5a60b87935a09dd92e8e4;p=python Add test for merge stability --- diff --git a/Lib/test/test_heapq.py b/Lib/test/test_heapq.py index b7c3ab2f12..b2bbfab0fa 100644 --- a/Lib/test/test_heapq.py +++ b/Lib/test/test_heapq.py @@ -111,6 +111,21 @@ class TestHeap(unittest.TestCase): self.assertEqual(sorted(chain(*inputs)), list(merge(*inputs))) self.assertEqual(list(merge()), []) + def test_merge_stability(self): + class Int(int): + pass + inputs = [[], [], [], []] + for i in range(20000): + stream = random.randrange(4) + x = random.randrange(500) + obj = Int(x) + obj.pair = (x, stream) + inputs[stream].append(obj) + for stream in inputs: + stream.sort() + result = [i.pair for i in merge(*inputs)] + self.assertEqual(result, sorted(result)) + def test_nsmallest(self): data = [(random.randrange(2000), i) for i in range(1000)] for f in (None, lambda x: x[0] * 547 % 2000):