@@ -53,6 +53,32 @@ let queue2 = Queue.makeSized(1)
5353Queue.push(0, queue2)
5454assert queue == queue2
5555
56+ // Queue.toList
57+ let queue = Queue.makeSized(3)
58+ assert Queue.toList(queue) == []
59+ Queue.push(0, queue)
60+ Queue.push(1, queue)
61+ Queue.push(2, queue)
62+ Queue.push(3, queue)
63+ assert Queue.toList(queue) == [0, 1, 2, 3]
64+ Queue.pop(queue)
65+ assert Queue.toList(queue) == [1, 2, 3]
66+ Queue.push(3, queue)
67+ assert Queue.toList(queue) == [1, 2, 3, 3]
68+ Queue.pop(queue)
69+ Queue.push(4, queue)
70+ Queue.push(5, queue)
71+ assert Queue.toList(queue) == [2, 3, 3, 4, 5]
72+
73+ // Queue.fromList
74+ let queue = Queue.makeSized(0)
75+ assert Queue.fromList([]) == queue
76+ Queue.push(0, queue)
77+ Queue.push(1, queue)
78+ Queue.push(2, queue)
79+ Queue.push(3, queue)
80+ assert Queue.fromList([0, 1, 2, 3]) == queue
81+
5682// test that the "circular" behavior of the circular queue works as expected
5783let queue = Queue.makeSized(4)
5884let push = x => () => Queue.push(x, queue)
@@ -237,4 +263,24 @@ module Immutable {
237263 assert Queue.size(Queue.empty) == 0
238264 assert Queue.size(sampleQueue) == 3
239265 assert Queue.size(Queue.pop(Queue.pop(sampleQueue))) == 1
266+
267+ // Queue.toList
268+ let sampleQueue = Queue.push(3, Queue.push(2, Queue.push(1, Queue.empty)))
269+ assert Queue.toList(Queue.empty) == []
270+ assert Queue.toList(sampleQueue) == [1, 2, 3]
271+ assert Queue.toList(Queue.pop(sampleQueue)) == [2, 3]
272+
273+ // Queue.fromList
274+ assert Queue.fromList([]) == Queue.empty
275+ let queue = Queue.fromList([1, 2, 3])
276+ assert Queue.peek(sampleQueue) == Queue.peek(queue)
277+ let queue = Queue.pop(queue)
278+ let sampleQueue = Queue.pop(sampleQueue)
279+ assert Queue.peek(sampleQueue) == Queue.peek(queue)
280+ let queue = Queue.pop(queue)
281+ let sampleQueue = Queue.pop(sampleQueue)
282+ assert Queue.peek(sampleQueue) == Queue.peek(queue)
283+ let queue = Queue.pop(queue)
284+ let sampleQueue = Queue.pop(sampleQueue)
285+ assert Queue.peek(sampleQueue) == Queue.peek(queue)
240286}
0 commit comments