hamster 0.1.19 → 0.1.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (144) hide show
  1. data/History.rdoc +10 -0
  2. data/README.rdoc +1 -1
  3. data/lib/hamster/list.rb +19 -1
  4. data/lib/hamster/stack.rb +4 -0
  5. data/lib/hamster/version.rb +1 -1
  6. data/spec/hamster/hash/all_spec.rb +5 -5
  7. data/spec/hamster/hash/any_spec.rb +5 -5
  8. data/spec/hamster/hash/eql_spec.rb +2 -2
  9. data/spec/hamster/hash/has_key_spec.rb +2 -2
  10. data/spec/hamster/hash/none_spec.rb +5 -5
  11. data/spec/hamster/list/all_spec.rb +44 -12
  12. data/spec/hamster/list/any_spec.rb +8 -8
  13. data/spec/hamster/list/append_spec.rb +2 -2
  14. data/spec/hamster/list/break_spec.rb +183 -0
  15. data/spec/hamster/list/cadr_spec.rb +7 -2
  16. data/spec/hamster/list/clear_spec.rb +36 -0
  17. data/spec/hamster/list/copying_spec.rb +3 -2
  18. data/spec/hamster/list/cycle_spec.rb +20 -7
  19. data/spec/hamster/list/drop_spec.rb +10 -5
  20. data/spec/hamster/list/drop_while_spec.rb +17 -5
  21. data/spec/hamster/list/each_spec.rb +15 -8
  22. data/spec/hamster/list/empty_spec.rb +2 -2
  23. data/spec/hamster/list/eql_spec.rb +6 -6
  24. data/spec/hamster/list/filter_spec.rb +14 -6
  25. data/spec/hamster/list/find_spec.rb +2 -2
  26. data/spec/hamster/list/grep_spec.rb +10 -5
  27. data/spec/hamster/list/head_spec.rb +16 -12
  28. data/spec/hamster/list/include_spec.rb +2 -2
  29. data/spec/hamster/list/inspect_spec.rb +2 -2
  30. data/spec/hamster/list/map_spec.rb +18 -6
  31. data/spec/hamster/list/maximum_spec.rb +2 -2
  32. data/spec/hamster/list/minimum_spec.rb +2 -2
  33. data/spec/hamster/list/none_spec.rb +8 -8
  34. data/spec/hamster/list/one_spec.rb +9 -9
  35. data/spec/hamster/list/partition_spec.rb +87 -39
  36. data/spec/hamster/list/reduce_spec.rb +2 -2
  37. data/spec/hamster/list/reject_spec.rb +14 -6
  38. data/spec/hamster/list/reverse_spec.rb +9 -4
  39. data/spec/hamster/list/size_spec.rb +2 -2
  40. data/spec/hamster/list/span_spec.rb +183 -0
  41. data/spec/hamster/list/split_at_spec.rb +68 -17
  42. data/spec/hamster/list/tail_spec.rb +2 -2
  43. data/spec/hamster/list/take_spec.rb +10 -5
  44. data/spec/hamster/list/take_while_spec.rb +15 -6
  45. data/spec/hamster/list/to_a_spec.rb +2 -2
  46. data/spec/hamster/list/to_ary_spec.rb +3 -3
  47. data/spec/hamster/list/to_list_spec.rb +3 -2
  48. data/spec/hamster/list/zip_spec.rb +16 -7
  49. data/spec/hamster/set/all_spec.rb +6 -6
  50. data/spec/hamster/set/any_spec.rb +6 -6
  51. data/spec/hamster/set/eql_spec.rb +2 -2
  52. data/spec/hamster/set/include_spec.rb +2 -2
  53. data/spec/hamster/set/none_spec.rb +6 -6
  54. data/spec/hamster/set/to_list.rb +1 -1
  55. data/spec/hamster/stack/clear_spec.rb +36 -0
  56. data/spec/hamster/stack/eql_spec.rb +2 -2
  57. data/spec/hamster/stack/pop_spec.rb +2 -2
  58. data/spec/hamster/trie/remove_spec.rb +3 -3
  59. data/spec/spec_helper.rb +2 -0
  60. metadata +9 -89
  61. data/lib/hamster/core_ext/enumerable.rbc +0 -481
  62. data/lib/hamster/core_ext/io.rbc +0 -604
  63. data/lib/hamster/hash.rbc +0 -3117
  64. data/lib/hamster/list.rbc +0 -7274
  65. data/lib/hamster/set.rbc +0 -3152
  66. data/lib/hamster/stack.rbc +0 -1358
  67. data/lib/hamster/trie.rbc +0 -3416
  68. data/spec/hamster/core_ext/enumerable_spec.rbc +0 -747
  69. data/spec/hamster/core_ext/io_spec.rbc +0 -409
  70. data/spec/hamster/hash/all_spec.rbc +0 -1214
  71. data/spec/hamster/hash/any_spec.rbc +0 -1495
  72. data/spec/hamster/hash/construction_spec.rbc +0 -742
  73. data/spec/hamster/hash/copying_spec.rbc +0 -519
  74. data/spec/hamster/hash/each_spec.rbc +0 -908
  75. data/spec/hamster/hash/empty_spec.rbc +0 -517
  76. data/spec/hamster/hash/eql_spec.rbc +0 -1702
  77. data/spec/hamster/hash/filter_spec.rbc +0 -1433
  78. data/spec/hamster/hash/get_spec.rbc +0 -791
  79. data/spec/hamster/hash/has_key_spec.rbc +0 -719
  80. data/spec/hamster/hash/map_spec.rbc +0 -1454
  81. data/spec/hamster/hash/none_spec.rbc +0 -1399
  82. data/spec/hamster/hash/put_spec.rbc +0 -1334
  83. data/spec/hamster/hash/reduce_spec.rbc +0 -1234
  84. data/spec/hamster/hash/reject_spec.rbc +0 -1445
  85. data/spec/hamster/hash/remove_spec.rbc +0 -1135
  86. data/spec/hamster/hash/size_spec.rbc +0 -596
  87. data/spec/hamster/list/all_spec.rbc +0 -1760
  88. data/spec/hamster/list/any_spec.rbc +0 -1888
  89. data/spec/hamster/list/append_spec.rbc +0 -1555
  90. data/spec/hamster/list/cadr_spec.rbc +0 -855
  91. data/spec/hamster/list/cons_spec.rbc +0 -848
  92. data/spec/hamster/list/construction_spec.rbc +0 -1732
  93. data/spec/hamster/list/copying_spec.rbc +0 -555
  94. data/spec/hamster/list/drop_spec.rbc +0 -1081
  95. data/spec/hamster/list/drop_while_spec.rbc +0 -1286
  96. data/spec/hamster/list/each_spec.rbc +0 -1365
  97. data/spec/hamster/list/empty_spec.rbc +0 -571
  98. data/spec/hamster/list/eql_spec.rbc +0 -1819
  99. data/spec/hamster/list/filter_spec.rbc +0 -1595
  100. data/spec/hamster/list/find_spec.rbc +0 -1456
  101. data/spec/hamster/list/head_spec.rbc +0 -575
  102. data/spec/hamster/list/include_spec.rbc +0 -1173
  103. data/spec/hamster/list/inspect_spec.rbc +0 -995
  104. data/spec/hamster/list/map_spec.rbc +0 -1545
  105. data/spec/hamster/list/none_spec.rbc +0 -1788
  106. data/spec/hamster/list/partition_spec.rbc +0 -2715
  107. data/spec/hamster/list/reduce_spec.rbc +0 -2081
  108. data/spec/hamster/list/reject_spec.rbc +0 -1590
  109. data/spec/hamster/list/reverse_spec.rbc +0 -1061
  110. data/spec/hamster/list/size_spec.rbc +0 -1063
  111. data/spec/hamster/list/tail_spec.rbc +0 -595
  112. data/spec/hamster/list/take_spec.rbc +0 -1075
  113. data/spec/hamster/list/take_while_spec.rbc +0 -1446
  114. data/spec/hamster/list/to_a_spec.rbc +0 -961
  115. data/spec/hamster/list/to_ary_spec.rbc +0 -1080
  116. data/spec/hamster/set/add_spec.rbc +0 -1039
  117. data/spec/hamster/set/all_spec.rbc +0 -1316
  118. data/spec/hamster/set/any_spec.rbc +0 -1444
  119. data/spec/hamster/set/construction_spec.rbc +0 -422
  120. data/spec/hamster/set/copying_spec.rbc +0 -469
  121. data/spec/hamster/set/each_spec.rbc +0 -820
  122. data/spec/hamster/set/empty_spec.rbc +0 -452
  123. data/spec/hamster/set/eql_spec.rbc +0 -1309
  124. data/spec/hamster/set/filter_spec.rbc +0 -1272
  125. data/spec/hamster/set/include_spec.rbc +0 -657
  126. data/spec/hamster/set/map_spec.rbc +0 -1285
  127. data/spec/hamster/set/none_spec.rbc +0 -1344
  128. data/spec/hamster/set/reduce_spec.rbc +0 -1177
  129. data/spec/hamster/set/reject_spec.rbc +0 -1273
  130. data/spec/hamster/set/remove_spec.rbc +0 -947
  131. data/spec/hamster/set/size_spec.rbc +0 -531
  132. data/spec/hamster/set/to_a_spec.rbc +0 -559
  133. data/spec/hamster/stack/construction_spec.rbc +0 -862
  134. data/spec/hamster/stack/copying_spec.rbc +0 -555
  135. data/spec/hamster/stack/empty_spec.rbc +0 -571
  136. data/spec/hamster/stack/eql_spec.rbc +0 -1281
  137. data/spec/hamster/stack/inspect_spec.rbc +0 -586
  138. data/spec/hamster/stack/pop_spec.rbc +0 -1099
  139. data/spec/hamster/stack/push_spec.rbc +0 -848
  140. data/spec/hamster/stack/size_spec.rbc +0 -650
  141. data/spec/hamster/stack/top_spec.rbc +0 -676
  142. data/spec/hamster/trie/remove_spec.rbc +0 -40
  143. data/spec/spec_helper.rbc +0 -163
  144. data/tasks/spec.rbc +0 -201
@@ -9,11 +9,11 @@ describe Hamster::List do
9
9
  describe "doesn't run out of stack space on a really big" do
10
10
 
11
11
  it "stream" do
12
- @list = Hamster.interval(0, 10000)
12
+ @list = Hamster.interval(0, STACK_OVERFLOW_DEPTH)
13
13
  end
14
14
 
15
15
  it "list" do
16
- @list = (0..10000).reduce(Hamster.list) { |list, i| list.cons(i) }
16
+ @list = (0...STACK_OVERFLOW_DEPTH).reduce(Hamster.list) { |list, i| list.cons(i) }
17
17
  end
18
18
 
19
19
  after do
@@ -31,11 +31,16 @@ describe Hamster::List do
31
31
  describe "on #{values.inspect}" do
32
32
 
33
33
  before do
34
- @list = Hamster.list(*values)
34
+ @original = Hamster.list(*values)
35
+ @result = @original.reverse { |item| item.downcase }
36
+ end
37
+
38
+ it "preserves the original" do
39
+ @original.should == Hamster.list(*values)
35
40
  end
36
41
 
37
42
  it "returns #{expected.inspect}" do
38
- @list.reverse { |item| item.downcase }.should == Hamster.list(*expected)
43
+ @result.should == Hamster.list(*expected)
39
44
  end
40
45
 
41
46
  end
@@ -11,11 +11,11 @@ describe Hamster::List do
11
11
  describe "doesn't run out of stack space on a really big" do
12
12
 
13
13
  it "stream" do
14
- @list = Hamster.interval(0, 10000)
14
+ @list = Hamster.interval(0, STACK_OVERFLOW_DEPTH)
15
15
  end
16
16
 
17
17
  it "list" do
18
- @list = (0..10000).reduce(Hamster.list) { |list, i| list.cons(i) }
18
+ @list = (0...STACK_OVERFLOW_DEPTH).reduce(Hamster.list) { |list, i| list.cons(i) }
19
19
  end
20
20
 
21
21
  after do
@@ -0,0 +1,183 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
2
+
3
+ require 'hamster/list'
4
+
5
+ describe Hamster::List do
6
+
7
+ shared_examples_for "#span without a block" do
8
+
9
+ describe "without a block" do
10
+
11
+ before do
12
+ @result = @original.span
13
+ @prefix = @result.car
14
+ @remainder = @result.cadr
15
+ end
16
+
17
+ it "returns a list with two items" do
18
+ @result.size.should == 2
19
+ end
20
+
21
+ it "returns self as the prefix" do
22
+ @prefix.should equal(@original)
23
+ end
24
+
25
+ it "leaves the remainder empty" do
26
+ @remainder.should be_empty
27
+ end
28
+
29
+ end
30
+
31
+ end
32
+
33
+ shared_examples_for "#span is lazy" do
34
+
35
+ it "is lazy" do
36
+ count = 0
37
+ @original.span { |item| count += 1; true }
38
+ count.should <= 1
39
+ end
40
+
41
+ end
42
+
43
+ describe "#span" do
44
+
45
+ describe "doesn't run out of stack space on a really big" do
46
+
47
+ it "stream" do
48
+ @list = Hamster.interval(0, STACK_OVERFLOW_DEPTH)
49
+ end
50
+
51
+ it "list" do
52
+ @list = (0...STACK_OVERFLOW_DEPTH).reduce(Hamster.list) { |list, i| list.cons(i) }
53
+ end
54
+
55
+ after do
56
+ @list.span { |item| item < 5000 }
57
+ end
58
+
59
+ end
60
+
61
+ describe "on a stream" do
62
+
63
+ before do
64
+ count = 0
65
+ @original = Hamster.stream { count += 1 }
66
+ end
67
+
68
+ describe "with a block" do
69
+
70
+ before do
71
+ @result = @original.span { |item| item <= 5 }
72
+ @prefix = @result.car
73
+ @remainder = @result.cadr
74
+ end
75
+
76
+ it "returns a list with two items" do
77
+ @result.size.should == 2
78
+ end
79
+
80
+ it "correctly identifies the prefix" do
81
+ @prefix.should == Hamster.list(1, 2, 3, 4, 5)
82
+ end
83
+
84
+ it "correctly identifies the remainder" do
85
+ @remainder.take(5).should == Hamster.list(6, 7, 8, 9, 10)
86
+ end
87
+
88
+ end
89
+
90
+ it_should_behave_like "#span without a block"
91
+
92
+ it_should_behave_like "#span is lazy"
93
+
94
+ end
95
+
96
+ describe "on an interval" do
97
+
98
+ before do
99
+ @original = Hamster.interval(1, 10)
100
+ end
101
+
102
+ describe "with a block" do
103
+
104
+ before do
105
+ @result = @original.span { |item| item <= 5 }
106
+ @prefix = @result.car
107
+ @remainder = @result.cadr
108
+ end
109
+
110
+ it "returns a list with two items" do
111
+ @result.size.should == 2
112
+ end
113
+
114
+ it "correctly identifies the prefix" do
115
+ @prefix.should == Hamster.list(1, 2, 3, 4, 5)
116
+ end
117
+
118
+ it "correctly identifies the remainder" do
119
+ @remainder.should == Hamster.list(6, 7, 8, 9, 10)
120
+ end
121
+
122
+ end
123
+
124
+ it_should_behave_like "#span without a block"
125
+
126
+ it_should_behave_like "#span is lazy"
127
+
128
+ end
129
+
130
+ [
131
+ [[], [], []],
132
+ [[1], [1], []],
133
+ [[1, 2], [1, 2], []],
134
+ [[1, 2, 3], [1, 2], [3]],
135
+ [[1, 2, 3, 4], [1, 2], [3, 4]],
136
+ [[2, 3, 4], [2], [3, 4]],
137
+ [[3, 4], [], [3, 4]],
138
+ [[4], [], [4]],
139
+ ].each do |values, expected_prefix, expected_remainder|
140
+
141
+ describe "on #{values.inspect}" do
142
+
143
+ before do
144
+ @original = Hamster.list(*values)
145
+ end
146
+
147
+ describe "with a block" do
148
+
149
+ before do
150
+ @result = @original.span { |item| item <= 2 }
151
+ @prefix = @result.car
152
+ @remainder = @result.cadr
153
+ end
154
+
155
+ it "preserves the original" do
156
+ @original.should == Hamster.list(*values)
157
+ end
158
+
159
+ it "returns a list with two items" do
160
+ @result.size.should == 2
161
+ end
162
+
163
+ it "correctly identifies the prefix" do
164
+ @prefix.should == Hamster.list(*expected_prefix)
165
+ end
166
+
167
+ it "correctly identifies the remainder" do
168
+ @remainder.should == Hamster.list(*expected_remainder)
169
+ end
170
+
171
+ end
172
+
173
+ it_should_behave_like "#span without a block"
174
+
175
+ it_should_behave_like "#span is lazy"
176
+
177
+ end
178
+
179
+ end
180
+
181
+ end
182
+
183
+ end
@@ -9,44 +9,58 @@ describe Hamster::List do
9
9
  describe "doesn't run out of stack space on a really big" do
10
10
 
11
11
  it "stream" do
12
- @list = Hamster.interval(0, 10000)
12
+ @list = Hamster.interval(0, STACK_OVERFLOW_DEPTH)
13
13
  end
14
14
 
15
15
  it "list" do
16
- @list = (0..10000).reduce(Hamster.list) { |list, i| list.cons(i) }
16
+ @list = (0...STACK_OVERFLOW_DEPTH).reduce(Hamster.list) { |list, i| list.cons(i) }
17
17
  end
18
18
 
19
19
  after do
20
- @list.split_at(5000)
20
+ @list.split_at(STACK_OVERFLOW_DEPTH)
21
21
  end
22
22
 
23
23
  end
24
24
 
25
- describe "on an empty list" do
25
+ describe "on a stream" do
26
26
 
27
27
  before do
28
- splits = Hamster.list.split_at(4)
29
- @prefix = splits.car
30
- @remainder = splits.cadr
28
+ count = 0
29
+ counter = Hamster.stream { count += 1 }
30
+ @result = counter.split_at(5)
31
+ @prefix = @result.car
32
+ @remainder = @result.cadr
31
33
  end
32
34
 
33
- it "returns the empty list for the prefix" do
34
- @prefix.should equal(Hamster.list)
35
+ it "returns a list with two items" do
36
+ @result.size.should == 2
35
37
  end
36
38
 
37
- it "returns the empty list for the remainder" do
38
- @remainder.should equal(Hamster.list)
39
+ it "correctly identifies the prefix" do
40
+ @prefix.should == Hamster.list(1, 2, 3, 4, 5)
41
+ end
42
+
43
+ it "correctly identifies the remainder" do
44
+ @remainder.take(5).should == Hamster.list(6, 7, 8, 9, 10)
39
45
  end
40
46
 
41
47
  end
42
48
 
43
- describe "on a non-empty list" do
49
+ describe "on an interval" do
44
50
 
45
51
  before do
46
- interval = Hamster.interval(1, 11)
47
- splits = interval.split_at(5)
48
- @prefix = splits.car
49
- @remainder = splits.cadr
52
+ @original = Hamster.interval(1, 10)
53
+ @result = @original.split_at(5)
54
+ @prefix = @result.car
55
+ @remainder = @result.cadr
56
+ end
57
+
58
+ it "preserves the original" do
59
+ @original.should == Hamster.interval(1, 10)
60
+ end
61
+
62
+ it "returns a list with two items" do
63
+ @result.size.should == 2
50
64
  end
51
65
 
52
66
  it "correctly identifies the prefix" do
@@ -54,7 +68,44 @@ describe Hamster::List do
54
68
  end
55
69
 
56
70
  it "correctly identifies the remainder" do
57
- @remainder.should == Hamster.list(6, 7, 8, 9, 10, 11)
71
+ @remainder.should == Hamster.list(6, 7, 8, 9, 10)
72
+ end
73
+
74
+ end
75
+
76
+ [
77
+ [[], [], []],
78
+ [[1], [1], []],
79
+ [[1, 2], [1, 2], []],
80
+ [[1, 2, 3], [1, 2], [3]],
81
+ [[1, 2, 3, 4], [1, 2], [3, 4]],
82
+ ].each do |values, expected_prefix, expected_remainder|
83
+
84
+ describe "on #{values.inspect}" do
85
+
86
+ before do
87
+ @original = Hamster.list(*values)
88
+ @result = @original.split_at(2)
89
+ @prefix = @result.car
90
+ @remainder = @result.cadr
91
+ end
92
+
93
+ it "preserves the original" do
94
+ @original.should == Hamster.list(*values)
95
+ end
96
+
97
+ it "returns a list with two items" do
98
+ @result.size.should == 2
99
+ end
100
+
101
+ it "correctly identifies the matches" do
102
+ @prefix.should == Hamster.list(*expected_prefix)
103
+ end
104
+
105
+ it "correctly identifies the remainder" do
106
+ @remainder.should == Hamster.list(*expected_remainder)
107
+ end
108
+
58
109
  end
59
110
 
60
111
  end
@@ -15,11 +15,11 @@ describe Hamster::List do
15
15
  describe "on #{values.inspect}" do
16
16
 
17
17
  before do
18
- @list = Hamster.list(*values)
18
+ @result = Hamster.list(*values).tail
19
19
  end
20
20
 
21
21
  it "returns #{expected.inspect}" do
22
- @list.tail.should == Hamster.list(*expected)
22
+ @result.should == Hamster.list(*expected)
23
23
  end
24
24
 
25
25
  end
@@ -9,15 +9,15 @@ describe Hamster::List do
9
9
  describe "doesn't run out of stack space on a really big" do
10
10
 
11
11
  it "stream" do
12
- @list = Hamster.interval(0, 10000)
12
+ @list = Hamster.interval(0, STACK_OVERFLOW_DEPTH)
13
13
  end
14
14
 
15
15
  it "list" do
16
- @list = (0..10000).reduce(Hamster.list) { |list, i| list.cons(i) }
16
+ @list = (0...STACK_OVERFLOW_DEPTH).reduce(Hamster.list) { |list, i| list.cons(i) }
17
17
  end
18
18
 
19
19
  after do
20
- @list.take(10000)
20
+ @list.take(STACK_OVERFLOW_DEPTH)
21
21
  end
22
22
 
23
23
  end
@@ -33,11 +33,16 @@ describe Hamster::List do
33
33
  describe "#{number} from #{values.inspect}" do
34
34
 
35
35
  before do
36
- @list = Hamster.list(*values)
36
+ @original = Hamster.list(*values)
37
+ @result = @original.take(number)
38
+ end
39
+
40
+ it "preserves the original" do
41
+ @original.should == Hamster.list(*values)
37
42
  end
38
43
 
39
44
  it "returns #{expected.inspect}" do
40
- @list.take(number).should == Hamster.list(*expected)
45
+ @result.should == Hamster.list(*expected)
41
46
  end
42
47
 
43
48
  end
@@ -9,11 +9,11 @@ describe Hamster::List do
9
9
  describe "doesn't run out of stack space on a really big" do
10
10
 
11
11
  it "stream" do
12
- @list = Hamster.interval(0, 10000)
12
+ @list = Hamster.interval(0, STACK_OVERFLOW_DEPTH)
13
13
  end
14
14
 
15
15
  it "list" do
16
- @list = (0..10000).reduce(Hamster.list) { |list, i| list.cons(i) }
16
+ @list = (0...STACK_OVERFLOW_DEPTH).reduce(Hamster.list) { |list, i| list.cons(i) }
17
17
  end
18
18
 
19
19
  after do
@@ -31,18 +31,23 @@ describe Hamster::List do
31
31
  describe "on #{values.inspect}" do
32
32
 
33
33
  before do
34
- @list = Hamster.list(*values)
34
+ @original = Hamster.list(*values)
35
+ @result = @original.take_while { |item| item < "C" }
35
36
  end
36
37
 
37
38
  describe "with a block" do
38
39
 
39
40
  it "returns #{expected.inspect}" do
40
- @list.take_while { |item| item < "C" }.should == Hamster.list(*expected)
41
+ @result.should == Hamster.list(*expected)
42
+ end
43
+
44
+ it "preserves the original" do
45
+ @original.should == Hamster.list(*values)
41
46
  end
42
47
 
43
48
  it "is lazy" do
44
49
  count = 0
45
- @list.take_while { |item| count += 1; true }
50
+ @original.take_while { |item| count += 1; true }
46
51
  count.should <= 1
47
52
  end
48
53
 
@@ -50,8 +55,12 @@ describe Hamster::List do
50
55
 
51
56
  describe "without a block" do
52
57
 
58
+ before do
59
+ @result = @original.take_while
60
+ end
61
+
53
62
  it "returns self" do
54
- @list.take_while.should equal(@list)
63
+ @result.should equal(@original)
55
64
  end
56
65
 
57
66
  end