From 01b9881062b5f751e5e5a60b87935a09dd92e8e4 Mon Sep 17 00:00:00 2001 From: Raymond Hettinger Date: Mon, 19 Feb 2007 07:30:21 +0000 Subject: [PATCH] Add test for merge stability --- Lib/test/test_heapq.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/Lib/test/test_heapq.py b/Lib/test/test_heapq.py index b7c3ab2f12d..b2bbfab0fa1 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):