rr 0.4.1 → 0.4.2
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/lib/rr.rb +1 -1
- data/lib/rr/adapters/rr_methods.rb +1 -1
- data/lib/rr/{double_insertion.rb → double_injection.rb} +7 -7
- data/lib/rr/space.rb +6 -6
- data/spec/rr/double/{double_insertion_bind_spec.rb → double_injection_bind_spec.rb} +4 -4
- data/spec/rr/double/{double_insertion_dispatching_spec.rb → double_injection_dispatching_spec.rb} +1 -1
- data/spec/rr/double/{double_insertion_has_original_method_spec.rb → double_injection_has_original_method_spec.rb} +2 -2
- data/spec/rr/double/{double_insertion_register_scenario_spec.rb → double_injection_register_scenario_spec.rb} +2 -2
- data/spec/rr/double/{double_insertion_reset_spec.rb → double_injection_reset_spec.rb} +10 -10
- data/spec/rr/double/{double_insertion_spec.rb → double_injection_spec.rb} +13 -13
- data/spec/rr/double/{double_insertion_verify_spec.rb → double_injection_verify_spec.rb} +1 -1
- data/spec/rr/double_spec.rb +1 -1
- data/spec/rr/rspec/rspec_usage_spec.rb +5 -5
- metadata +9 -9
data/CHANGES
CHANGED
data/Rakefile
CHANGED
data/lib/rr.rb
CHANGED
@@ -7,7 +7,7 @@ require "#{dir}/rr/errors/argument_equality_error"
|
|
7
7
|
require "#{dir}/rr/errors/times_called_error"
|
8
8
|
|
9
9
|
require "#{dir}/rr/space"
|
10
|
-
require "#{dir}/rr/
|
10
|
+
require "#{dir}/rr/double_injection"
|
11
11
|
require "#{dir}/rr/hash_with_object_id_key"
|
12
12
|
|
13
13
|
require "#{dir}/rr/double_method_proxy"
|
@@ -1,8 +1,8 @@
|
|
1
1
|
module RR
|
2
|
-
# RR::
|
2
|
+
# RR::DoubleInjection is the binding of an object and a method.
|
3
3
|
# A double_insertion has 0 to many Double objects. Each Double
|
4
4
|
# has Argument Expectations and Times called Expectations.
|
5
|
-
class
|
5
|
+
class DoubleInjection
|
6
6
|
MethodArguments = Struct.new(:arguments, :block)
|
7
7
|
attr_reader :space, :object, :method_name, :scenarios
|
8
8
|
|
@@ -16,13 +16,13 @@ module RR
|
|
16
16
|
@scenarios = []
|
17
17
|
end
|
18
18
|
|
19
|
-
# RR::
|
20
|
-
# into this
|
19
|
+
# RR::DoubleInjection#register_scenario adds the passed in Double
|
20
|
+
# into this DoubleInjection's list of Double objects.
|
21
21
|
def register_scenario(scenario)
|
22
22
|
@scenarios << scenario
|
23
23
|
end
|
24
24
|
|
25
|
-
# RR::
|
25
|
+
# RR::DoubleInjection#bind injects a method that acts as a dispatcher
|
26
26
|
# that dispatches to the matching Double when the method
|
27
27
|
# is called.
|
28
28
|
def bind
|
@@ -36,7 +36,7 @@ module RR
|
|
36
36
|
meta.class_eval(returns_method, __FILE__, __LINE__ - 5)
|
37
37
|
end
|
38
38
|
|
39
|
-
# RR::
|
39
|
+
# RR::DoubleInjection#verify verifies each Double
|
40
40
|
# TimesCalledExpectation are met.
|
41
41
|
def verify
|
42
42
|
@scenarios.each do |scenario|
|
@@ -44,7 +44,7 @@ module RR
|
|
44
44
|
end
|
45
45
|
end
|
46
46
|
|
47
|
-
# RR::
|
47
|
+
# RR::DoubleInjection#reset removes the injected dispatcher method.
|
48
48
|
# It binds the original method implementation on the object
|
49
49
|
# if one exists.
|
50
50
|
def reset
|
data/lib/rr/space.rb
CHANGED
@@ -49,15 +49,15 @@ module RR
|
|
49
49
|
DoubleDefinition.new(self)
|
50
50
|
end
|
51
51
|
|
52
|
-
# Reuses or creates, if none exists, a
|
52
|
+
# Reuses or creates, if none exists, a DoubleInjection for the passed
|
53
53
|
# in object and method_name.
|
54
|
-
# When a
|
54
|
+
# When a DoubleInjection is created, it binds the dispatcher to the
|
55
55
|
# object.
|
56
56
|
def double_insertion(object, method_name)
|
57
57
|
double_insertion = @double_insertions[object][method_name.to_sym]
|
58
58
|
return double_insertion if double_insertion
|
59
59
|
|
60
|
-
double_insertion =
|
60
|
+
double_insertion = DoubleInjection.new(self, object, method_name.to_sym)
|
61
61
|
@double_insertions[object][method_name.to_sym] = double_insertion
|
62
62
|
double_insertion.bind
|
63
63
|
double_insertion
|
@@ -85,7 +85,7 @@ module RR
|
|
85
85
|
scenario
|
86
86
|
end
|
87
87
|
|
88
|
-
# Verifies all the
|
88
|
+
# Verifies all the DoubleInjection objects have met their
|
89
89
|
# TimesCalledExpectations.
|
90
90
|
def verify_doubles
|
91
91
|
@double_insertions.each do |object, method_double_map|
|
@@ -101,14 +101,14 @@ module RR
|
|
101
101
|
reset_double_insertions
|
102
102
|
end
|
103
103
|
|
104
|
-
# Verifies the
|
104
|
+
# Verifies the DoubleInjection for the passed in object and method_name.
|
105
105
|
def verify_double(object, method_name)
|
106
106
|
@double_insertions[object][method_name].verify
|
107
107
|
ensure
|
108
108
|
reset_double object, method_name
|
109
109
|
end
|
110
110
|
|
111
|
-
# Resets the
|
111
|
+
# Resets the DoubleInjection for the passed in object and method_name.
|
112
112
|
def reset_double(object, method_name)
|
113
113
|
double_insertion = @double_insertions[object].delete(method_name)
|
114
114
|
@double_insertions.delete(object) if @double_insertions[object].empty?
|
@@ -1,7 +1,7 @@
|
|
1
1
|
require "spec/spec_helper"
|
2
2
|
|
3
3
|
module RR
|
4
|
-
describe
|
4
|
+
describe DoubleInjection, "#bind with an existing method" do
|
5
5
|
before do
|
6
6
|
@space = Space.new
|
7
7
|
@object = Object.new
|
@@ -11,7 +11,7 @@ module RR
|
|
11
11
|
end
|
12
12
|
@original_method = @object.method(:foobar)
|
13
13
|
@object.methods.should include(@method_name.to_s)
|
14
|
-
@double_insertion =
|
14
|
+
@double_insertion = DoubleInjection.new(@space, @object, @method_name)
|
15
15
|
end
|
16
16
|
|
17
17
|
it "overrides the original method with the double_insertion's dispatching methods" do
|
@@ -41,13 +41,13 @@ module RR
|
|
41
41
|
end
|
42
42
|
end
|
43
43
|
|
44
|
-
describe
|
44
|
+
describe DoubleInjection, "#bind without an existing method" do
|
45
45
|
before do
|
46
46
|
@space = Space.new
|
47
47
|
@object = Object.new
|
48
48
|
@method_name = :foobar
|
49
49
|
@object.methods.should_not include(@method_name.to_s)
|
50
|
-
@double_insertion =
|
50
|
+
@double_insertion = DoubleInjection.new(@space, @object, @method_name)
|
51
51
|
end
|
52
52
|
|
53
53
|
it "overrides the original method with the double_insertion's dispatching methods" do
|
@@ -1,12 +1,12 @@
|
|
1
1
|
require "spec/spec_helper"
|
2
2
|
|
3
3
|
module RR
|
4
|
-
describe
|
4
|
+
describe DoubleInjection, "#object_has_original_method?" do
|
5
5
|
before do
|
6
6
|
@space = Space.new
|
7
7
|
@object = Object.new
|
8
8
|
@method_name = :to_s
|
9
|
-
@double_insertion =
|
9
|
+
@double_insertion = DoubleInjection.new(@space, @object, @method_name)
|
10
10
|
class << @double_insertion
|
11
11
|
public :original_method_name
|
12
12
|
end
|
@@ -1,13 +1,13 @@
|
|
1
1
|
require "spec/spec_helper"
|
2
2
|
|
3
3
|
module RR
|
4
|
-
describe
|
4
|
+
describe DoubleInjection, "#register_scenario" do
|
5
5
|
before do
|
6
6
|
@space = Space.new
|
7
7
|
@object = Object.new
|
8
8
|
@method_name = :foobar
|
9
9
|
@object.methods.should_not include(@method_name.to_s)
|
10
|
-
@double_insertion =
|
10
|
+
@double_insertion = DoubleInjection.new(@space, @object, @method_name)
|
11
11
|
def @double_insertion.scenarios
|
12
12
|
@scenarios
|
13
13
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
require "spec/spec_helper"
|
2
2
|
|
3
3
|
module RR
|
4
|
-
describe
|
4
|
+
describe DoubleInjection, "#reset", :shared => true do
|
5
5
|
it "cleans up by removing the __rr__method" do
|
6
6
|
@double_insertion.bind
|
7
7
|
@object.methods.should include("__rr__foobar")
|
@@ -11,15 +11,15 @@ module RR
|
|
11
11
|
end
|
12
12
|
end
|
13
13
|
|
14
|
-
describe
|
15
|
-
it_should_behave_like "RR::
|
14
|
+
describe DoubleInjection, "#reset when method does not exist" do
|
15
|
+
it_should_behave_like "RR::DoubleInjection#reset"
|
16
16
|
|
17
17
|
before do
|
18
18
|
@space = Space.new
|
19
19
|
@object = Object.new
|
20
20
|
@method_name = :foobar
|
21
21
|
@object.methods.should_not include(@method_name.to_s)
|
22
|
-
@double_insertion =
|
22
|
+
@double_insertion = DoubleInjection.new(@space, @object, @method_name)
|
23
23
|
end
|
24
24
|
|
25
25
|
it "removes the method" do
|
@@ -32,8 +32,8 @@ module RR
|
|
32
32
|
end
|
33
33
|
end
|
34
34
|
|
35
|
-
describe
|
36
|
-
it_should_behave_like "RR::
|
35
|
+
describe DoubleInjection, "#reset when method exists" do
|
36
|
+
it_should_behave_like "RR::DoubleInjection#reset"
|
37
37
|
|
38
38
|
before do
|
39
39
|
@space = Space.new
|
@@ -44,7 +44,7 @@ module RR
|
|
44
44
|
end
|
45
45
|
@object.methods.should include(@method_name.to_s)
|
46
46
|
@original_method = @object.method(@method_name)
|
47
|
-
@double_insertion =
|
47
|
+
@double_insertion = DoubleInjection.new(@space, @object, @method_name)
|
48
48
|
|
49
49
|
@double_insertion.bind
|
50
50
|
@object.methods.should include(@method_name.to_s)
|
@@ -57,8 +57,8 @@ module RR
|
|
57
57
|
end
|
58
58
|
end
|
59
59
|
|
60
|
-
describe
|
61
|
-
it_should_behave_like "RR::
|
60
|
+
describe DoubleInjection, "#reset when method with block exists" do
|
61
|
+
it_should_behave_like "RR::DoubleInjection#reset"
|
62
62
|
|
63
63
|
before do
|
64
64
|
@space = Space.new
|
@@ -69,7 +69,7 @@ module RR
|
|
69
69
|
end
|
70
70
|
@object.methods.should include(@method_name.to_s)
|
71
71
|
@original_method = @object.method(@method_name)
|
72
|
-
@double_insertion =
|
72
|
+
@double_insertion = DoubleInjection.new(@space, @object, @method_name)
|
73
73
|
|
74
74
|
@double_insertion.bind
|
75
75
|
@object.methods.should include(@method_name.to_s)
|
@@ -1,46 +1,46 @@
|
|
1
1
|
require "spec/spec_helper"
|
2
2
|
|
3
3
|
module RR
|
4
|
-
describe
|
4
|
+
describe DoubleInjection, :shared => true do
|
5
5
|
it "sets up object and method_name" do
|
6
6
|
@double_insertion.object.should === @object
|
7
7
|
@double_insertion.method_name.should == @method_name.to_sym
|
8
8
|
end
|
9
9
|
end
|
10
10
|
|
11
|
-
describe
|
12
|
-
it_should_behave_like "RR::
|
11
|
+
describe DoubleInjection, "#initialize where method_name is a symbol" do
|
12
|
+
it_should_behave_like "RR::DoubleInjection"
|
13
13
|
|
14
14
|
before do
|
15
15
|
@space = Space.new
|
16
16
|
@object = Object.new
|
17
17
|
@method_name = :foobar
|
18
18
|
@object.methods.should_not include(@method_name.to_s)
|
19
|
-
@double_insertion =
|
19
|
+
@double_insertion = DoubleInjection.new(@space, @object, @method_name)
|
20
20
|
end
|
21
21
|
end
|
22
22
|
|
23
|
-
describe
|
24
|
-
it_should_behave_like "RR::
|
23
|
+
describe DoubleInjection, "#initialize where method_name is a string" do
|
24
|
+
it_should_behave_like "RR::DoubleInjection"
|
25
25
|
|
26
26
|
before do
|
27
27
|
@space = Space.new
|
28
28
|
@object = Object.new
|
29
29
|
@method_name = 'foobar'
|
30
30
|
@object.methods.should_not include(@method_name)
|
31
|
-
@double_insertion =
|
31
|
+
@double_insertion = DoubleInjection.new(@space, @object, @method_name)
|
32
32
|
end
|
33
33
|
end
|
34
34
|
|
35
|
-
describe
|
36
|
-
it_should_behave_like "RR::
|
35
|
+
describe DoubleInjection, "#initialize where method does not exist on object" do
|
36
|
+
it_should_behave_like "RR::DoubleInjection"
|
37
37
|
|
38
38
|
before do
|
39
39
|
@space = Space.new
|
40
40
|
@object = Object.new
|
41
41
|
@method_name = :foobar
|
42
42
|
@object.methods.should_not include(@method_name.to_s)
|
43
|
-
@double_insertion =
|
43
|
+
@double_insertion = DoubleInjection.new(@space, @object, @method_name)
|
44
44
|
end
|
45
45
|
|
46
46
|
it "object does not have original method" do
|
@@ -48,15 +48,15 @@ module RR
|
|
48
48
|
end
|
49
49
|
end
|
50
50
|
|
51
|
-
describe
|
52
|
-
it_should_behave_like "RR::
|
51
|
+
describe DoubleInjection, "#initialize where method exists on object" do
|
52
|
+
it_should_behave_like "RR::DoubleInjection"
|
53
53
|
|
54
54
|
before do
|
55
55
|
@space = Space.new
|
56
56
|
@object = Object.new
|
57
57
|
@method_name = :to_s
|
58
58
|
@object.methods.should include(@method_name.to_s)
|
59
|
-
@double_insertion =
|
59
|
+
@double_insertion = DoubleInjection.new(@space, @object, @method_name)
|
60
60
|
end
|
61
61
|
|
62
62
|
it "has a original_method" do
|
data/spec/rr/double_spec.rb
CHANGED
@@ -622,7 +622,7 @@ module RR
|
|
622
622
|
end
|
623
623
|
|
624
624
|
describe "#method_name" do
|
625
|
-
it "returns the
|
625
|
+
it "returns the DoubleInjection's method_name" do
|
626
626
|
double_insertion.method_name.should == :foobar
|
627
627
|
scenario.method_name.should == :foobar
|
628
628
|
end
|
@@ -6,7 +6,7 @@ describe RR do
|
|
6
6
|
@subject = Object.new
|
7
7
|
end
|
8
8
|
|
9
|
-
it "creates a mock
|
9
|
+
it "creates a mock DoubleInjection Double" do
|
10
10
|
mock(@subject).foobar(1, 2) {:baz}
|
11
11
|
@subject.foobar(1, 2).should == :baz
|
12
12
|
end
|
@@ -17,7 +17,7 @@ describe RR do
|
|
17
17
|
@subject = Object.new
|
18
18
|
end
|
19
19
|
|
20
|
-
it "creates a stub
|
20
|
+
it "creates a stub DoubleInjection Double" do
|
21
21
|
stub(@subject).foobar {:baz}
|
22
22
|
@subject.foobar("any", "thing").should == :baz
|
23
23
|
end
|
@@ -31,7 +31,7 @@ describe RR do
|
|
31
31
|
end
|
32
32
|
end
|
33
33
|
|
34
|
-
it "creates a proxy
|
34
|
+
it "creates a proxy DoubleInjection Double" do
|
35
35
|
mock.proxy(@subject).foobar
|
36
36
|
@subject.foobar.should == :baz
|
37
37
|
end
|
@@ -45,7 +45,7 @@ describe RR do
|
|
45
45
|
end
|
46
46
|
end
|
47
47
|
|
48
|
-
it "creates a proxy
|
48
|
+
it "creates a proxy DoubleInjection Double" do
|
49
49
|
stub.proxy(@subject).foobar
|
50
50
|
@subject.foobar.should == :baz
|
51
51
|
end
|
@@ -59,7 +59,7 @@ describe RR do
|
|
59
59
|
end
|
60
60
|
end
|
61
61
|
|
62
|
-
it "creates a proxy
|
62
|
+
it "creates a proxy DoubleInjection Double" do
|
63
63
|
stub.proxy(@subject).foobar
|
64
64
|
@subject.foobar.should == :baz
|
65
65
|
end
|
metadata
CHANGED
@@ -3,7 +3,7 @@ rubygems_version: 0.9.4
|
|
3
3
|
specification_version: 1
|
4
4
|
name: rr
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 0.4.
|
6
|
+
version: 0.4.2
|
7
7
|
date: 2007-12-31 00:00:00 -08: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:
|
@@ -43,7 +43,6 @@ files:
|
|
43
43
|
- lib/rr/times_called_matchers/terminal.rb
|
44
44
|
- lib/rr/times_called_matchers/range_matcher.rb
|
45
45
|
- lib/rr/hash_with_object_id_key.rb
|
46
|
-
- lib/rr/double_insertion.rb
|
47
46
|
- lib/rr/double_creator.rb
|
48
47
|
- lib/rr/expectations/argument_equality_expectation.rb
|
49
48
|
- lib/rr/expectations/times_called_expectation.rb
|
@@ -60,6 +59,7 @@ files:
|
|
60
59
|
- lib/rr/adapters/test_unit.rb
|
61
60
|
- lib/rr/adapters/rspec.rb
|
62
61
|
- lib/rr/double_definition.rb
|
62
|
+
- lib/rr/double_injection.rb
|
63
63
|
- lib/rr/double_method_proxy.rb
|
64
64
|
- lib/rr/space.rb
|
65
65
|
- lib/rr/wildcard_matchers/boolean.rb
|
@@ -118,13 +118,13 @@ files:
|
|
118
118
|
- spec/rr/adapters/rr_methods_creator_spec.rb
|
119
119
|
- spec/rr/adapters/rr_methods_argument_matcher_spec.rb
|
120
120
|
- spec/rr/double_definition_spec.rb
|
121
|
-
- spec/rr/double/
|
122
|
-
- spec/rr/double/
|
123
|
-
- spec/rr/double/
|
124
|
-
- spec/rr/double/
|
125
|
-
- spec/rr/double/
|
126
|
-
- spec/rr/double/
|
127
|
-
- spec/rr/double/
|
121
|
+
- spec/rr/double/double_injection_register_scenario_spec.rb
|
122
|
+
- spec/rr/double/double_injection_has_original_method_spec.rb
|
123
|
+
- spec/rr/double/double_injection_spec.rb
|
124
|
+
- spec/rr/double/double_injection_bind_spec.rb
|
125
|
+
- spec/rr/double/double_injection_dispatching_spec.rb
|
126
|
+
- spec/rr/double/double_injection_verify_spec.rb
|
127
|
+
- spec/rr/double/double_injection_reset_spec.rb
|
128
128
|
- spec/rr/double_method_proxy_spec.rb
|
129
129
|
- spec/rr/test_unit/test_unit_backtrace_test.rb
|
130
130
|
- spec/rr/test_unit/test_helper.rb
|