forked from AdaGold/stacks-queues
-
Notifications
You must be signed in to change notification settings - Fork 41
Expand file tree
/
Copy pathqueue_test.rb
More file actions
144 lines (122 loc) · 2.8 KB
/
queue_test.rb
File metadata and controls
144 lines (122 loc) · 2.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
require_relative 'test_helper'
Minitest::Reporters.use! Minitest::Reporters::SpecReporter.new
describe "Test Queue Implementation" do
it "creates a Queue" do
q = Queue.new
expect(q.class).must_equal Queue
end
it "adds something to an empty Queue" do
q = Queue.new
q.enqueue(10)
expect(q.to_s).must_equal "[10]"
end
it "adds multiple somethings to a Queue" do
q = Queue.new
q.enqueue(10)
q.enqueue(20)
q.enqueue(30)
expect(q.to_s).must_equal "[10, 20, 30]"
end
it "starts the Queue empty" do
q = Queue.new
q.empty?.must_equal true
end
it "a Queue is empty after removing all the elements" do
q = Queue.new
q.enqueue(5)
q.enqueue(6)
expect(q.dequeue).must_equal 5
expect(q.dequeue).must_equal 6
expect(q.empty?).must_equal true
end
it "can remove something from the Queue" do
q = Queue.new
q.enqueue(5)
removed = q.dequeue
expect(removed).must_equal 5
expect(q.empty?).must_equal true
end
it "removes the right something (FIFO)" do
q = Queue.new
q.enqueue(5)
q.enqueue(3)
q.enqueue(7)
removed = q.dequeue
expect(removed).must_equal 5
expect(q.to_s).must_equal "[3, 7]"
end
it "properly adjusts the size with enqueueing and dequeueing" do
q = Queue.new
expect(q.empty?).must_equal true
q.enqueue(-1)
q.enqueue(-60)
expect(q.empty?).must_equal false
q.dequeue
q.dequeue
expect(q.empty?).must_equal true
end
it "returns the front element in the Queue" do
q = Queue.new
q.enqueue(40)
q.enqueue(22)
q.enqueue(3)
q.dequeue
expect(q.dequeue).must_equal 22
end
it "works with a large Queue" do
q = Queue.new
q.enqueue(10)
q.enqueue(20)
q.enqueue(30)
expect(q.dequeue).must_equal 10
expect(q.dequeue).must_equal 20
q.enqueue(40)
q.enqueue(50)
q.enqueue(60)
q.enqueue(70)
q.enqueue(80)
q.enqueue(90)
q.enqueue(100)
q.enqueue(110)
q.enqueue(120)
q.enqueue(130)
q.enqueue(140)
q.enqueue(150)
q.enqueue(160)
q.enqueue(170)
q.enqueue(180)
q.enqueue(190)
q.enqueue(200)
q.enqueue(210)
q.dequeue
expect(q.to_s).must_equal('[40, 50, 60, 70, 80, 90, 100, 110, 120, 130, 140, 150, 160, 170, 180, 190, 200, 210]')
end
it "calculates queues length/size" do
q = Queue.new
q.enqueue(1)
q.enqueue(1)
q.enqueue(1)
q.enqueue(1)
q.enqueue(1)
q.enqueue(1)
q.enqueue(1)
q.enqueue(1)
q.enqueue(1)
q.enqueue(1)
q.enqueue(1)
q.enqueue(1)
q.enqueue(1)
q.enqueue(1)
q.enqueue(1)
q.enqueue(1)
q.enqueue(1)
q.enqueue(1)
q.enqueue(1)
q.enqueue(1)
q.dequeue
q.dequeue
q.dequeue
q.dequeue
expect(q.size).must_equal(16)
end
end