rr 0.3.5 → 0.3.6
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/CHANGES +3 -0
- data/Rakefile +1 -1
- data/examples/example_suite.rb +1 -1
- data/examples/rr/space/hash_with_object_id_key_example.rb +86 -0
- data/lib/rr.rb +0 -2
- data/lib/rr/hash_with_object_id_key.rb +12 -3
- data/lib/rr/space.rb +1 -3
- metadata +3 -2
data/CHANGES
CHANGED
data/Rakefile
CHANGED
data/examples/example_suite.rb
CHANGED
@@ -0,0 +1,86 @@
|
|
1
|
+
require "examples/example_helper"
|
2
|
+
|
3
|
+
module RR
|
4
|
+
describe HashWithObjectIdKey, "#[] and #[]=" do
|
5
|
+
it "stores object via object id" do
|
6
|
+
hash = HashWithObjectIdKey.new
|
7
|
+
array_1 = []
|
8
|
+
hash[array_1] = 1
|
9
|
+
array_2 = []
|
10
|
+
hash[array_2] = 2
|
11
|
+
|
12
|
+
hash[array_1].should_not == hash[array_2]
|
13
|
+
end
|
14
|
+
|
15
|
+
it "stores the passed in object" do
|
16
|
+
hash = HashWithObjectIdKey.new
|
17
|
+
obj = Object.new
|
18
|
+
hash[obj] = 1
|
19
|
+
hash.instance_eval {@keys}.should == {obj.__id__ => obj}
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
describe HashWithObjectIdKey, "#each" do
|
24
|
+
it "iterates through the items in the hash" do
|
25
|
+
hash = HashWithObjectIdKey.new
|
26
|
+
hash['one'] = 1
|
27
|
+
hash['two'] = 2
|
28
|
+
|
29
|
+
keys = []
|
30
|
+
values = []
|
31
|
+
hash.each do |key, value|
|
32
|
+
keys << key
|
33
|
+
values << value
|
34
|
+
end
|
35
|
+
|
36
|
+
keys.sort.should == ['one', 'two']
|
37
|
+
values.sort.should == [1, 2]
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
describe HashWithObjectIdKey, "#delete" do
|
42
|
+
before do
|
43
|
+
@hash = HashWithObjectIdKey.new
|
44
|
+
@key = Object.new
|
45
|
+
@hash[@key] = 1
|
46
|
+
end
|
47
|
+
|
48
|
+
it "removes the object from the hash" do
|
49
|
+
@hash.delete(@key)
|
50
|
+
@hash[@key].should == {}
|
51
|
+
end
|
52
|
+
|
53
|
+
it "removes the object from the keys hash" do
|
54
|
+
@hash.delete(@key)
|
55
|
+
@hash.instance_eval {@keys}.should == {}
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
describe HashWithObjectIdKey, "#keys" do
|
60
|
+
before do
|
61
|
+
@hash = HashWithObjectIdKey.new
|
62
|
+
@key = Object.new
|
63
|
+
@hash[@key] = 1
|
64
|
+
end
|
65
|
+
|
66
|
+
it "returns an array of the keys" do
|
67
|
+
@hash.keys.should == [@key]
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
describe HashWithObjectIdKey, "#include?" do
|
72
|
+
before do
|
73
|
+
@hash = HashWithObjectIdKey.new
|
74
|
+
@key = Object.new
|
75
|
+
@hash[@key] = 1
|
76
|
+
end
|
77
|
+
|
78
|
+
it "returns true when the key is in the Hash" do
|
79
|
+
@hash.should include(@key)
|
80
|
+
end
|
81
|
+
|
82
|
+
it "returns false when the key is not in the Hash" do
|
83
|
+
@hash.should_not include(Object.new)
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
data/lib/rr.rb
CHANGED
@@ -1,28 +1,37 @@
|
|
1
1
|
module RR
|
2
2
|
class HashWithObjectIdKey < ::Hash
|
3
|
+
def initialize
|
4
|
+
@keys = {}
|
5
|
+
super do |hash, subject_object|
|
6
|
+
hash.set_with_object_id(subject_object, {})
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
3
10
|
alias_method :get_with_object_id, :[]
|
4
11
|
def [](key)
|
12
|
+
@keys[key.__id__] = key
|
5
13
|
super(key.__id__)
|
6
14
|
end
|
7
15
|
|
8
16
|
alias_method :set_with_object_id, :[]=
|
9
17
|
def []=(key, value)
|
18
|
+
@keys[key.__id__] = key
|
10
19
|
super(key.__id__, value)
|
11
20
|
end
|
12
21
|
|
13
22
|
def each
|
14
23
|
super do |object_id, value|
|
15
|
-
yield
|
24
|
+
yield @keys[object_id], value
|
16
25
|
end
|
17
26
|
end
|
18
27
|
|
19
28
|
def delete(key)
|
29
|
+
@keys.delete(key.__id__)
|
20
30
|
super(key.__id__)
|
21
31
|
end
|
22
32
|
|
23
33
|
def keys
|
24
|
-
|
25
|
-
raw_keys.collect {|raw_key| ObjectSpace._id2ref(raw_key)}
|
34
|
+
@keys.values
|
26
35
|
end
|
27
36
|
|
28
37
|
def include?(key)
|
data/lib/rr/space.rb
CHANGED
@@ -18,9 +18,7 @@ module RR
|
|
18
18
|
attr_reader :doubles, :ordered_scenarios
|
19
19
|
attr_accessor :trim_backtrace
|
20
20
|
def initialize
|
21
|
-
@doubles = HashWithObjectIdKey.new
|
22
|
-
hash.set_with_object_id(subject_object, HashWithObjectIdKey.new)
|
23
|
-
end
|
21
|
+
@doubles = HashWithObjectIdKey.new
|
24
22
|
@ordered_scenarios = []
|
25
23
|
@trim_backtrace = false
|
26
24
|
end
|
metadata
CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.9.3
|
|
3
3
|
specification_version: 1
|
4
4
|
name: rr
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 0.3.
|
7
|
-
date: 2007-
|
6
|
+
version: 0.3.6
|
7
|
+
date: 2007-08-01 00:00:00 -07:00
|
8
8
|
summary: RR (Double Ruby) is a double framework that features a rich selection of double techniques and a terse syntax. http://xunitpatterns.com/Test%20Double.html
|
9
9
|
require_paths:
|
10
10
|
- lib
|
@@ -95,6 +95,7 @@ files:
|
|
95
95
|
- examples/rr/space/space_create_example.rb
|
96
96
|
- examples/rr/space/space_helper.rb
|
97
97
|
- examples/rr/space/space_example.rb
|
98
|
+
- examples/rr/space/hash_with_object_id_key_example.rb
|
98
99
|
- examples/rr/space/space_register_example.rb
|
99
100
|
- examples/rr/expectations/is_a_argument_equality_expectation_example.rb
|
100
101
|
- examples/rr/expectations/any_argument_expectation_example.rb
|