File tree Expand file tree Collapse file tree 2 files changed +53
-0
lines changed
Expand file tree Collapse file tree 2 files changed +53
-0
lines changed Original file line number Diff line number Diff line change @@ -48,3 +48,50 @@ test('size', t => {
4848 queue . dequeue ( ) ;
4949 t . is ( queue . size , 0 ) ;
5050} ) ;
51+
52+ test ( 'default priority' , t => {
53+ const queue = new PriorityQueue < Item > ( ) ;
54+
55+ queue . queue ( { id : 3 } , - 2 ) ;
56+ queue . queue ( { id : 1 } ) ;
57+ queue . queue ( { id : 1 } ) ;
58+ queue . queue ( { id : 2 } , - 1 ) ;
59+
60+ t . deepEqual ( queue . dequeue ( ) , { id : 1 } ) ;
61+ t . deepEqual ( queue . dequeue ( ) , { id : 1 } ) ;
62+ t . deepEqual ( queue . dequeue ( ) , { id : 2 } ) ;
63+ t . deepEqual ( queue . dequeue ( ) , { id : 3 } ) ;
64+ } ) ;
65+
66+ test ( 'duplicate throws error' , t => {
67+ const queue = new PriorityQueue < number > ( ) ;
68+
69+ const value = 42 ;
70+
71+ queue . queue ( value ) ;
72+
73+ const reason = t . throws ( ( ) => {
74+ queue . queue ( value , 24 ) ;
75+ } ) ;
76+
77+ t . is ( reason . message , 'Cannot add element that already exist' ) ;
78+ } ) ;
79+
80+ test ( 'add/poll throws error' , t => {
81+ t . plan ( 2 ) ;
82+
83+ const queue = new PriorityQueue < any > ( ) ;
84+ let errors = 0 ;
85+
86+ try {
87+ queue . add ( 'value' ) ;
88+ } catch ( e ) {
89+ t . is ( ++ errors , 1 ) ;
90+ }
91+
92+ try {
93+ queue . poll ( ) ;
94+ } catch ( e ) {
95+ t . is ( ++ errors , 2 ) ;
96+ }
97+ } ) ;
Original file line number Diff line number Diff line change @@ -75,10 +75,16 @@ export class PriorityQueue<T> extends MaxHeapTree<T> implements Queue<T> {
7575 return element ;
7676 }
7777
78+ /**
79+ * @private
80+ */
7881 public add ( element : T ) : this {
7982 throw new Error ( 'Use `queue` method instead' ) ;
8083 }
8184
85+ /**
86+ * @private
87+ */
8288 public poll ( ) : T {
8389 throw new Error ( 'Use `dequeue` method instead' ) ;
8490 }
You can’t perform that action at this time.
0 commit comments