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