hamster 1.0.1.pre.rc.1 → 1.0.1.pre.rc2

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 (209) hide show
  1. checksums.yaml +4 -4
  2. data/lib/hamster/groupable.rb +12 -0
  3. data/lib/hamster/hash.rb +32 -12
  4. data/lib/hamster/list.rb +68 -22
  5. data/lib/hamster/queue.rb +5 -6
  6. data/lib/hamster/set.rb +50 -14
  7. data/lib/hamster/stack.rb +2 -0
  8. data/lib/hamster/trie.rb +34 -14
  9. data/lib/hamster/tuple.rb +9 -24
  10. data/lib/hamster/vector.rb +29 -7
  11. data/lib/hamster/version.rb +1 -1
  12. data/spec/hamster/core_ext/array_spec.rb +4 -10
  13. data/spec/hamster/core_ext/enumerable_spec.rb +1 -0
  14. data/spec/hamster/experimental/mutable_set/add_qm_spec.rb +14 -22
  15. data/spec/hamster/experimental/mutable_set/add_spec.rb +20 -34
  16. data/spec/hamster/experimental/mutable_set/delete_qm_spec.rb +15 -24
  17. data/spec/hamster/experimental/mutable_set/delete_spec.rb +15 -25
  18. data/spec/hamster/experimental/mutable_stack/pop_spec.rb +21 -27
  19. data/spec/hamster/experimental/mutable_stack/push_spec.rb +11 -31
  20. data/spec/hamster/hash/all_spec.rb +21 -34
  21. data/spec/hamster/hash/any_spec.rb +0 -15
  22. data/spec/hamster/hash/clear_spec.rb +1 -8
  23. data/spec/hamster/hash/construction_spec.rb +3 -11
  24. data/spec/hamster/hash/copying_spec.rb +1 -8
  25. data/spec/hamster/hash/delete_spec.rb +1 -10
  26. data/spec/hamster/hash/each_spec.rb +1 -12
  27. data/spec/hamster/hash/empty_spec.rb +8 -8
  28. data/spec/hamster/hash/eql_spec.rb +30 -22
  29. data/spec/hamster/hash/except_spec.rb +1 -10
  30. data/spec/hamster/hash/fetch_spec.rb +1 -24
  31. data/spec/hamster/hash/filter_spec.rb +1 -16
  32. data/spec/hamster/hash/find_spec.rb +1 -14
  33. data/spec/hamster/hash/has_key_spec.rb +1 -10
  34. data/spec/hamster/hash/hash_spec.rb +1 -16
  35. data/spec/hamster/hash/immutable_spec.rb +0 -3
  36. data/spec/hamster/hash/inspect_spec.rb +1 -9
  37. data/spec/hamster/hash/keys_spec.rb +4 -5
  38. data/spec/hamster/hash/map_spec.rb +1 -16
  39. data/spec/hamster/hash/merge_spec.rb +5 -11
  40. data/spec/hamster/hash/new_spec.rb +21 -0
  41. data/spec/hamster/hash/put_spec.rb +13 -11
  42. data/spec/hamster/hash/reduce_spec.rb +7 -15
  43. data/spec/hamster/hash/remove_spec.rb +1 -16
  44. data/spec/hamster/hash/uniq_spec.rb +1 -8
  45. data/spec/hamster/hash/values_spec.rb +1 -6
  46. data/spec/hamster/immutable/copying_spec.rb +1 -8
  47. data/spec/hamster/immutable/immutable_spec.rb +1 -14
  48. data/spec/hamster/immutable/memoize_spec.rb +0 -1
  49. data/spec/hamster/list/add_spec.rb +1 -6
  50. data/spec/hamster/list/all_spec.rb +1 -28
  51. data/spec/hamster/list/any_spec.rb +1 -20
  52. data/spec/hamster/list/append_spec.rb +1 -11
  53. data/spec/hamster/list/at_spec.rb +1 -13
  54. data/spec/hamster/list/break_spec.rb +1 -13
  55. data/spec/hamster/list/cadr_spec.rb +1 -9
  56. data/spec/hamster/list/chunk_spec.rb +1 -9
  57. data/spec/hamster/list/clear_spec.rb +1 -9
  58. data/spec/hamster/list/combinations_spec.rb +1 -11
  59. data/spec/hamster/list/compact_spec.rb +1 -9
  60. data/spec/hamster/list/cons_spec.rb +1 -10
  61. data/spec/hamster/list/construction_spec.rb +1 -30
  62. data/spec/hamster/list/copying_spec.rb +1 -9
  63. data/spec/hamster/list/count_spec.rb +1 -15
  64. data/spec/hamster/list/cycle_spec.rb +1 -10
  65. data/spec/hamster/list/drop_spec.rb +1 -9
  66. data/spec/hamster/list/drop_while_spec.rb +1 -13
  67. data/spec/hamster/list/each_slice_spec.rb +1 -17
  68. data/spec/hamster/list/each_spec.rb +1 -17
  69. data/spec/hamster/list/each_with_index_spec.rb +1 -10
  70. data/spec/hamster/list/elem_index_spec.rb +1 -13
  71. data/spec/hamster/list/elem_indices_spec.rb +1 -11
  72. data/spec/hamster/list/empty_spec.rb +1 -13
  73. data/spec/hamster/list/eql_spec.rb +52 -62
  74. data/spec/hamster/list/find_index_spec.rb +1 -13
  75. data/spec/hamster/list/find_indices_spec.rb +1 -11
  76. data/spec/hamster/list/find_spec.rb +1 -17
  77. data/spec/hamster/list/flatten_spec.rb +1 -9
  78. data/spec/hamster/list/grep_spec.rb +1 -16
  79. data/spec/hamster/list/group_by_spec.rb +1 -20
  80. data/spec/hamster/list/head_spec.rb +1 -11
  81. data/spec/hamster/list/include_spec.rb +1 -13
  82. data/spec/hamster/list/init_spec.rb +1 -8
  83. data/spec/hamster/list/inits_spec.rb +1 -9
  84. data/spec/hamster/list/inspect_spec.rb +1 -11
  85. data/spec/hamster/list/intersperse_spec.rb +1 -9
  86. data/spec/hamster/list/join_spec.rb +1 -18
  87. data/spec/hamster/list/last_spec.rb +1 -11
  88. data/spec/hamster/list/map_spec.rb +1 -15
  89. data/spec/hamster/list/maximum_spec.rb +1 -20
  90. data/spec/hamster/list/merge_by_spec.rb +1 -19
  91. data/spec/hamster/list/merge_spec.rb +1 -20
  92. data/spec/hamster/list/minimum_spec.rb +1 -20
  93. data/spec/hamster/list/none_spec.rb +1 -18
  94. data/spec/hamster/list/one_spec.rb +1 -16
  95. data/spec/hamster/list/partition_spec.rb +1 -13
  96. data/spec/hamster/list/product_spec.rb +1 -11
  97. data/spec/hamster/list/reduce_spec.rb +0 -1
  98. data/spec/hamster/list/remove_spec.rb +1 -15
  99. data/spec/hamster/list/reverse_spec.rb +1 -11
  100. data/spec/hamster/list/size_spec.rb +1 -13
  101. data/spec/hamster/list/slice_spec.rb +1 -11
  102. data/spec/hamster/list/sorting_spec.rb +1 -14
  103. data/spec/hamster/list/span_spec.rb +1 -12
  104. data/spec/hamster/list/split_at_spec.rb +1 -9
  105. data/spec/hamster/list/sum_spec.rb +1 -11
  106. data/spec/hamster/list/tail_spec.rb +1 -11
  107. data/spec/hamster/list/tails_spec.rb +1 -9
  108. data/spec/hamster/list/take_spec.rb +1 -9
  109. data/spec/hamster/list/take_while_spec.rb +0 -1
  110. data/spec/hamster/list/to_a_spec.rb +1 -13
  111. data/spec/hamster/list/to_ary_spec.rb +0 -1
  112. data/spec/hamster/list/to_list_spec.rb +1 -9
  113. data/spec/hamster/list/to_set_spec.rb +2 -8
  114. data/spec/hamster/list/union_spec.rb +1 -11
  115. data/spec/hamster/list/uniq_spec.rb +1 -11
  116. data/spec/hamster/queue/clear_spec.rb +1 -9
  117. data/spec/hamster/queue/construction_spec.rb +1 -10
  118. data/spec/hamster/queue/dequeue_spec.rb +1 -11
  119. data/spec/hamster/queue/empty_spec.rb +1 -13
  120. data/spec/hamster/queue/enqueue_spec.rb +1 -11
  121. data/spec/hamster/queue/head_spec.rb +1 -11
  122. data/spec/hamster/queue/inspect_spec.rb +1 -9
  123. data/spec/hamster/queue/size_spec.rb +1 -11
  124. data/spec/hamster/queue/to_a_spec.rb +1 -11
  125. data/spec/hamster/queue/to_list_spec.rb +1 -11
  126. data/spec/hamster/set/add_spec.rb +1 -12
  127. data/spec/hamster/set/all_spec.rb +1 -18
  128. data/spec/hamster/set/any_spec.rb +1 -17
  129. data/spec/hamster/set/clear_spec.rb +9 -8
  130. data/spec/hamster/set/compact_spec.rb +1 -9
  131. data/spec/hamster/set/construction_spec.rb +1 -9
  132. data/spec/hamster/set/copying_spec.rb +1 -8
  133. data/spec/hamster/set/count_spec.rb +1 -13
  134. data/spec/hamster/set/delete_spec.rb +1 -10
  135. data/spec/hamster/set/difference_spec.rb +1 -11
  136. data/spec/hamster/set/empty_spec.rb +1 -11
  137. data/spec/hamster/set/exclusion_spec.rb +1 -11
  138. data/spec/hamster/set/filter_spec.rb +10 -17
  139. data/spec/hamster/set/find_spec.rb +1 -14
  140. data/spec/hamster/set/flatten_spec.rb +8 -10
  141. data/spec/hamster/set/group_by_spec.rb +8 -17
  142. data/spec/hamster/set/head_spec.rb +1 -12
  143. data/spec/hamster/set/immutable_spec.rb +1 -4
  144. data/spec/hamster/set/include_spec.rb +1 -9
  145. data/spec/hamster/set/inspect_spec.rb +1 -9
  146. data/spec/hamster/set/intersection_spec.rb +1 -11
  147. data/spec/hamster/set/join_spec.rb +1 -16
  148. data/spec/hamster/set/map_spec.rb +1 -16
  149. data/spec/hamster/set/marshal_spec.rb +1 -6
  150. data/spec/hamster/set/maximum_spec.rb +1 -18
  151. data/spec/hamster/set/minimum_spec.rb +1 -17
  152. data/spec/hamster/set/new_spec.rb +21 -0
  153. data/spec/hamster/set/none_spec.rb +1 -16
  154. data/spec/hamster/set/one_spec.rb +1 -14
  155. data/spec/hamster/set/partition_spec.rb +1 -13
  156. data/spec/hamster/set/product_spec.rb +1 -9
  157. data/spec/hamster/set/reduce_spec.rb +1 -26
  158. data/spec/hamster/set/remove_spec.rb +1 -16
  159. data/spec/hamster/set/size_spec.rb +1 -9
  160. data/spec/hamster/set/sorting_spec.rb +1 -3
  161. data/spec/hamster/set/subset_spec.rb +1 -9
  162. data/spec/hamster/set/sum_spec.rb +1 -9
  163. data/spec/hamster/set/superset_spec.rb +1 -9
  164. data/spec/hamster/set/to_a_spec.rb +1 -11
  165. data/spec/hamster/set/to_list_spec.rb +1 -11
  166. data/spec/hamster/set/to_set_spec.rb +1 -9
  167. data/spec/hamster/set/union_spec.rb +1 -11
  168. data/spec/hamster/set/uniq_spec.rb +1 -7
  169. data/spec/hamster/sorter/immutable_spec.rb +1 -4
  170. data/spec/hamster/stack/clear_spec.rb +1 -9
  171. data/spec/hamster/stack/construction_spec.rb +1 -10
  172. data/spec/hamster/stack/copying_spec.rb +1 -9
  173. data/spec/hamster/stack/empty_spec.rb +1 -9
  174. data/spec/hamster/stack/eql_spec.rb +1 -13
  175. data/spec/hamster/stack/immutable_spec.rb +1 -4
  176. data/spec/hamster/stack/inspect_spec.rb +1 -9
  177. data/spec/hamster/stack/peek_spec.rb +1 -11
  178. data/spec/hamster/stack/pop_spec.rb +1 -11
  179. data/spec/hamster/stack/push_spec.rb +1 -11
  180. data/spec/hamster/stack/size_spec.rb +1 -11
  181. data/spec/hamster/stack/to_a_spec.rb +1 -11
  182. data/spec/hamster/stack/to_list_spec.rb +1 -9
  183. data/spec/hamster/tuple/construction_spec.rb +30 -0
  184. data/spec/hamster/tuple/copying_spec.rb +1 -8
  185. data/spec/hamster/tuple/eql_spec.rb +57 -40
  186. data/spec/hamster/tuple/first_spec.rb +1 -6
  187. data/spec/hamster/tuple/immutable_spec.rb +1 -4
  188. data/spec/hamster/tuple/inspect_spec.rb +1 -6
  189. data/spec/hamster/tuple/last_spec.rb +1 -6
  190. data/spec/hamster/tuple/to_a_spec.rb +1 -9
  191. data/spec/hamster/tuple/to_ary_spec.rb +0 -1
  192. data/spec/hamster/undefined/erase_spec.rb +1 -12
  193. data/spec/hamster/vector/add_spec.rb +8 -0
  194. data/spec/hamster/vector/clear_spec.rb +1 -8
  195. data/spec/hamster/vector/copying_spec.rb +1 -8
  196. data/spec/hamster/vector/each_spec.rb +1 -11
  197. data/spec/hamster/vector/each_with_index_spec.rb +1 -9
  198. data/spec/hamster/vector/empty_spec.rb +7 -9
  199. data/spec/hamster/vector/eql_spec.rb +1 -12
  200. data/spec/hamster/vector/filter_spec.rb +8 -12
  201. data/spec/hamster/vector/first_spec.rb +1 -11
  202. data/spec/hamster/vector/get_spec.rb +1 -23
  203. data/spec/hamster/vector/include_spec.rb +1 -10
  204. data/spec/hamster/vector/map_spec.rb +8 -14
  205. data/spec/hamster/vector/new_spec.rb +48 -0
  206. data/spec/hamster/vector/reduce_spec.rb +1 -26
  207. data/spec/hamster/vector/set_spec.rb +8 -0
  208. data/spec/spec_helper.rb +0 -5
  209. metadata +35 -68
@@ -1,11 +1,8 @@
1
1
  require "spec_helper"
2
-
3
2
  require "hamster/list"
4
3
 
5
4
  describe Hamster::List do
6
-
7
5
  describe "#intersperse" do
8
-
9
6
  it "is lazy" do
10
7
  -> { Hamster.stream { fail }.intersperse("") }.should_not raise_error
11
8
  end
@@ -17,7 +14,6 @@ describe Hamster::List do
17
14
  ].each do |values, expected|
18
15
 
19
16
  describe "on #{values.inspect}" do
20
-
21
17
  before do
22
18
  @original = Hamster.list(*values)
23
19
  @result = @original.intersperse("|")
@@ -30,11 +26,7 @@ describe Hamster::List do
30
26
  it "returns #{expected.inspect}" do
31
27
  @result.should == Hamster.list(*expected)
32
28
  end
33
-
34
29
  end
35
-
36
30
  end
37
-
38
31
  end
39
-
40
- end
32
+ end
@@ -1,13 +1,9 @@
1
1
  require "spec_helper"
2
-
3
2
  require "hamster/list"
4
3
 
5
4
  describe Hamster::List do
6
-
7
5
  describe "#join" do
8
-
9
6
  describe "on a really big list" do
10
-
11
7
  before do
12
8
  @list = Hamster.interval(0, STACK_OVERFLOW_DEPTH)
13
9
  end
@@ -15,11 +11,9 @@ describe Hamster::List do
15
11
  it "doesn't run out of stack" do
16
12
  -> { @list.join }.should_not raise_error
17
13
  end
18
-
19
14
  end
20
15
 
21
16
  describe "with a separator" do
22
-
23
17
  [
24
18
  [[], ""],
25
19
  [["A"], "A"],
@@ -27,7 +21,6 @@ describe Hamster::List do
27
21
  ].each do |values, expected|
28
22
 
29
23
  describe "on #{values.inspect}" do
30
-
31
24
  before do
32
25
  @original = Hamster.list(*values)
33
26
  @result = @original.join("|")
@@ -40,15 +33,11 @@ describe Hamster::List do
40
33
  it "returns #{expected.inspect}" do
41
34
  @result.should == expected
42
35
  end
43
-
44
36
  end
45
-
46
37
  end
47
-
48
38
  end
49
39
 
50
40
  describe "without a separator" do
51
-
52
41
  [
53
42
  [[], ""],
54
43
  [["A"], "A"],
@@ -56,7 +45,6 @@ describe Hamster::List do
56
45
  ].each do |values, expected|
57
46
 
58
47
  describe "on #{values.inspect}" do
59
-
60
48
  before do
61
49
  @original = Hamster.list(*values)
62
50
  @result = @original.join
@@ -69,13 +57,8 @@ describe Hamster::List do
69
57
  it "returns #{expected.inspect}" do
70
58
  @result.should == expected
71
59
  end
72
-
73
60
  end
74
-
75
61
  end
76
-
77
62
  end
78
-
79
63
  end
80
-
81
- end
64
+ end
@@ -1,13 +1,9 @@
1
1
  require "spec_helper"
2
-
3
2
  require "hamster/list"
4
3
 
5
4
  describe Hamster::List do
6
-
7
5
  describe "#last" do
8
-
9
6
  describe "on a really big list" do
10
-
11
7
  before do
12
8
  @list = Hamster.interval(0, STACK_OVERFLOW_DEPTH)
13
9
  end
@@ -15,7 +11,6 @@ describe Hamster::List do
15
11
  it "doesn't run out of stack" do
16
12
  -> { @list.last }.should_not raise_error
17
13
  end
18
-
19
14
  end
20
15
 
21
16
  [
@@ -25,7 +20,6 @@ describe Hamster::List do
25
20
  ].each do |values, expected|
26
21
 
27
22
  describe "on #{values.inspect}" do
28
-
29
23
  before do
30
24
  original = Hamster.list(*values)
31
25
  @result = original.last
@@ -34,11 +28,7 @@ describe Hamster::List do
34
28
  it "returns #{expected.inspect}" do
35
29
  @result.should == expected
36
30
  end
37
-
38
31
  end
39
-
40
32
  end
41
-
42
33
  end
43
-
44
- end
34
+ end
@@ -1,13 +1,9 @@
1
1
  require "spec_helper"
2
-
3
2
  require "hamster/list"
4
3
 
5
4
  describe Hamster::List do
6
-
7
5
  [:map, :collect].each do |method|
8
-
9
6
  describe "##{method}" do
10
-
11
7
  it "is lazy" do
12
8
  -> { Hamster.stream { fail }.map { |item| item } }.should_not raise_error
13
9
  end
@@ -19,13 +15,11 @@ describe Hamster::List do
19
15
  ].each do |values, expected|
20
16
 
21
17
  describe "on #{values.inspect}" do
22
-
23
18
  before do
24
19
  @original = Hamster.list(*values)
25
20
  end
26
21
 
27
22
  describe "with a block" do
28
-
29
23
  before do
30
24
  @result = @original.send(method, &:downcase)
31
25
  end
@@ -43,11 +37,9 @@ describe Hamster::List do
43
37
  @original.send(method) { |item| count += 1 }
44
38
  count.should <= 1
45
39
  end
46
-
47
40
  end
48
41
 
49
42
  describe "without a block" do
50
-
51
43
  before do
52
44
  @result = @original.send(method)
53
45
  end
@@ -55,15 +47,9 @@ describe Hamster::List do
55
47
  it "returns self" do
56
48
  @result.should equal(@original)
57
49
  end
58
-
59
50
  end
60
-
61
51
  end
62
-
63
52
  end
64
-
65
53
  end
66
-
67
54
  end
68
-
69
- end
55
+ end
@@ -1,15 +1,10 @@
1
1
  require "spec_helper"
2
-
3
2
  require "hamster/list"
4
3
 
5
4
  describe Hamster::List do
6
-
7
5
  [:maximum, :max].each do |method|
8
-
9
6
  describe "##{method}" do
10
-
11
7
  describe "on a really big list" do
12
-
13
8
  before do
14
9
  @list = Hamster.interval(0, STACK_OVERFLOW_DEPTH)
15
10
  end
@@ -17,11 +12,9 @@ describe Hamster::List do
17
12
  it "doesn't run out of stack" do
18
13
  -> { @list.send(method) }.should_not raise_error
19
14
  end
20
-
21
15
  end
22
16
 
23
17
  describe "with a block" do
24
-
25
18
  [
26
19
  [[], nil],
27
20
  [["A"], "A"],
@@ -29,7 +22,6 @@ describe Hamster::List do
29
22
  ].each do |values, expected|
30
23
 
31
24
  describe "on #{values.inspect}" do
32
-
33
25
  before do
34
26
  original = Hamster.list(*values)
35
27
  @result = original.send(method) { |maximum, item| item.length <=> maximum.length }
@@ -38,15 +30,11 @@ describe Hamster::List do
38
30
  it "returns #{expected.inspect}" do
39
31
  @result.should == expected
40
32
  end
41
-
42
33
  end
43
-
44
34
  end
45
-
46
35
  end
47
36
 
48
37
  describe "without a block" do
49
-
50
38
  [
51
39
  [[], nil],
52
40
  [["A"], "A"],
@@ -54,7 +42,6 @@ describe Hamster::List do
54
42
  ].each do |values, expected|
55
43
 
56
44
  describe "on #{values.inspect}" do
57
-
58
45
  before do
59
46
  original = Hamster.list(*values)
60
47
  @result = original.send(method)
@@ -63,15 +50,9 @@ describe Hamster::List do
63
50
  it "returns #{expected.inspect}" do
64
51
  @result.should == expected
65
52
  end
66
-
67
53
  end
68
-
69
54
  end
70
-
71
55
  end
72
-
73
56
  end
74
-
75
57
  end
76
-
77
- end
58
+ end
@@ -1,23 +1,17 @@
1
1
  require "spec_helper"
2
-
3
2
  require "hamster/list"
4
3
 
5
4
  describe Hamster::List do
6
-
7
5
  context "without a comparator" do
8
-
9
6
  context "on an empty list" do
10
-
11
7
  subject { Hamster.list }
12
8
 
13
9
  it "returns an empty list" do
14
10
  subject.merge_by.should be_empty
15
11
  end
16
-
17
12
  end
18
13
 
19
14
  context "on a single list" do
20
-
21
15
  let(:list) { Hamster.list(1, 2, 3) }
22
16
 
23
17
  subject { Hamster.list(list) }
@@ -25,11 +19,9 @@ describe Hamster::List do
25
19
  it "returns the list" do
26
20
  subject.merge_by.should == list
27
21
  end
28
-
29
22
  end
30
23
 
31
24
  context "with multiple lists" do
32
-
33
25
  subject { Hamster.list(Hamster.list(3, 6, 7, 8), Hamster.list(1, 2, 4, 5, 9)) }
34
26
 
35
27
  it "merges the lists based on natural sort order" do
@@ -37,23 +29,18 @@ describe Hamster::List do
37
29
  end
38
30
 
39
31
  end
40
-
41
32
  end
42
33
 
43
34
  context "with a comparator" do
44
-
45
35
  context "on an empty list" do
46
-
47
36
  subject { Hamster.list }
48
37
 
49
38
  it "returns an empty list" do
50
39
  subject.merge_by { |item| fail("should never be called") }.should be_empty
51
40
  end
52
-
53
41
  end
54
42
 
55
43
  context "on a single list" do
56
-
57
44
  let(:list) { Hamster.list(1, 2, 3) }
58
45
 
59
46
  subject { Hamster.list(list) }
@@ -61,19 +48,14 @@ describe Hamster::List do
61
48
  it "returns the list" do
62
49
  subject.merge_by { |item| -item }.should == Hamster.list(1, 2, 3)
63
50
  end
64
-
65
51
  end
66
52
 
67
53
  context "with multiple lists" do
68
-
69
54
  subject { Hamster.list(Hamster.list(8, 7, 6, 3), Hamster.list(9, 5, 4, 2, 1)) }
70
55
 
71
56
  it "merges the lists based on the specified transformer" do
72
57
  subject.merge_by { |item| -item }.should == Hamster.list(9, 8, 7, 6, 5, 4, 3, 2, 1)
73
58
  end
74
-
75
59
  end
76
-
77
60
  end
78
-
79
- end
61
+ end
@@ -1,23 +1,17 @@
1
1
  require "spec_helper"
2
-
3
2
  require "hamster/list"
4
3
 
5
4
  describe Hamster::List do
6
-
7
5
  context "without a comparator" do
8
-
9
6
  context "on an empty list" do
10
-
11
7
  subject { Hamster.list }
12
8
 
13
9
  it "returns an empty list" do
14
10
  subject.merge.should be_empty
15
11
  end
16
-
17
12
  end
18
13
 
19
14
  context "on a single list" do
20
-
21
15
  let(:list) { Hamster.list(1, 2, 3) }
22
16
 
23
17
  subject { Hamster.list(list) }
@@ -25,35 +19,27 @@ describe Hamster::List do
25
19
  it "returns the list" do
26
20
  subject.merge.should == list
27
21
  end
28
-
29
22
  end
30
23
 
31
24
  context "with multiple lists" do
32
-
33
25
  subject { Hamster.list(Hamster.list(3, 6, 7, 8), Hamster.list(1, 2, 4, 5, 9)) }
34
26
 
35
27
  it "merges the lists based on natural sort order" do
36
28
  subject.merge.should == Hamster.list(1, 2, 3, 4, 5, 6, 7, 8, 9)
37
29
  end
38
-
39
30
  end
40
-
41
31
  end
42
32
 
43
33
  context "with a comparator" do
44
-
45
34
  context "on an empty list" do
46
-
47
35
  subject { Hamster.list }
48
36
 
49
37
  it "returns an empty list" do
50
38
  subject.merge { |a, b| fail("should never be called") }.should be_empty
51
39
  end
52
-
53
40
  end
54
41
 
55
42
  context "on a single list" do
56
-
57
43
  let(:list) { Hamster.list(1, 2, 3) }
58
44
 
59
45
  subject { Hamster.list(list) }
@@ -61,19 +47,14 @@ describe Hamster::List do
61
47
  it "returns the list" do
62
48
  subject.merge { |a, b| fail("should never be called") }.should == list
63
49
  end
64
-
65
50
  end
66
51
 
67
52
  context "with multiple lists" do
68
-
69
53
  subject { Hamster.list(Hamster.list(8, 7, 6, 3), Hamster.list(9, 5, 4, 2, 1)) }
70
54
 
71
55
  it "merges the lists based on the specified comparator" do
72
56
  subject.merge { |a, b| b <=> a }.should == Hamster.list(9, 8, 7, 6, 5, 4, 3, 2, 1)
73
57
  end
74
-
75
58
  end
76
-
77
59
  end
78
-
79
- end
60
+ end
@@ -1,15 +1,10 @@
1
1
  require "spec_helper"
2
-
3
2
  require "hamster/list"
4
3
 
5
4
  describe Hamster::List do
6
-
7
5
  [:minimum, :min].each do |method|
8
-
9
6
  describe "##{method}" do
10
-
11
7
  describe "on a really big list" do
12
-
13
8
  before do
14
9
  @list = Hamster.interval(0, STACK_OVERFLOW_DEPTH)
15
10
  end
@@ -17,11 +12,9 @@ describe Hamster::List do
17
12
  it "doesn't run out of stack" do
18
13
  -> { @list.send(method) }.should_not raise_error
19
14
  end
20
-
21
15
  end
22
16
 
23
17
  describe "with a block" do
24
-
25
18
  [
26
19
  [[], nil],
27
20
  [["A"], "A"],
@@ -29,7 +22,6 @@ describe Hamster::List do
29
22
  ].each do |values, expected|
30
23
 
31
24
  describe "on #{values.inspect}" do
32
-
33
25
  before do
34
26
  original = Hamster.list(*values)
35
27
  @result = original.send(method) { |minimum, item| item.length <=> minimum.length }
@@ -38,15 +30,11 @@ describe Hamster::List do
38
30
  it "returns #{expected.inspect}" do
39
31
  @result.should == expected
40
32
  end
41
-
42
33
  end
43
-
44
34
  end
45
-
46
35
  end
47
36
 
48
37
  describe "without a block" do
49
-
50
38
  [
51
39
  [[], nil],
52
40
  [["A"], "A"],
@@ -54,7 +42,6 @@ describe Hamster::List do
54
42
  ].each do |values, expected|
55
43
 
56
44
  describe "on #{values.inspect}" do
57
-
58
45
  before do
59
46
  original = Hamster.list(*values)
60
47
  @result = original.send(method)
@@ -63,15 +50,9 @@ describe Hamster::List do
63
50
  it "returns #{expected.inspect}" do
64
51
  @result.should == expected
65
52
  end
66
-
67
53
  end
68
-
69
54
  end
70
-
71
55
  end
72
-
73
56
  end
74
-
75
57
  end
76
-
77
- end
58
+ end