File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1+ package clusters
2+
3+ import (
4+ "testing"
5+ )
6+
7+ func TestQueueEmptyWhenCreated (t * testing.T ) {
8+ queue := newPriorityQueue (0 )
9+ if queue .NotEmpty () {
10+ t .Error ("Newly created queue is not empty" )
11+ }
12+ }
13+
14+ func TestQueueNowEmptyAfterAdd (t * testing.T ) {
15+ queue := newPriorityQueue (0 )
16+
17+ queue .Push (& pItem {
18+ v : 0 ,
19+ p : 0.5 ,
20+ })
21+
22+ if ! queue .NotEmpty () {
23+ t .Error ("Queue is empty after a single add" )
24+ }
25+ }
26+
27+ func TestQueueReturnsInPriorityOrder (t * testing.T ) {
28+ queue := newPriorityQueue (0 )
29+
30+ var (
31+ itemOne = & pItem {
32+ v : 0 ,
33+ p : 0.5 ,
34+ }
35+ itemTwo = & pItem {
36+ v : 1 ,
37+ p : 0.6 ,
38+ }
39+ )
40+
41+ queue .Push (itemTwo )
42+ queue .Push (itemOne )
43+
44+ if queue .Pop ().(* pItem ) != itemOne {
45+ t .Error ("Queue is should return itemOne first" )
46+ }
47+
48+ if queue .Pop ().(* pItem ) != itemTwo {
49+ t .Error ("Queue is should return itemTwo next" )
50+ }
51+
52+ if queue .NotEmpty () {
53+ t .Error ("Queue is not empty" )
54+ }
55+ }
56+
57+ func TestQueueReturnsInPriorityOrderAfterUpdate (t * testing.T ) {
58+ queue := newPriorityQueue (0 )
59+
60+ var (
61+ itemOne = & pItem {
62+ v : 0 ,
63+ p : 0.5 ,
64+ }
65+ itemTwo = & pItem {
66+ v : 1 ,
67+ p : 0.6 ,
68+ }
69+ )
70+
71+ queue .Push (itemTwo )
72+ queue .Push (itemOne )
73+
74+ queue .Update (itemTwo , 1 , 0.4 )
75+
76+ if queue .Pop ().(* pItem ) != itemTwo {
77+ t .Error ("Queue is should return itemTwo first" )
78+ }
79+
80+ if queue .Pop ().(* pItem ) != itemOne {
81+ t .Error ("Queue is should return itemOne next" )
82+ }
83+
84+ if queue .NotEmpty () {
85+ t .Error ("Queue is not empty" )
86+ }
87+ }
You can’t perform that action at this time.
0 commit comments