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.
- data/README.rdoc +34 -10
- data/lib/hamster.rb +0 -1
- data/lib/hamster/hash.rb +77 -20
- data/lib/hamster/list.rb +189 -52
- data/lib/hamster/set.rb +78 -23
- data/lib/hamster/stack.rb +13 -14
- data/lib/hamster/trie.rb +13 -4
- data/lib/hamster/version.rb +1 -1
- data/spec/hamster/hash/all_spec.rb +53 -0
- data/spec/hamster/hash/any_spec.rb +62 -0
- data/spec/hamster/hash/construction_spec.rb +21 -5
- data/spec/hamster/hash/copying_spec.rb +6 -10
- data/spec/hamster/hash/each_spec.rb +6 -18
- data/spec/hamster/hash/empty_spec.rb +9 -5
- data/spec/hamster/hash/eql_spec.rb +17 -22
- data/spec/hamster/hash/filter_spec.rb +61 -0
- data/spec/hamster/hash/get_spec.rb +24 -12
- data/spec/hamster/hash/has_key_spec.rb +17 -13
- data/spec/hamster/hash/map_spec.rb +66 -0
- data/spec/hamster/hash/none_spec.rb +62 -0
- data/spec/hamster/hash/put_spec.rb +17 -73
- data/spec/hamster/hash/reduce_spec.rb +58 -0
- data/spec/hamster/hash/reject_spec.rb +57 -0
- data/spec/hamster/hash/remove_spec.rb +13 -85
- data/spec/hamster/hash/size_spec.rb +25 -0
- data/spec/hamster/list/cadr_spec.rb +37 -0
- data/spec/hamster/list/construction_spec.rb +46 -6
- data/spec/hamster/list/copying_spec.rb +13 -11
- data/spec/hamster/list/drop_spec.rb +29 -0
- data/spec/hamster/list/drop_while_spec.rb +39 -0
- data/spec/hamster/list/each_spec.rb +24 -24
- data/spec/hamster/list/empty_spec.rb +15 -6
- data/spec/hamster/list/eql_spec.rb +27 -7
- data/spec/hamster/list/filter_spec.rb +51 -0
- data/spec/hamster/list/head_spec.rb +27 -0
- data/spec/hamster/list/include_spec.rb +37 -0
- data/spec/hamster/list/lazy_spec.rb +21 -0
- data/spec/hamster/list/map_spec.rb +21 -19
- data/spec/hamster/list/reduce_spec.rb +27 -15
- data/spec/hamster/list/reject_spec.rb +47 -0
- data/spec/hamster/list/size_spec.rb +31 -0
- data/spec/hamster/list/tail_spec.rb +27 -0
- data/spec/hamster/list/take_spec.rb +29 -0
- data/spec/hamster/list/take_while_spec.rb +45 -0
- data/spec/hamster/set/add_spec.rb +49 -0
- data/spec/hamster/set/all_spec.rb +61 -0
- data/spec/hamster/set/any_spec.rb +61 -0
- data/spec/hamster/set/construction_spec.rb +3 -3
- data/spec/hamster/set/copying_spec.rb +21 -0
- data/spec/hamster/set/each_spec.rb +36 -0
- data/spec/hamster/set/empty_spec.rb +21 -0
- data/spec/hamster/set/eql_spec.rb +31 -0
- data/spec/hamster/set/filter_spec.rb +61 -0
- data/spec/hamster/set/include_spec.rb +29 -0
- data/spec/hamster/set/map_spec.rb +66 -0
- data/spec/hamster/set/none_spec.rb +61 -0
- data/spec/hamster/set/reduce_spec.rb +58 -0
- data/spec/hamster/set/reject_spec.rb +57 -0
- data/spec/hamster/set/remove_spec.rb +45 -0
- data/spec/hamster/set/size_spec.rb +25 -0
- data/spec/hamster/stack/copying_spec.rb +1 -1
- data/spec/hamster/stack/empty_spec.rb +2 -2
- data/spec/hamster/stack/eql_spec.rb +15 -4
- data/spec/hamster/stack/push_spec.rb +6 -26
- data/spec/hamster/trie/remove_spec.rb +117 -0
- metadata +39 -7
- data/TODO +0 -1
- data/spec/hamster/list/accessor_spec.rb +0 -26
- 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.
|
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-
|
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/
|
45
|
-
- spec/hamster/list/
|
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:
|
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
|