hamster 0.1.8 → 0.1.11

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 (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