@@ -5,6 +5,61 @@ namespace PriorityQueues.Tests
55 [ TestClass ( ) ]
66 public class MinBinaryPriorityQueueTests : BasePriorityQueueTests
77 {
8+ [ TestMethod ( ) ]
9+ public override void Complex_test_with_multiple_operations ( )
10+ {
11+ var apple = new SampleElement ( "apple" , 50f ) ;
12+ var banana = new SampleElement ( "banana" , 40f ) ;
13+ var cherry = new SampleElement ( "cherry" , 30f ) ;
14+ var date = new SampleElement ( "date" , 20f ) ;
15+ var elderberry = new SampleElement ( "elderberry" , 10f ) ;
16+ IPriorityQueue < SampleElement > priorityQueue = CreatePriorityQueue ( ) ;
17+
18+ priorityQueue . Enqueue ( date ) ;
19+ priorityQueue . Enqueue ( elderberry ) ;
20+
21+ Assert . AreEqual ( priorityQueue . Count , 2 ) ;
22+ Assert . AreEqual ( priorityQueue . Peek ( ) , elderberry ) ;
23+ Assert . IsTrue ( priorityQueue . Contains ( elderberry ) ) ;
24+ Assert . AreEqual ( priorityQueue . Dequeue ( ) , elderberry ) ;
25+
26+ priorityQueue . Enqueue ( apple ) ;
27+ priorityQueue . Enqueue ( banana ) ;
28+ priorityQueue . Enqueue ( cherry ) ;
29+
30+ Assert . AreEqual ( priorityQueue . Count , 4 ) ;
31+
32+ Assert . IsFalse ( priorityQueue . Remove ( elderberry ) ) ;
33+ Assert . AreEqual ( priorityQueue . Count , 4 ) ;
34+
35+ Assert . IsTrue ( priorityQueue . Remove ( apple ) ) ;
36+ Assert . AreEqual ( priorityQueue . Count , 3 ) ;
37+
38+ Assert . AreEqual ( priorityQueue . Dequeue ( ) , date ) ;
39+ Assert . AreEqual ( priorityQueue . Dequeue ( ) , cherry ) ;
40+ Assert . AreEqual ( priorityQueue . Dequeue ( ) , banana ) ;
41+
42+ Assert . IsTrue ( priorityQueue . IsEmpty ( ) ) ;
43+ }
44+
45+ [ TestMethod ( ) ]
46+ public override void Enqueue_elements_and_dequeue_returns_items_in_priority_order ( )
47+ {
48+ var apple = new SampleElement ( "apple" , 3f ) ;
49+ var pear = new SampleElement ( "pear" , 1f ) ;
50+ var banana = new SampleElement ( "banana" , 5f ) ;
51+ IPriorityQueue < SampleElement > priorityQueue = CreatePriorityQueue ( ) ;
52+
53+ priorityQueue . Enqueue ( apple ) ;
54+ priorityQueue . Enqueue ( pear ) ;
55+ priorityQueue . Enqueue ( banana ) ;
56+
57+ Assert . IsTrue ( priorityQueue . Dequeue ( ) == pear ) ;
58+ Assert . IsTrue ( priorityQueue . Dequeue ( ) == apple ) ;
59+ Assert . IsTrue ( priorityQueue . Dequeue ( ) == banana ) ;
60+ }
61+
62+ [ TestMethod ( ) ]
863 public override void Enqueue_elements_and_peek ( )
964 {
1065 var apple = new SampleElement ( "apple" , 3f ) ;
@@ -28,6 +83,61 @@ protected override IPriorityQueue<SampleElement> CreatePriorityQueue()
2883 [ TestClass ( ) ]
2984 public class MaxBinaryPriorityQueueTests : BasePriorityQueueTests
3085 {
86+ [ TestMethod ( ) ]
87+ public override void Complex_test_with_multiple_operations ( )
88+ {
89+ var apple = new SampleElement ( "apple" , 10f ) ;
90+ var banana = new SampleElement ( "banana" , 20f ) ;
91+ var cherry = new SampleElement ( "cherry" , 30f ) ;
92+ var date = new SampleElement ( "date" , 40f ) ;
93+ var elderberry = new SampleElement ( "elderberry" , 50f ) ;
94+ IPriorityQueue < SampleElement > priorityQueue = CreatePriorityQueue ( ) ;
95+
96+ priorityQueue . Enqueue ( date ) ;
97+ priorityQueue . Enqueue ( elderberry ) ;
98+
99+ Assert . AreEqual ( priorityQueue . Count , 2 ) ;
100+ Assert . AreEqual ( priorityQueue . Peek ( ) , elderberry ) ;
101+ Assert . IsTrue ( priorityQueue . Contains ( elderberry ) ) ;
102+ Assert . AreEqual ( priorityQueue . Dequeue ( ) , elderberry ) ;
103+
104+ priorityQueue . Enqueue ( apple ) ;
105+ priorityQueue . Enqueue ( banana ) ;
106+ priorityQueue . Enqueue ( cherry ) ;
107+
108+ Assert . AreEqual ( priorityQueue . Count , 4 ) ;
109+
110+ Assert . IsFalse ( priorityQueue . Remove ( elderberry ) ) ;
111+ Assert . AreEqual ( priorityQueue . Count , 4 ) ;
112+
113+ Assert . IsTrue ( priorityQueue . Remove ( apple ) ) ;
114+ Assert . AreEqual ( priorityQueue . Count , 3 ) ;
115+
116+ Assert . AreEqual ( priorityQueue . Dequeue ( ) , date ) ;
117+ Assert . AreEqual ( priorityQueue . Dequeue ( ) , cherry ) ;
118+ Assert . AreEqual ( priorityQueue . Dequeue ( ) , banana ) ;
119+
120+ Assert . IsTrue ( priorityQueue . IsEmpty ( ) ) ;
121+ }
122+
123+ [ TestMethod ( ) ]
124+ public override void Enqueue_elements_and_dequeue_returns_items_in_priority_order ( )
125+ {
126+ var apple = new SampleElement ( "apple" , 1f ) ;
127+ var pear = new SampleElement ( "pear" , 5f ) ;
128+ var banana = new SampleElement ( "banana" , 4f ) ;
129+ IPriorityQueue < SampleElement > priorityQueue = CreatePriorityQueue ( ) ;
130+
131+ priorityQueue . Enqueue ( apple ) ;
132+ priorityQueue . Enqueue ( pear ) ;
133+ priorityQueue . Enqueue ( banana ) ;
134+
135+ Assert . IsTrue ( priorityQueue . Dequeue ( ) == pear ) ;
136+ Assert . IsTrue ( priorityQueue . Dequeue ( ) == banana ) ;
137+ Assert . IsTrue ( priorityQueue . Dequeue ( ) == apple ) ;
138+ }
139+
140+ [ TestMethod ( ) ]
31141 public override void Enqueue_elements_and_peek ( )
32142 {
33143 var apple = new SampleElement ( "apple" , 1f ) ;
@@ -39,7 +149,9 @@ public override void Enqueue_elements_and_peek()
39149 priorityQueue . Enqueue ( pear ) ;
40150 priorityQueue . Enqueue ( banana ) ;
41151
42- Assert . IsTrue ( priorityQueue . Peek ( ) == pear ) ;
152+ Assert . IsTrue ( priorityQueue . Dequeue ( ) == pear ) ;
153+ Assert . IsTrue ( priorityQueue . Dequeue ( ) == banana ) ;
154+ Assert . IsTrue ( priorityQueue . Dequeue ( ) == apple ) ;
43155 }
44156
45157 protected override IPriorityQueue < SampleElement > CreatePriorityQueue ( )
0 commit comments