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
@@ -25,11 +25,16 @@ describe Hamster::List do
25
25
  describe "on #{values.inspect}" do
26
26
 
27
27
  before do
28
- @list = Hamster.list(*values)
28
+ @original = Hamster.list(*values)
29
+ @result = @original.send(method)
30
+ end
31
+
32
+ it "preserves the original" do
33
+ @original.should == Hamster.list(*values)
29
34
  end
30
35
 
31
36
  it "returns #{expected.inspect}" do
32
- @list.send(method).should == expected
37
+ @result.should == expected
33
38
  end
34
39
 
35
40
  end
@@ -0,0 +1,36 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
2
+
3
+ require 'hamster/list'
4
+
5
+ describe Hamster do
6
+
7
+ describe "#clear" do
8
+
9
+ [
10
+ [],
11
+ ["A"],
12
+ ["A", "B", "C"],
13
+ ].each do |values|
14
+
15
+ describe "on #{values}" do
16
+
17
+ before do
18
+ @original = Hamster.list(*values)
19
+ @result = @original.clear
20
+ end
21
+
22
+ it "preserves the original" do
23
+ @original.should == Hamster.list(*values)
24
+ end
25
+
26
+ it "returns an empty list" do
27
+ @result.should be_empty
28
+ end
29
+
30
+ end
31
+
32
+ end
33
+
34
+ end
35
+
36
+ end
@@ -15,11 +15,12 @@ describe Hamster::List do
15
15
  describe "on #{values.inspect}" do
16
16
 
17
17
  before do
18
- @list = Hamster.list(*values)
18
+ @original = Hamster.list(*values)
19
+ @result = @original.send(method)
19
20
  end
20
21
 
21
22
  it "returns self" do
22
- @list.send(method).should equal(@list)
23
+ @result.should equal(@original)
23
24
  end
24
25
 
25
26
  end
@@ -9,11 +9,11 @@ describe Hamster 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
@@ -22,14 +22,22 @@ describe Hamster do
22
22
 
23
23
  end
24
24
 
25
+ it "is lazy" do
26
+ count = 0
27
+ list = Hamster.stream { count += 1 }
28
+ list.cycle
29
+ count.should <= 1
30
+ end
31
+
25
32
  describe "with an empty list" do
26
33
 
27
34
  before do
28
- @list = Hamster.list.cycle
35
+ @original = Hamster.list
36
+ @result = @original.cycle
29
37
  end
30
38
 
31
- it "returns the empty list" do
32
- @list.should equal(Hamster.list)
39
+ it "returns self" do
40
+ @result.should equal(@original)
33
41
  end
34
42
 
35
43
  end
@@ -37,11 +45,16 @@ describe Hamster do
37
45
  describe "with a non-empty list" do
38
46
 
39
47
  before do
40
- @list = Hamster.list("A", "B", "C").cycle
48
+ @original = Hamster.list("A", "B", "C")
49
+ @result = @original.cycle
50
+ end
51
+
52
+ it "preserves the original" do
53
+ @original.should == Hamster.list("A", "B", "C")
41
54
  end
42
55
 
43
56
  it "infinitely cycles through all values" do
44
- @list.take(7).should == Hamster.list("A", "B", "C", "A", "B", "C", "A")
57
+ @result.take(7).should == Hamster.list("A", "B", "C", "A", "B", "C", "A")
45
58
  end
46
59
 
47
60
  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.drop(10000)
20
+ @list.drop(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.drop(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.drop(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,21 +31,33 @@ 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
35
  end
36
36
 
37
37
  describe "with a block" do
38
38
 
39
+ before do
40
+ @result = @original.drop_while { |item| item < "C" }
41
+ end
42
+
43
+ it "preserves the original" do
44
+ @original.should == Hamster.list(*values)
45
+ end
46
+
39
47
  it "returns #{expected.inspect}" do
40
- @list.drop_while { |item| item < "C" }.should == Hamster.list(*expected)
48
+ @result.should == Hamster.list(*expected)
41
49
  end
42
50
 
43
51
  end
44
52
 
45
53
  describe "without a block" do
46
54
 
55
+ before do
56
+ @result = @original.drop_while
57
+ end
58
+
47
59
  it "returns self" do
48
- @list.drop_while.should equal(@list)
60
+ @result.should equal(@original)
49
61
  end
50
62
 
51
63
  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,27 +31,34 @@ 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
35
  end
36
36
 
37
37
  describe "with a block" do
38
38
 
39
+ before do
40
+ @items = []
41
+ @result = @original.each { |value| @items << value }
42
+ end
43
+
39
44
  it "iterates over the items in order" do
40
- items = []
41
- @list.each { |value| items << value }
42
- items.should == values
45
+ @items.should == values
43
46
  end
44
47
 
45
48
  it "returns nil" do
46
- @list.each {}.should be_nil
49
+ @result.should be_nil
47
50
  end
48
51
 
49
52
  end
50
53
 
51
54
  describe "without a block" do
52
55
 
56
+ before do
57
+ @result = @original.each
58
+ end
59
+
53
60
  it "returns self" do
54
- @list.each.should equal(@list)
61
+ @result.should equal(@original)
55
62
  end
56
63
 
57
64
  end
@@ -17,11 +17,11 @@ describe Hamster::List do
17
17
  describe "on #{values.inspect}" do
18
18
 
19
19
  before do
20
- @list = Hamster.list(*values)
20
+ @result = Hamster.list(*values).send(method)
21
21
  end
22
22
 
23
23
  it "returns #{expected.inspect}" do
24
- @list.send(method).should == expected
24
+ @result.should == expected
25
25
  end
26
26
 
27
27
  end
@@ -11,13 +11,13 @@ 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
- @a = Hamster.interval(0, 10000)
15
- @b = Hamster.interval(0, 10000)
14
+ @a = Hamster.interval(0, STACK_OVERFLOW_DEPTH)
15
+ @b = Hamster.interval(0, STACK_OVERFLOW_DEPTH)
16
16
  end
17
17
 
18
18
  it "list" do
19
- @a = (0..10000).reduce(Hamster.list) { |list, i| list.cons(i) }
20
- @b = (0..10000).reduce(Hamster.list) { |list, i| list.cons(i) }
19
+ @a = (0...STACK_OVERFLOW_DEPTH).reduce(Hamster.list) { |list, i| list.cons(i) }
20
+ @b = (0...STACK_OVERFLOW_DEPTH).reduce(Hamster.list) { |list, i| list.cons(i) }
21
21
  end
22
22
 
23
23
  after do
@@ -33,11 +33,11 @@ describe Hamster::List do
33
33
  end
34
34
 
35
35
  it "an array" do
36
- @list.send(method, ["A", "B", "C"]).should be_false
36
+ @list.send(method, ["A", "B", "C"]).should == false
37
37
  end
38
38
 
39
39
  it "an aribtrary object" do
40
- @list.send(method, Object.new).should be_false
40
+ @list.send(method, Object.new).should == false
41
41
  end
42
42
 
43
43
  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
@@ -35,18 +35,26 @@ describe Hamster::List do
35
35
  describe "on #{values.inspect}" do
36
36
 
37
37
  before do
38
- @list = Hamster.list(*values)
38
+ @original = Hamster.list(*values)
39
39
  end
40
40
 
41
41
  describe "with a block" do
42
42
 
43
+ before do
44
+ @result = @original.send(method) { |item| item == item.upcase }
45
+ end
46
+
47
+ it "preserves the original" do
48
+ @original.should == Hamster.list(*values)
49
+ end
50
+
43
51
  it "returns #{expected.inspect}" do
44
- @list.send(method) { |item| item == item.upcase }.should == Hamster.list(*expected)
52
+ @result.should == Hamster.list(*expected)
45
53
  end
46
54
 
47
55
  it "is lazy" do
48
56
  count = 0
49
- @list.send(method) { |item| count += 1; true }
57
+ @original.send(method) { |item| count += 1; true }
50
58
  count.should <= 1
51
59
  end
52
60
 
@@ -55,7 +63,7 @@ describe Hamster::List do
55
63
  describe "without a block" do
56
64
 
57
65
  it "returns self" do
58
- @list.send(method).should equal(@list)
66
+ @original.send(method).should equal(@original)
59
67
  end
60
68
 
61
69
  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
@@ -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
@@ -59,16 +59,21 @@ describe Hamster::List do
59
59
  describe "on #{values.inspect}" do
60
60
 
61
61
  before do
62
- @list = Hamster.list(*values)
62
+ @original = Hamster.list(*values)
63
+ @result = @original.grep(String) { |item| item.downcase }
64
+ end
65
+
66
+ it "preserves the original" do
67
+ @original.should == Hamster.list(*values)
63
68
  end
64
69
 
65
70
  it "returns #{expected.inspect}" do
66
- @list.grep(String) { |item| item.downcase }.should == Hamster.list(*expected)
71
+ @result.should == Hamster.list(*expected)
67
72
  end
68
73
 
69
74
  it "is lazy" do
70
75
  count = 0
71
- @list.grep(Object) { |item| count += 1; item }
76
+ @original.grep(Object) { |item| count += 1; item }
72
77
  count.should <= 1
73
78
  end
74
79
 
@@ -4,22 +4,26 @@ require 'hamster/list'
4
4
 
5
5
  describe Hamster::List do
6
6
 
7
- describe "#head" do
7
+ [:head, :first].each do |method|
8
8
 
9
- [
10
- [[], nil],
11
- [["A"], "A"],
12
- [["A", "B", "C"], "A"],
13
- ].each do |values, expected|
9
+ describe "##{method}" do
14
10
 
15
- describe "on #{values.inspect}" do
11
+ [
12
+ [[], nil],
13
+ [["A"], "A"],
14
+ [["A", "B", "C"], "A"],
15
+ ].each do |values, expected|
16
16
 
17
- before do
18
- @list = Hamster.list(*values)
19
- end
17
+ describe "on #{values.inspect}" do
18
+
19
+ before do
20
+ @list = Hamster.list(*values)
21
+ end
22
+
23
+ it "returns #{expected.inspect}" do
24
+ @list.send(method).should == expected
25
+ end
20
26
 
21
- it "returns #{expected.inspect}" do
22
- @list.head.should == expected
23
27
  end
24
28
 
25
29
  end