hamster 0.1.8 → 0.1.11

Sign up to get free protection for your applications and to get access to all the features.
Files changed (69) hide show
  1. data/README.rdoc +34 -10
  2. data/lib/hamster.rb +0 -1
  3. data/lib/hamster/hash.rb +77 -20
  4. data/lib/hamster/list.rb +189 -52
  5. data/lib/hamster/set.rb +78 -23
  6. data/lib/hamster/stack.rb +13 -14
  7. data/lib/hamster/trie.rb +13 -4
  8. data/lib/hamster/version.rb +1 -1
  9. data/spec/hamster/hash/all_spec.rb +53 -0
  10. data/spec/hamster/hash/any_spec.rb +62 -0
  11. data/spec/hamster/hash/construction_spec.rb +21 -5
  12. data/spec/hamster/hash/copying_spec.rb +6 -10
  13. data/spec/hamster/hash/each_spec.rb +6 -18
  14. data/spec/hamster/hash/empty_spec.rb +9 -5
  15. data/spec/hamster/hash/eql_spec.rb +17 -22
  16. data/spec/hamster/hash/filter_spec.rb +61 -0
  17. data/spec/hamster/hash/get_spec.rb +24 -12
  18. data/spec/hamster/hash/has_key_spec.rb +17 -13
  19. data/spec/hamster/hash/map_spec.rb +66 -0
  20. data/spec/hamster/hash/none_spec.rb +62 -0
  21. data/spec/hamster/hash/put_spec.rb +17 -73
  22. data/spec/hamster/hash/reduce_spec.rb +58 -0
  23. data/spec/hamster/hash/reject_spec.rb +57 -0
  24. data/spec/hamster/hash/remove_spec.rb +13 -85
  25. data/spec/hamster/hash/size_spec.rb +25 -0
  26. data/spec/hamster/list/cadr_spec.rb +37 -0
  27. data/spec/hamster/list/construction_spec.rb +46 -6
  28. data/spec/hamster/list/copying_spec.rb +13 -11
  29. data/spec/hamster/list/drop_spec.rb +29 -0
  30. data/spec/hamster/list/drop_while_spec.rb +39 -0
  31. data/spec/hamster/list/each_spec.rb +24 -24
  32. data/spec/hamster/list/empty_spec.rb +15 -6
  33. data/spec/hamster/list/eql_spec.rb +27 -7
  34. data/spec/hamster/list/filter_spec.rb +51 -0
  35. data/spec/hamster/list/head_spec.rb +27 -0
  36. data/spec/hamster/list/include_spec.rb +37 -0
  37. data/spec/hamster/list/lazy_spec.rb +21 -0
  38. data/spec/hamster/list/map_spec.rb +21 -19
  39. data/spec/hamster/list/reduce_spec.rb +27 -15
  40. data/spec/hamster/list/reject_spec.rb +47 -0
  41. data/spec/hamster/list/size_spec.rb +31 -0
  42. data/spec/hamster/list/tail_spec.rb +27 -0
  43. data/spec/hamster/list/take_spec.rb +29 -0
  44. data/spec/hamster/list/take_while_spec.rb +45 -0
  45. data/spec/hamster/set/add_spec.rb +49 -0
  46. data/spec/hamster/set/all_spec.rb +61 -0
  47. data/spec/hamster/set/any_spec.rb +61 -0
  48. data/spec/hamster/set/construction_spec.rb +3 -3
  49. data/spec/hamster/set/copying_spec.rb +21 -0
  50. data/spec/hamster/set/each_spec.rb +36 -0
  51. data/spec/hamster/set/empty_spec.rb +21 -0
  52. data/spec/hamster/set/eql_spec.rb +31 -0
  53. data/spec/hamster/set/filter_spec.rb +61 -0
  54. data/spec/hamster/set/include_spec.rb +29 -0
  55. data/spec/hamster/set/map_spec.rb +66 -0
  56. data/spec/hamster/set/none_spec.rb +61 -0
  57. data/spec/hamster/set/reduce_spec.rb +58 -0
  58. data/spec/hamster/set/reject_spec.rb +57 -0
  59. data/spec/hamster/set/remove_spec.rb +45 -0
  60. data/spec/hamster/set/size_spec.rb +25 -0
  61. data/spec/hamster/stack/copying_spec.rb +1 -1
  62. data/spec/hamster/stack/empty_spec.rb +2 -2
  63. data/spec/hamster/stack/eql_spec.rb +15 -4
  64. data/spec/hamster/stack/push_spec.rb +6 -26
  65. data/spec/hamster/trie/remove_spec.rb +117 -0
  66. metadata +39 -7
  67. data/TODO +0 -1
  68. data/spec/hamster/list/accessor_spec.rb +0 -26
  69. data/spec/hamster/list/car_spec.rb +0 -17
@@ -0,0 +1,117 @@
1
+ # require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
2
+ #
3
+ # describe Hamster::Hash do
4
+ #
5
+ # describe "#remove" do
6
+ #
7
+ # describe "the last key" do
8
+ #
9
+ # before do
10
+ # @hash = Hamster::Hash.new.put("A", "aye").remove("A")
11
+ # end
12
+ #
13
+ # it "no longer provides access to the removed key" do
14
+ # @hash.has_key?("A").should be_false
15
+ # end
16
+ #
17
+ # end
18
+ #
19
+ # describe "with an existing key" do
20
+ #
21
+ # before do
22
+ # @original = Hamster::Hash.new.put("A", "aye").put("B", "bee")
23
+ # @copy = @original.remove("A")
24
+ # end
25
+ #
26
+ # it "returns a modified copy" do
27
+ # @copy.should_not equal(@original)
28
+ # end
29
+ #
30
+ # describe "the original" do
31
+ #
32
+ # it "still has the original key/value pairs" do
33
+ # @original.get("A").should == "aye"
34
+ # @original.get("B").should == "bee"
35
+ # end
36
+ #
37
+ # it "still has the original size" do
38
+ # @original.size.should == 2
39
+ # end
40
+ #
41
+ # end
42
+ #
43
+ # describe "the modified copy" do
44
+ #
45
+ # it "has all but the removed original key/value pairs" do
46
+ # @copy.get("B").should == "bee"
47
+ # end
48
+ #
49
+ # it "doesn't have the removed key" do
50
+ # @copy.has_key?("A").should be_false
51
+ # end
52
+ #
53
+ # it "has a size one less than the original" do
54
+ # @copy.size.should == 1
55
+ # end
56
+ #
57
+ # end
58
+ #
59
+ # end
60
+ #
61
+ # describe "with non-existing keys" do
62
+ #
63
+ # before do
64
+ # @original = Hamster::Hash.new.put("A", "aye")
65
+ # @copy = @original.remove("missing")
66
+ # end
67
+ #
68
+ # it "returns self" do
69
+ # @copy.should equal(@original)
70
+ # end
71
+ #
72
+ # describe "the original" do
73
+ #
74
+ # it "still has the original key/value pairs" do
75
+ # @original.get("A").should == "aye"
76
+ # end
77
+ #
78
+ # it "still has the original size" do
79
+ # @original.size.should == 1
80
+ # end
81
+ #
82
+ # end
83
+ #
84
+ # end
85
+ #
86
+ # describe "with keys of the same hash value" do
87
+ #
88
+ # class Key
89
+ # def hash; 1; end
90
+ # end
91
+ #
92
+ # def instance_count
93
+ # ObjectSpace.garbage_collect
94
+ # ObjectSpace.each_object(Hamster::Trie) {}
95
+ # end
96
+ #
97
+ # before do
98
+ # @a = Key.new
99
+ # @b = Key.new
100
+ # @original = Hamster::Hash.new.put(@a, "aye").put(@b, "bee")
101
+ # end
102
+ #
103
+ # it "no longer provides access to the removed key" do
104
+ # copy = @original.remove(@b)
105
+ # copy.has_key?(@b).should be_false
106
+ # end
107
+ #
108
+ # it "provides access to the remaining keys" do
109
+ # copy = @original.remove(@a)
110
+ # copy.get(@b).should == "bee"
111
+ # end
112
+ #
113
+ # end
114
+ #
115
+ # end
116
+ #
117
+ # end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hamster
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.8
4
+ version: 0.1.11
5
5
  platform: ruby
6
6
  authors:
7
7
  - Simon Harris
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-11-29 00:00:00 +11:00
12
+ date: 2009-12-08 00:00:00 +11:00
13
13
  default_executable:
14
14
  dependencies: []
15
15
 
@@ -22,7 +22,6 @@ extensions: []
22
22
  extra_rdoc_files:
23
23
  - README.rdoc
24
24
  - History.rdoc
25
- - TODO
26
25
  - LICENSE
27
26
  files:
28
27
  - lib/hamster/hash.rb
@@ -32,36 +31,69 @@ files:
32
31
  - lib/hamster/trie.rb
33
32
  - lib/hamster/version.rb
34
33
  - lib/hamster.rb
34
+ - spec/hamster/hash/all_spec.rb
35
+ - spec/hamster/hash/any_spec.rb
35
36
  - spec/hamster/hash/construction_spec.rb
36
37
  - spec/hamster/hash/copying_spec.rb
37
38
  - spec/hamster/hash/each_spec.rb
38
39
  - spec/hamster/hash/empty_spec.rb
39
40
  - spec/hamster/hash/eql_spec.rb
41
+ - spec/hamster/hash/filter_spec.rb
40
42
  - spec/hamster/hash/get_spec.rb
41
43
  - spec/hamster/hash/has_key_spec.rb
44
+ - spec/hamster/hash/map_spec.rb
45
+ - spec/hamster/hash/none_spec.rb
42
46
  - spec/hamster/hash/put_spec.rb
47
+ - spec/hamster/hash/reduce_spec.rb
48
+ - spec/hamster/hash/reject_spec.rb
43
49
  - spec/hamster/hash/remove_spec.rb
44
- - spec/hamster/list/accessor_spec.rb
45
- - spec/hamster/list/car_spec.rb
50
+ - spec/hamster/hash/size_spec.rb
51
+ - spec/hamster/list/cadr_spec.rb
46
52
  - spec/hamster/list/construction_spec.rb
47
53
  - spec/hamster/list/copying_spec.rb
54
+ - spec/hamster/list/drop_spec.rb
55
+ - spec/hamster/list/drop_while_spec.rb
48
56
  - spec/hamster/list/each_spec.rb
49
57
  - spec/hamster/list/empty_spec.rb
50
58
  - spec/hamster/list/eql_spec.rb
59
+ - spec/hamster/list/filter_spec.rb
60
+ - spec/hamster/list/head_spec.rb
61
+ - spec/hamster/list/include_spec.rb
62
+ - spec/hamster/list/lazy_spec.rb
51
63
  - spec/hamster/list/map_spec.rb
52
64
  - spec/hamster/list/reduce_spec.rb
65
+ - spec/hamster/list/reject_spec.rb
66
+ - spec/hamster/list/size_spec.rb
67
+ - spec/hamster/list/tail_spec.rb
68
+ - spec/hamster/list/take_spec.rb
69
+ - spec/hamster/list/take_while_spec.rb
70
+ - spec/hamster/set/add_spec.rb
71
+ - spec/hamster/set/all_spec.rb
72
+ - spec/hamster/set/any_spec.rb
53
73
  - spec/hamster/set/construction_spec.rb
74
+ - spec/hamster/set/copying_spec.rb
75
+ - spec/hamster/set/each_spec.rb
76
+ - spec/hamster/set/empty_spec.rb
77
+ - spec/hamster/set/eql_spec.rb
78
+ - spec/hamster/set/filter_spec.rb
79
+ - spec/hamster/set/include_spec.rb
80
+ - spec/hamster/set/map_spec.rb
81
+ - spec/hamster/set/none_spec.rb
82
+ - spec/hamster/set/reduce_spec.rb
83
+ - spec/hamster/set/reject_spec.rb
84
+ - spec/hamster/set/remove_spec.rb
85
+ - spec/hamster/set/size_spec.rb
54
86
  - spec/hamster/stack/copying_spec.rb
55
87
  - spec/hamster/stack/empty_spec.rb
56
88
  - spec/hamster/stack/eql_spec.rb
57
89
  - spec/hamster/stack/push_spec.rb
90
+ - spec/hamster/trie/remove_spec.rb
58
91
  - spec/spec.opts
59
92
  - spec/spec_helper.rb
60
93
  - tasks/spec.rb
61
94
  - Rakefile
62
95
  - README.rdoc
63
96
  - History.rdoc
64
- - TODO
65
97
  - LICENSE
66
98
  has_rdoc: true
67
99
  homepage: http://github.com/harukizaemon/hamster
@@ -76,7 +108,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
76
108
  requirements:
77
109
  - - ">="
78
110
  - !ruby/object:Gem::Version
79
- version: "0"
111
+ version: 1.9.1
80
112
  version:
81
113
  required_rubygems_version: !ruby/object:Gem::Requirement
82
114
  requirements:
data/TODO DELETED
@@ -1 +0,0 @@
1
- * Implement Enumerable methods such that they return instances of the class (or List as a last resort) rather than Array.
@@ -1,26 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
2
-
3
- describe Hamster::List do
4
-
5
- (1..5).each do |i|
6
-
7
- method_name = "ca#{'d' * i}r"
8
- values = (1..6).to_a
9
- expected_result = i + 1
10
-
11
- describe "##{method_name}" do
12
-
13
- it "when empty is nil" do
14
- Hamster::List.new.send(method_name).should be_nil
15
- end
16
-
17
- it "with #{values} is #{i + 1}" do
18
- list = values.reverse.inject(Hamster::List.new) { |list, i| list.cons(i) }
19
- list.send(method_name).should == expected_result
20
- end
21
-
22
- end
23
-
24
- end
25
-
26
- end
@@ -1,17 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
2
-
3
- describe Hamster::List do
4
-
5
- describe "#head" do
6
-
7
- it "initially returns nil" do
8
- Hamster::List.new.head.should be_nil
9
- end
10
-
11
- it "returns the first item in the list" do
12
- Hamster::List.new.cons("A").head.should == "A"
13
- end
14
-
15
- end
16
-
17
- end