11import { describe , it , expect , beforeEach } from 'vitest' ;
22
33import { MessageQueue } from './MessageQueue.ts' ;
4- import type { QueuedMessage } from './MessageQueue.ts' ;
54
65describe ( 'MessageQueue' , ( ) => {
76 let queue : MessageQueue ;
@@ -34,12 +33,8 @@ describe('MessageQueue', () => {
3433 queue . enqueue ( 'message2' ) ;
3534
3635 expect ( queue ) . toHaveLength ( 2 ) ;
37- expect ( queue . messages [ 0 ] ) . toStrictEqual ( {
38- message : 'message1' ,
39- } ) ;
40- expect ( queue . messages [ 1 ] ) . toStrictEqual ( {
41- message : 'message2' ,
42- } ) ;
36+ expect ( queue . messages [ 0 ] ) . toBe ( 'message1' ) ;
37+ expect ( queue . messages [ 1 ] ) . toBe ( 'message2' ) ;
4338 } ) ;
4439
4540 it ( 'drops oldest message when at capacity' , ( ) => {
@@ -55,9 +50,9 @@ describe('MessageQueue', () => {
5550 smallQueue . enqueue ( 'msg4' ) ;
5651
5752 expect ( smallQueue ) . toHaveLength ( 3 ) ;
58- expect ( smallQueue . messages [ 0 ] ?. message ) . toBe ( 'msg2' ) ;
59- expect ( smallQueue . messages [ 1 ] ?. message ) . toBe ( 'msg3' ) ;
60- expect ( smallQueue . messages [ 2 ] ?. message ) . toBe ( 'msg4' ) ;
53+ expect ( smallQueue . messages [ 0 ] ) . toBe ( 'msg2' ) ;
54+ expect ( smallQueue . messages [ 1 ] ) . toBe ( 'msg3' ) ;
55+ expect ( smallQueue . messages [ 2 ] ) . toBe ( 'msg4' ) ;
6156 } ) ;
6257
6358 it ( 'maintains FIFO order when dropping messages' , ( ) => {
@@ -69,10 +64,7 @@ describe('MessageQueue', () => {
6964 smallQueue . enqueue ( 'fourth' ) ;
7065
7166 // Should have dropped 'first' and 'second'
72- expect ( smallQueue . messages ) . toStrictEqual ( [
73- { message : 'third' } ,
74- { message : 'fourth' } ,
75- ] ) ;
67+ expect ( smallQueue . messages ) . toStrictEqual ( [ 'third' , 'fourth' ] ) ;
7668 } ) ;
7769 } ) ;
7870
@@ -83,11 +75,9 @@ describe('MessageQueue', () => {
8375
8476 const dequeued = queue . dequeue ( ) ;
8577
86- expect ( dequeued ) . toStrictEqual ( {
87- message : 'first' ,
88- } ) ;
78+ expect ( dequeued ) . toBe ( 'first' ) ;
8979 expect ( queue ) . toHaveLength ( 1 ) ;
90- expect ( queue . messages [ 0 ] ?. message ) . toBe ( 'second' ) ;
80+ expect ( queue . messages [ 0 ] ) . toBe ( 'second' ) ;
9181 } ) ;
9282
9383 it ( 'returns undefined for empty queue' , ( ) => {
@@ -99,9 +89,9 @@ describe('MessageQueue', () => {
9989 queue . enqueue ( '2' ) ;
10090 queue . enqueue ( '3' ) ;
10191
102- expect ( queue . dequeue ( ) ?. message ) . toBe ( '1' ) ;
103- expect ( queue . dequeue ( ) ?. message ) . toBe ( '2' ) ;
104- expect ( queue . dequeue ( ) ?. message ) . toBe ( '3' ) ;
92+ expect ( queue . dequeue ( ) ) . toBe ( '1' ) ;
93+ expect ( queue . dequeue ( ) ) . toBe ( '2' ) ;
94+ expect ( queue . dequeue ( ) ) . toBe ( '3' ) ;
10595 expect ( queue . dequeue ( ) ) . toBeUndefined ( ) ;
10696 } ) ;
10797 } ) ;
@@ -114,11 +104,7 @@ describe('MessageQueue', () => {
114104
115105 const allMessages = queue . dequeueAll ( ) ;
116106
117- expect ( allMessages ) . toStrictEqual ( [
118- { message : 'msg1' } ,
119- { message : 'msg2' } ,
120- { message : 'msg3' } ,
121- ] ) ;
107+ expect ( allMessages ) . toStrictEqual ( [ 'msg1' , 'msg2' , 'msg3' ] ) ;
122108 expect ( queue ) . toHaveLength ( 0 ) ;
123109 expect ( queue . messages ) . toStrictEqual ( [ ] ) ;
124110 } ) ;
@@ -134,7 +120,7 @@ describe('MessageQueue', () => {
134120 queue . enqueue ( 'msg' ) ;
135121
136122 const result = queue . dequeueAll ( ) ;
137- result . push ( { message : 'extra' } ) ;
123+ result . push ( 'extra' ) ;
138124
139125 // Queue should still be empty after dequeueAll
140126 expect ( queue ) . toHaveLength ( 0 ) ;
@@ -151,8 +137,8 @@ describe('MessageQueue', () => {
151137 queue . dropOldest ( ) ;
152138
153139 expect ( queue ) . toHaveLength ( 2 ) ;
154- expect ( queue . messages [ 0 ] ?. message ) . toBe ( 'second' ) ;
155- expect ( queue . messages [ 1 ] ?. message ) . toBe ( 'third' ) ;
140+ expect ( queue . messages [ 0 ] ) . toBe ( 'second' ) ;
141+ expect ( queue . messages [ 1 ] ) . toBe ( 'third' ) ;
156142 } ) ;
157143
158144 it ( 'handles empty queue gracefully' , ( ) => {
@@ -195,7 +181,7 @@ describe('MessageQueue', () => {
195181 queue . enqueue ( 'after' ) ;
196182
197183 expect ( queue ) . toHaveLength ( 1 ) ;
198- expect ( queue . messages [ 0 ] ?. message ) . toBe ( 'after' ) ;
184+ expect ( queue . messages [ 0 ] ) . toBe ( 'after' ) ;
199185 } ) ;
200186 } ) ;
201187
@@ -224,10 +210,7 @@ describe('MessageQueue', () => {
224210
225211 const { messages } = queue ;
226212
227- expect ( messages ) . toStrictEqual ( [
228- { message : 'msg1' } ,
229- { message : 'msg2' } ,
230- ] ) ;
213+ expect ( messages ) . toStrictEqual ( [ 'msg1' , 'msg2' ] ) ;
231214
232215 // TypeScript enforces read-only at compile time
233216 // At runtime, verify the array reference is the internal one
@@ -246,7 +229,7 @@ describe('MessageQueue', () => {
246229 queue . dequeue ( ) ;
247230 const messages3 = queue . messages ;
248231 expect ( messages3 ) . toHaveLength ( 1 ) ;
249- expect ( messages3 [ 0 ] ?. message ) . toBe ( 'second' ) ;
232+ expect ( messages3 [ 0 ] ) . toBe ( 'second' ) ;
250233 } ) ;
251234 } ) ;
252235
@@ -255,11 +238,7 @@ describe('MessageQueue', () => {
255238 queue . enqueue ( 'old1' ) ;
256239 queue . enqueue ( 'old2' ) ;
257240
258- const newMessages : QueuedMessage [ ] = [
259- { message : 'new1' } ,
260- { message : 'new2' } ,
261- { message : 'new3' } ,
262- ] ;
241+ const newMessages : string [ ] = [ 'new1' , 'new2' , 'new3' ] ;
263242
264243 queue . replaceAll ( newMessages ) ;
265244
@@ -277,29 +256,23 @@ describe('MessageQueue', () => {
277256 } ) ;
278257
279258 it ( 'is not affected by changes to input array' , ( ) => {
280- const messages : QueuedMessage [ ] = [ { message : 'msg1' } ] ;
259+ const messages : string [ ] = [ 'msg1' ] ;
281260
282261 queue . replaceAll ( messages ) ;
283262
284263 // Modify the input array
285- messages . push ( { message : 'msg2' } ) ;
286- messages [ 0 ] = { message : 'modified' } ;
264+ messages . push ( 'msg2' ) ;
265+ messages [ 0 ] = 'modified' ;
287266
288267 // Queue should not be affected
289268 expect ( queue ) . toHaveLength ( 1 ) ;
290- expect ( queue . messages [ 0 ] ) . toStrictEqual ( {
291- message : 'msg1' ,
292- } ) ;
269+ expect ( queue . messages [ 0 ] ) . toBe ( 'msg1' ) ;
293270 } ) ;
294271
295272 it ( 'works when replacing with more messages than capacity' , ( ) => {
296273 const smallQueue = new MessageQueue ( 2 ) ;
297274
298- const messages : QueuedMessage [ ] = [
299- { message : 'msg1' } ,
300- { message : 'msg2' } ,
301- { message : 'msg3' } ,
302- ] ;
275+ const messages : string [ ] = [ 'msg1' , 'msg2' , 'msg3' ] ;
303276
304277 smallQueue . replaceAll ( messages ) ;
305278
@@ -316,15 +289,15 @@ describe('MessageQueue', () => {
316289 queue . enqueue ( 'msg2' ) ;
317290
318291 const first = queue . dequeue ( ) ;
319- expect ( first ?. message ) . toBe ( 'msg1' ) ;
292+ expect ( first ) . toBe ( 'msg1' ) ;
320293
321294 queue . enqueue ( 'msg3' ) ;
322295 queue . enqueue ( 'msg4' ) ;
323296
324297 expect ( queue ) . toHaveLength ( 3 ) ;
325298
326299 queue . dropOldest ( ) ;
327- expect ( queue . messages [ 0 ] ?. message ) . toBe ( 'msg3' ) ;
300+ expect ( queue . messages [ 0 ] ) . toBe ( 'msg3' ) ;
328301
329302 const all = queue . dequeueAll ( ) ;
330303 expect ( all ) . toHaveLength ( 2 ) ;
0 commit comments