@@ -29,25 +29,18 @@ func testMaintainsPriorityQueue(t *testing.T, n int, q *FlatQueue) {
29
29
q .Push (i , v )
30
30
}
31
31
32
- v , ok := q .PeekValue ()
33
- if v != sorted [0 ] || ! ok {
32
+ if q .PeekValue () != sorted [0 ] {
34
33
t .Fatal ()
35
34
}
36
35
37
- id , ok := q .Peek ()
38
- if data [id ] != sorted [0 ] || ! ok {
36
+ if data [q .Peek ()] != sorted [0 ] {
39
37
t .Fatal ()
40
38
}
41
39
42
40
result := make ([]float64 , n )
43
41
i := 0
44
42
for q .Len () > 0 {
45
- id , ok := q .Pop ()
46
- if ! ok {
47
- t .Fatal ()
48
- }
49
-
50
- result [i ] = data [id ]
43
+ result [i ] = data [q .Pop ()]
51
44
i ++
52
45
}
53
46
@@ -81,10 +74,6 @@ func testLen(t *testing.T, q *FlatQueue) {
81
74
if q .Pop (); q .Len () != 0 {
82
75
t .Fatal ()
83
76
}
84
-
85
- if q .Pop (); q .Len () != 0 {
86
- t .Fatal ()
87
- }
88
77
}
89
78
90
79
func TestPop (t * testing.T ) {
@@ -93,28 +82,14 @@ func TestPop(t *testing.T) {
93
82
}
94
83
95
84
func testPop (t * testing.T , q * FlatQueue ) {
96
- // empty
97
- _ , ok := q .Pop ()
98
- if ok {
99
- t .Fatal ()
100
- }
101
-
102
85
q .Push (1 , 10 )
103
86
q .Push (2 , 11 )
104
87
105
- id , ok := q .Pop ()
106
- if id != 1 || ! ok {
107
- t .Fatal ()
108
- }
109
-
110
- id , ok = q .Pop ()
111
- if id != 2 || ! ok {
88
+ if q .Pop () != 1 {
112
89
t .Fatal ()
113
90
}
114
91
115
- // empty
116
- _ , ok = q .Pop ()
117
- if ok {
92
+ if q .Pop () != 2 {
118
93
t .Fatal ()
119
94
}
120
95
}
@@ -127,40 +102,30 @@ func TestPeek(t *testing.T) {
127
102
func testPeek (t * testing.T , q * FlatQueue ) {
128
103
q .Push (1 , 10 )
129
104
130
- id , ok := q .Peek ()
131
- if id != 1 || ! ok {
105
+ if q .Peek () != 1 {
132
106
t .Fatal ()
133
107
}
134
108
135
109
q .Push (2 , 11 )
136
110
137
- id , ok = q .Peek ()
138
- if id != 1 || ! ok {
111
+ if q .Peek () != 1 {
139
112
t .Fatal ()
140
113
}
141
114
142
115
q .Push (3 , 9 )
143
116
144
- id , ok = q .Peek ()
145
- if id != 3 || ! ok {
117
+ if q .Peek () != 3 {
146
118
t .Fatal ()
147
119
}
148
120
149
121
q .Pop ()
150
122
151
- id , ok = q .Peek ()
152
- if id != 1 || ! ok {
123
+ if q .Peek () != 1 {
153
124
t .Fatal ()
154
125
}
155
126
156
127
q .Pop ()
157
128
q .Pop ()
158
-
159
- // empty
160
- _ , ok = q .Peek ()
161
- if ok {
162
- t .Fatal ()
163
- }
164
129
}
165
130
166
131
func TestPeekValue (t * testing.T ) {
@@ -169,48 +134,32 @@ func TestPeekValue(t *testing.T) {
169
134
}
170
135
171
136
func testPeekValue (t * testing.T , q * FlatQueue ) {
172
- // empty
173
- _ , ok := q .PeekValue ()
174
- if ok {
175
- t .Fatal ()
176
- }
177
-
178
137
q .Push (1 , 10 )
179
138
180
- value , ok := q .PeekValue ()
181
- if value != float64 (10 ) || ! ok {
139
+ if q .PeekValue () != float64 (10 ) {
182
140
t .Fatal ()
183
141
}
184
142
185
143
q .Push (2 , 11 )
186
144
187
- value , ok = q .PeekValue ()
188
- if value != float64 (10 ) || ! ok {
145
+ if q .PeekValue () != float64 (10 ) {
189
146
t .Fatal ()
190
147
}
191
148
192
149
q .Push (3 , 9 )
193
150
194
- value , ok = q .PeekValue ()
195
- if value != float64 (9 ) || ! ok {
151
+ if q .PeekValue () != float64 (9 ) {
196
152
t .Fatal ()
197
153
}
198
154
199
155
q .Pop ()
200
156
201
- value , ok = q .PeekValue ()
202
- if value != float64 (10 ) || ! ok {
157
+ if q .PeekValue () != float64 (10 ) {
203
158
t .Fatal ()
204
159
}
205
160
206
161
q .Pop ()
207
162
q .Pop ()
208
-
209
- // empty
210
- _ , ok = q .PeekValue ()
211
- if ok {
212
- t .Fatal ()
213
- }
214
163
}
215
164
216
165
func TestEdgeCasesWithFewElements (t * testing.T ) {
@@ -226,17 +175,42 @@ func testEdgeCasesWithFewElements(t *testing.T, q *FlatQueue) {
226
175
q .Push (2 , 2 )
227
176
q .Push (3 , 1 )
228
177
229
- id , ok := q .Pop ()
230
- if id != 3 || ! ok {
178
+ if q .Pop () != 3 {
231
179
t .Fatal ()
232
180
}
233
181
234
- id , ok = q .Pop ()
235
- if id != 2 || ! ok {
182
+ if q .Pop () != 2 {
236
183
t .Fatal ()
237
184
}
238
185
}
239
186
187
+ func TestPeekEmpty (t * testing.T ) {
188
+ defer func () {
189
+ if recover () == nil {
190
+ t .Fatal ()
191
+ }
192
+ }()
193
+ New ().Peek ()
194
+ }
195
+
196
+ func TestPeekValueEmpty (t * testing.T ) {
197
+ defer func () {
198
+ if recover () == nil {
199
+ t .Fatal ()
200
+ }
201
+ }()
202
+ New ().PeekValue ()
203
+ }
204
+
205
+ func TestPopEmpty (t * testing.T ) {
206
+ defer func () {
207
+ if recover () == nil {
208
+ t .Fatal ()
209
+ }
210
+ }()
211
+ New ().Pop ()
212
+ }
213
+
240
214
func BenchmarkPush (b * testing.B ) {
241
215
q := New ()
242
216
@@ -245,6 +219,7 @@ func BenchmarkPush(b *testing.B) {
245
219
values [i ] = randFloat64 (- 1000 , 1000 )
246
220
}
247
221
222
+ b .ReportAllocs ()
248
223
b .ResetTimer ()
249
224
250
225
for i := 0 ; i < b .N ; i ++ {
@@ -260,6 +235,7 @@ func BenchmarkPushWithCapacity(b *testing.B) {
260
235
values [i ] = randFloat64 (- 1000 , 1000 )
261
236
}
262
237
238
+ b .ReportAllocs ()
263
239
b .ResetTimer ()
264
240
265
241
for i := 0 ; i < b .N ; i ++ {
@@ -274,6 +250,7 @@ func BenchmarkPop(b *testing.B) {
274
250
q .Push (i , randFloat64 (- 1000 , 1000 ))
275
251
}
276
252
253
+ b .ReportAllocs ()
277
254
b .ResetTimer ()
278
255
279
256
for i := 0 ; i < b .N ; i ++ {
@@ -288,6 +265,7 @@ func BenchmarkPopWithCapacity(b *testing.B) {
288
265
q .Push (i , randFloat64 (- 1000 , 1000 ))
289
266
}
290
267
268
+ b .ReportAllocs ()
291
269
b .ResetTimer ()
292
270
293
271
for i := 0 ; i < b .N ; i ++ {
0 commit comments