Add another test which exercises the whole suite with a
authorRaymond Hettinger <python@rcn.com>
Sat, 7 Dec 2002 10:33:42 +0000 (10:33 +0000)
committerRaymond Hettinger <python@rcn.com>
Sat, 7 Dec 2002 10:33:42 +0000 (10:33 +0000)
heapsort and verifies the result against list.sort().

Lib/test/test_heapq.py

index f0bb2e7d1be9cc043062cadea986e3adc29a5f34..8f3c6f9ac9a8a830b7617c2c879f1a62e1e1117a 100644 (file)
@@ -70,6 +70,20 @@ def test_main():
         if item > heap[0]:  # this gets rarer the longer we run
             heapreplace(heap, item)
     vereq(list(heapiter(heap)), data_sorted[-10:])
+    # 6)  Exercise everything with repeated heapsort checks
+    for trial in xrange(100):
+        size = random.randrange(50)
+        data = [random.randrange(25) for i in range(size)]
+        if trial & 1:     # Half of the time, use heapify
+            heap = data[:]
+            heapify(heap)
+        else:             # The rest of the time, use heappush
+            heap = []
+            for item in data:
+                heappush(heap,item)
+        data.sort()
+        sorted = [heappop(heap) for i in range(size)]
+        vereq(data, sorted)
     # Make user happy
     if verbose:
         print "All OK"