-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathchallenge_spec.rb
More file actions
86 lines (63 loc) · 1.58 KB
/
Copy pathchallenge_spec.rb
File metadata and controls
86 lines (63 loc) · 1.58 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
require_relative 'solution'
class Queue
def add(e)
raise NotImplementedError
end
def remove
raise NotImplementedError
end
def peek
raise NotImplementedError
end
def empty?
raise NotImplementedError
end
end
describe 'queue' do
subject(:queue) { Queue.new }
it "adds elements to the queue" do
expect(queue.size).to eq(0)
queue.add('A')
queue.add('B')
expect(queue.size).to eq(2)
end
it "removes elements from the queue" do
queue.add('A')
queue.add('B')
expect(queue.remove).to eq('A')
expect(queue.remove).to eq('B')
expect(queue.size).to eq(0)
end
it "peeks elements inside the queue" do
expect(queue.peek).to eq(nil)
queue.add('A')
queue.add('B')
expect(queue.peek).to eq('A')
expect(queue.peek).to eq('A')
end
it "has valid (not) empty state" do
expect(queue.empty?).to eq(true)
queue.add('A')
expect(queue.empty?).to eq(false)
end
it "functions as a class properly" do
expect(queue.size).to eq(0)
expect(queue.empty?).to eq(true)
expect(queue.peek).to eq(nil)
expect(queue.remove).to eq(nil)
queue.add(10.55)
queue.add(20.99)
queue.add(50.33)
expect(queue.size).to eq(3)
expect(queue.empty?).to eq(false)
expect(queue.peek).to eq(10.55)
expect(queue.remove).to eq(10.55)
expect(queue.peek).to eq(20.99)
expect(queue.remove).to eq(20.99)
expect(queue.peek).to eq(50.33)
expect(queue.remove).to eq(50.33)
expect(queue.remove).to eq(nil)
expect(queue.size).to eq(0)
expect(queue.empty?).to eq(true)
end
end