1
+ include RSpec
2
+
3
+ require_relative 'min_heap'
4
+
5
+ RSpec . describe MinHeap , type : Class do
6
+ let ( :root ) { Node . new ( "The Matrix" , 87 ) }
7
+
8
+ let ( :tree ) { MinHeap . new ( root ) }
9
+ let ( :node1 ) { Node . new ( "Pacific Rim" , 72 ) }
10
+ let ( :node2 ) { Node . new ( "Braveheart" , 78 ) }
11
+ let ( :node3 ) { Node . new ( "Star Wars: Return of the Jedi" , 80 ) }
12
+ let ( :node4 ) { Node . new ( "Donnie Darko" , 85 ) }
13
+ let ( :node5 ) { Node . new ( "Inception" , 86 ) }
14
+ let ( :node6 ) { Node . new ( "District 9" , 90 ) }
15
+ let ( :node7 ) { Node . new ( "The Shawshank Redemption" , 91 ) }
16
+ let ( :node8 ) { Node . new ( "The Martian" , 92 ) }
17
+ let ( :node9 ) { Node . new ( "Star Wars: A New Hope" , 93 ) }
18
+ let ( :node10 ) { Node . new ( "Star Wars: The Empire Strikes Back" , 94 ) }
19
+ let ( :node11 ) { Node . new ( "Mad Max 2: The Road Warrior" , 98 ) }
20
+ describe "#insert(data)" do
21
+ it "properly inserts a new node as a left-right child" do
22
+ tree . insert ( root , node4 ) #85
23
+ tree . insert ( root , node5 ) #86
24
+ tree . insert ( root , node6 ) #90
25
+ tree . insert ( root , node2 ) #78
26
+ expect ( root . rating ) . to eq 78
27
+ expect ( root . left . rating ) . to eq 85
28
+ expect ( root . right . rating ) . to eq 86
29
+ expect ( root . left . left . rating ) . to eq 90
30
+ expect ( root . left . right . rating ) . to eq 87
31
+ end
32
+
33
+ it "properly inserts a new node as a right-left child" do
34
+ tree . insert ( root , node9 ) #93
35
+ tree . insert ( root , node8 ) #92
36
+ tree . insert ( root , node2 ) #78
37
+ tree . insert ( root , node5 ) #86
38
+ tree . insert ( root , node11 ) #98
39
+ expect ( root . rating ) . to eq 78
40
+ expect ( root . left . rating ) . to eq 86
41
+ expect ( root . right . rating ) . to eq 92
42
+ expect ( root . left . left . rating ) . to eq 93
43
+ expect ( root . left . right . rating ) . to eq 87
44
+ expect ( root . right . left . rating ) . to eq 98
45
+ end
46
+ end
47
+
48
+ describe "#find(data)" do
49
+ it "properly finds a left-right node" do
50
+ tree . insert ( root , node2 ) #78
51
+ tree . insert ( root , node4 ) #85
52
+ tree . insert ( root , node5 ) #86
53
+ tree . insert ( root , node6 ) #90
54
+ expect ( tree . find ( root , node6 . rating ) . rating ) . to eq 90
55
+ end
56
+
57
+ it "properly finds a right-left node" do
58
+ tree . insert ( root , node2 ) #78
59
+ tree . insert ( root , node5 ) #86
60
+ tree . insert ( root , node11 ) #98
61
+ tree . insert ( root , node9 ) #93
62
+ tree . insert ( root , node8 ) #92
63
+ expect ( tree . find ( root , node8 . rating ) . rating ) . to eq 92
64
+ end
65
+ end
66
+
67
+ describe "#delete(data)" do
68
+ it "properly deletes a left-right node" do
69
+ tree . insert ( root , node6 ) #90
70
+ tree . insert ( root , node2 ) #78
71
+ tree . insert ( root , node4 ) #85
72
+ tree . insert ( root , node5 ) #86
73
+ tree . delete ( root , node5 . rating )
74
+ expect ( tree . find ( root , node5 . rating ) . rating ) . to be_nil
75
+ end
76
+
77
+ it "properly deletes a right-left node" do
78
+ tree . insert ( root , node9 ) #93
79
+ tree . insert ( root , node8 ) #92
80
+ tree . insert ( root , node2 ) #78
81
+ tree . insert ( root , node5 ) #86
82
+ tree . insert ( root , node11 ) #98
83
+ tree . delete ( root , node11 . rating )
84
+ expect ( tree . find ( root , node11 . rating ) . rating ) . to be_nil
85
+ end
86
+ end
87
+
88
+ describe "#printf" do
89
+ specify {
90
+ expected_output = "Pacific Rim: 72\n Braveheart: 78\n Star Wars: Return of the Jedi: 80\n The Matrix: 87\n District 9: 90\n Star Wars: The Empire Strikes Back: 94\n Inception: 86\n Star Wars: A New Hope: 93\n The Shawshank Redemption: 91\n The Martian: 92\n Mad Max 2: The Road Warrior: 98\n "
91
+ tree . insert ( root , node9 ) #93
92
+ tree . insert ( root , node10 ) #94
93
+ tree . insert ( root , node3 ) #80
94
+ tree . insert ( root , node8 ) #92
95
+ tree . insert ( root , node1 ) #72
96
+ tree . insert ( root , node5 ) #86
97
+ tree . insert ( root , node2 ) #78
98
+ tree . insert ( root , node7 ) #91
99
+ tree . insert ( root , node6 ) #90
100
+ tree . insert ( root , node11 ) #98
101
+ expect { tree . printf } . to output ( expected_output ) . to_stdout
102
+ }
103
+ end
104
+ end
0 commit comments