rr 0.2.5 → 0.3.0
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 +5 -0
- data/README +20 -9
- data/Rakefile +1 -1
- data/examples/example_suite.rb +1 -1
- data/examples/high_level_example.rb +4 -4
- data/examples/rr/double/double_dispatching_example.rb +41 -41
- data/examples/rr/double/double_verify_example.rb +1 -1
- data/examples/rr/expectations/times_called_expectation/times_called_expectation_helper.rb +2 -2
- data/examples/rr/extensions/instance_methods_creator_example.rb +48 -38
- data/examples/rr/extensions/instance_methods_space_example.rb +8 -8
- data/examples/rr/rspec/rspec_adapter_example.rb +9 -9
- data/examples/rr/rspec/rspec_usage_example.rb +16 -2
- data/examples/rr/scenario_creator_example.rb +400 -0
- data/examples/rr/scenario_example.rb +19 -4
- data/examples/rr/scenario_method_proxy_example.rb +71 -0
- data/examples/rr/space/space_create_example.rb +93 -106
- data/examples/rr/space/space_example.rb +2 -2
- data/examples/rr/space/space_register_example.rb +3 -3
- data/examples/rr/space/space_reset_example.rb +11 -11
- data/examples/rr/space/space_verify_example.rb +12 -12
- data/examples/rr/test_unit/test_unit_integration_test.rb +11 -2
- data/lib/rr.rb +10 -12
- data/lib/rr/errors/scenario_definition_error.rb +6 -0
- data/lib/rr/extensions/instance_methods.rb +84 -84
- data/lib/rr/scenario.rb +18 -3
- data/lib/rr/scenario_creator.rb +233 -0
- data/lib/rr/scenario_method_proxy.rb +19 -0
- data/lib/rr/space.rb +12 -32
- metadata +7 -13
- data/examples/rr/do_not_allow_creator_example.rb +0 -111
- data/examples/rr/mock_creator_example.rb +0 -87
- data/examples/rr/mock_probe_creator_example.rb +0 -120
- data/examples/rr/stub_creator_example.rb +0 -96
- data/examples/rr/stub_probe_creator_example.rb +0 -127
- data/lib/rr/creator.rb +0 -16
- data/lib/rr/do_not_allow_creator.rb +0 -33
- data/lib/rr/mock_creator.rb +0 -26
- data/lib/rr/mock_probe_creator.rb +0 -36
- data/lib/rr/stub_creator.rb +0 -30
- data/lib/rr/stub_probe_creator.rb +0 -42
@@ -1,87 +0,0 @@
|
|
1
|
-
require "examples/example_helper"
|
2
|
-
|
3
|
-
module RR
|
4
|
-
describe MockCreator, :shared => true do
|
5
|
-
before(:each) do
|
6
|
-
@space = Space.new
|
7
|
-
@subject = Object.new
|
8
|
-
end
|
9
|
-
|
10
|
-
it "initializes creator with passed in object" do
|
11
|
-
class << @creator
|
12
|
-
attr_reader :subject
|
13
|
-
end
|
14
|
-
@creator.subject.should === @subject
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
describe MockCreator, ".new without block" do
|
19
|
-
it_should_behave_like "RR::MockCreator"
|
20
|
-
|
21
|
-
before do
|
22
|
-
@creator = MockCreator.new(@space, @subject)
|
23
|
-
end
|
24
|
-
|
25
|
-
it "clears out all methods from creator" do
|
26
|
-
creator_subclass = Class.new(MockCreator) do
|
27
|
-
def i_should_be_a_scenario
|
28
|
-
end
|
29
|
-
end
|
30
|
-
creator_subclass.instance_methods.should include('i_should_be_a_scenario')
|
31
|
-
|
32
|
-
creator = creator_subclass.new(@space, @subject)
|
33
|
-
creator.i_should_be_a_scenario.should be_instance_of(Scenario)
|
34
|
-
end
|
35
|
-
end
|
36
|
-
|
37
|
-
describe MockCreator, ".new with block" do
|
38
|
-
it_should_behave_like "RR::MockCreator"
|
39
|
-
|
40
|
-
before do
|
41
|
-
@creator = MockCreator.new(@space, @subject) do |c|
|
42
|
-
c.foobar(1, 2) {:one_two}
|
43
|
-
c.foobar(1) {:one}
|
44
|
-
c.foobar.with_any_args {:default}
|
45
|
-
c.baz() {:baz_result}
|
46
|
-
end
|
47
|
-
end
|
48
|
-
|
49
|
-
it "creates doubles" do
|
50
|
-
@subject.foobar(1, 2).should == :one_two
|
51
|
-
@subject.foobar(1).should == :one
|
52
|
-
@subject.foobar(:something).should == :default
|
53
|
-
@subject.baz.should == :baz_result
|
54
|
-
end
|
55
|
-
|
56
|
-
it "clears out all methods from creator" do
|
57
|
-
creator_subclass = Class.new(MockCreator) do
|
58
|
-
def i_should_be_a_scenario
|
59
|
-
end
|
60
|
-
end
|
61
|
-
creator_subclass.instance_methods.should include('i_should_be_a_scenario')
|
62
|
-
|
63
|
-
creator_subclass.new(@space, @subject) do |m|
|
64
|
-
m.i_should_be_a_scenario.should be_instance_of(Scenario)
|
65
|
-
end
|
66
|
-
end
|
67
|
-
end
|
68
|
-
|
69
|
-
|
70
|
-
describe MockCreator, "#method_missing" do
|
71
|
-
it_should_behave_like "RR::MockCreator"
|
72
|
-
|
73
|
-
before do
|
74
|
-
@subject = Object.new
|
75
|
-
@creator = MockCreator.new(@space, @subject)
|
76
|
-
end
|
77
|
-
|
78
|
-
it "sets expectations on the subject" do
|
79
|
-
@creator.foobar(1, 2) {:baz}.twice
|
80
|
-
|
81
|
-
@subject.foobar(1, 2).should == :baz
|
82
|
-
@subject.foobar(1, 2).should == :baz
|
83
|
-
proc {@subject.foobar(1, 2)}.should raise_error(Errors::TimesCalledError)
|
84
|
-
end
|
85
|
-
end
|
86
|
-
|
87
|
-
end
|
@@ -1,120 +0,0 @@
|
|
1
|
-
require "examples/example_helper"
|
2
|
-
|
3
|
-
module RR
|
4
|
-
describe MockProbeCreator, :shared => true do
|
5
|
-
before(:each) do
|
6
|
-
@space = Space.new
|
7
|
-
@subject = Object.new
|
8
|
-
end
|
9
|
-
|
10
|
-
it "initializes creator with passed in object" do
|
11
|
-
class << @creator
|
12
|
-
attr_reader :subject
|
13
|
-
end
|
14
|
-
@creator.subject.should === @subject
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
describe MockProbeCreator, ".new without block" do
|
19
|
-
it_should_behave_like "RR::MockProbeCreator"
|
20
|
-
|
21
|
-
before do
|
22
|
-
@creator = MockProbeCreator.new(@space, @subject)
|
23
|
-
end
|
24
|
-
|
25
|
-
it "clears out all methods from creator" do
|
26
|
-
creator_subclass = Class.new(MockProbeCreator) do
|
27
|
-
def i_should_be_a_scenario
|
28
|
-
end
|
29
|
-
end
|
30
|
-
creator_subclass.instance_methods.should include('i_should_be_a_scenario')
|
31
|
-
|
32
|
-
creator = creator_subclass.new(@space, @subject)
|
33
|
-
creator.i_should_be_a_scenario.should be_instance_of(Scenario)
|
34
|
-
end
|
35
|
-
end
|
36
|
-
|
37
|
-
describe MockProbeCreator, ".new with block" do
|
38
|
-
it_should_behave_like "RR::MockProbeCreator"
|
39
|
-
|
40
|
-
before do
|
41
|
-
def @subject.foobar(*args)
|
42
|
-
:original_foobar
|
43
|
-
end
|
44
|
-
@creator = MockProbeCreator.new(@space, @subject) do |c|
|
45
|
-
c.foobar(1, 2)
|
46
|
-
c.foobar(1)
|
47
|
-
c.foobar.with_any_args
|
48
|
-
end
|
49
|
-
end
|
50
|
-
|
51
|
-
it "creates doubles" do
|
52
|
-
@subject.foobar(1, 2).should == :original_foobar
|
53
|
-
@subject.foobar(1).should == :original_foobar
|
54
|
-
@subject.foobar(:something).should == :original_foobar
|
55
|
-
proc {@subject.foobar(:nasty)}.should raise_error
|
56
|
-
end
|
57
|
-
|
58
|
-
it "clears out all methods from creator" do
|
59
|
-
creator_subclass = Class.new(MockProbeCreator) do
|
60
|
-
def i_should_be_a_scenario
|
61
|
-
end
|
62
|
-
end
|
63
|
-
creator_subclass.instance_methods.should include('i_should_be_a_scenario')
|
64
|
-
|
65
|
-
creator_subclass.new(@space, @subject) do |m|
|
66
|
-
m.i_should_be_a_scenario.should be_instance_of(Scenario)
|
67
|
-
end
|
68
|
-
end
|
69
|
-
end
|
70
|
-
|
71
|
-
describe MockProbeCreator, ".new where method takes a block" do
|
72
|
-
it_should_behave_like "RR::MockProbeCreator"
|
73
|
-
|
74
|
-
before do
|
75
|
-
def @subject.foobar(*args, &block)
|
76
|
-
yield(*args)
|
77
|
-
end
|
78
|
-
@creator = MockProbeCreator.new(@space, @subject)
|
79
|
-
end
|
80
|
-
|
81
|
-
it "calls the block" do
|
82
|
-
@creator.foobar(1, 2)
|
83
|
-
@subject.foobar(1, 2) {|arg1, arg2| [arg2, arg1]}.should == [2, 1]
|
84
|
-
end
|
85
|
-
end
|
86
|
-
|
87
|
-
|
88
|
-
describe MockProbeCreator, "#method_missing" do
|
89
|
-
it_should_behave_like "RR::MockProbeCreator"
|
90
|
-
|
91
|
-
before do
|
92
|
-
@subject = Object.new
|
93
|
-
@creator = MockProbeCreator.new(@space, @subject)
|
94
|
-
end
|
95
|
-
|
96
|
-
it "sets expectations on the subject while calling the original method" do
|
97
|
-
def @subject.foobar(*args); :baz; end
|
98
|
-
@creator.foobar(1, 2).twice
|
99
|
-
@subject.foobar(1, 2).should == :baz
|
100
|
-
@subject.foobar(1, 2).should == :baz
|
101
|
-
proc {@subject.foobar(1, 2)}.should raise_error(Errors::TimesCalledError)
|
102
|
-
end
|
103
|
-
|
104
|
-
it "sets after_call on the scenario when passed a block" do
|
105
|
-
real_value = Object.new
|
106
|
-
(class << @subject; self; end).class_eval do
|
107
|
-
define_method(:foobar) {real_value}
|
108
|
-
end
|
109
|
-
@creator.foobar(1, 2) do |value|
|
110
|
-
mock(value).a_method {99}
|
111
|
-
value
|
112
|
-
end
|
113
|
-
|
114
|
-
return_value = @subject.foobar(1, 2)
|
115
|
-
return_value.should === return_value
|
116
|
-
return_value.a_method.should == 99
|
117
|
-
end
|
118
|
-
end
|
119
|
-
|
120
|
-
end
|
@@ -1,96 +0,0 @@
|
|
1
|
-
require "examples/example_helper"
|
2
|
-
|
3
|
-
module RR
|
4
|
-
describe StubCreator, :shared => true do
|
5
|
-
before(:each) do
|
6
|
-
@space = Space.new
|
7
|
-
@subject = Object.new
|
8
|
-
end
|
9
|
-
|
10
|
-
it "initializes creator with passed in object" do
|
11
|
-
class << @creator
|
12
|
-
attr_reader :subject
|
13
|
-
end
|
14
|
-
@creator.subject.should === @subject
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
describe StubCreator, ".new without block" do
|
19
|
-
it_should_behave_like "RR::StubCreator"
|
20
|
-
|
21
|
-
before do
|
22
|
-
@creator = StubCreator.new(@space, @subject)
|
23
|
-
end
|
24
|
-
|
25
|
-
it "clears out all methods from creator" do
|
26
|
-
creator_subclass = Class.new(StubCreator) do
|
27
|
-
def i_should_be_a_scenario
|
28
|
-
end
|
29
|
-
end
|
30
|
-
creator_subclass.instance_methods.should include('i_should_be_a_scenario')
|
31
|
-
|
32
|
-
creator = creator_subclass.new(@space, @subject)
|
33
|
-
creator.i_should_be_a_scenario.should be_instance_of(Scenario)
|
34
|
-
end
|
35
|
-
end
|
36
|
-
|
37
|
-
describe StubCreator, ".new with block" do
|
38
|
-
it_should_behave_like "RR::StubCreator"
|
39
|
-
|
40
|
-
before do
|
41
|
-
@creator = StubCreator.new(@space, @subject) do |c|
|
42
|
-
c.foobar(1, 2) {:one_two}
|
43
|
-
c.foobar(1) {:one}
|
44
|
-
c.foobar.with_any_args {:default}
|
45
|
-
c.baz() {:baz_result}
|
46
|
-
end
|
47
|
-
end
|
48
|
-
|
49
|
-
it "creates doubles" do
|
50
|
-
@subject.foobar(1, 2).should == :one_two
|
51
|
-
@subject.foobar(1, 2).should == :one_two
|
52
|
-
@subject.foobar(1).should == :one
|
53
|
-
@subject.foobar(1).should == :one
|
54
|
-
@subject.foobar(:something).should == :default
|
55
|
-
@subject.foobar(:something).should == :default
|
56
|
-
@subject.baz.should == :baz_result
|
57
|
-
@subject.baz.should == :baz_result
|
58
|
-
end
|
59
|
-
|
60
|
-
it "clears out all methods from creator" do
|
61
|
-
creator_subclass = Class.new(StubCreator) do
|
62
|
-
def i_should_be_a_scenario
|
63
|
-
end
|
64
|
-
end
|
65
|
-
creator_subclass.instance_methods.should include('i_should_be_a_scenario')
|
66
|
-
|
67
|
-
creator_subclass.new(@space, @subject) do |m|
|
68
|
-
m.i_should_be_a_scenario.should be_instance_of(Scenario)
|
69
|
-
end
|
70
|
-
end
|
71
|
-
end
|
72
|
-
|
73
|
-
describe StubCreator, "#method_missing" do
|
74
|
-
it_should_behave_like "RR::StubCreator"
|
75
|
-
|
76
|
-
before do
|
77
|
-
@subject = Object.new
|
78
|
-
@creator = StubCreator.new(@space, @subject)
|
79
|
-
end
|
80
|
-
|
81
|
-
it "stubs the subject without any args" do
|
82
|
-
@creator.foobar {:baz}
|
83
|
-
@subject.foobar.should == :baz
|
84
|
-
end
|
85
|
-
|
86
|
-
it "stubs the subject mapping passed in args with the output" do
|
87
|
-
@creator.foobar(1, 2) {:one_two}
|
88
|
-
@creator.foobar(1) {:one}
|
89
|
-
@creator.foobar() {:nothing}
|
90
|
-
@subject.foobar.should == :nothing
|
91
|
-
@subject.foobar(1).should == :one
|
92
|
-
@subject.foobar(1, 2).should == :one_two
|
93
|
-
end
|
94
|
-
end
|
95
|
-
|
96
|
-
end
|
@@ -1,127 +0,0 @@
|
|
1
|
-
require "examples/example_helper"
|
2
|
-
|
3
|
-
module RR
|
4
|
-
describe StubProbeCreator, :shared => true do
|
5
|
-
before(:each) do
|
6
|
-
@space = Space.new
|
7
|
-
@subject = Object.new
|
8
|
-
end
|
9
|
-
|
10
|
-
it "initializes creator with passed in object" do
|
11
|
-
class << @creator
|
12
|
-
attr_reader :subject
|
13
|
-
end
|
14
|
-
@creator.subject.should === @subject
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
describe StubProbeCreator, ".new without block" do
|
19
|
-
it_should_behave_like "RR::StubProbeCreator"
|
20
|
-
|
21
|
-
before do
|
22
|
-
@creator = StubProbeCreator.new(@space, @subject)
|
23
|
-
end
|
24
|
-
|
25
|
-
it "clears out all methods from creator" do
|
26
|
-
creator_subclass = Class.new(StubProbeCreator) do
|
27
|
-
def i_should_be_a_scenario
|
28
|
-
end
|
29
|
-
end
|
30
|
-
creator_subclass.instance_methods.should include('i_should_be_a_scenario')
|
31
|
-
|
32
|
-
creator = creator_subclass.new(@space, @subject)
|
33
|
-
creator.i_should_be_a_scenario.should be_instance_of(Scenario)
|
34
|
-
end
|
35
|
-
end
|
36
|
-
|
37
|
-
describe StubProbeCreator, ".new with block" do
|
38
|
-
it_should_behave_like "RR::StubProbeCreator"
|
39
|
-
|
40
|
-
before do
|
41
|
-
def @subject.foobar(*args)
|
42
|
-
:original_foobar
|
43
|
-
end
|
44
|
-
@creator = StubProbeCreator.new(@space, @subject) do |c|
|
45
|
-
c.foobar
|
46
|
-
end
|
47
|
-
end
|
48
|
-
|
49
|
-
it "creates doubles" do
|
50
|
-
@subject.foobar(1, 2).should == :original_foobar
|
51
|
-
@subject.foobar(1, 2).should == :original_foobar
|
52
|
-
@subject.foobar(1).should == :original_foobar
|
53
|
-
@subject.foobar(1).should == :original_foobar
|
54
|
-
@subject.foobar(:something).should == :original_foobar
|
55
|
-
@subject.foobar(:something).should == :original_foobar
|
56
|
-
end
|
57
|
-
|
58
|
-
it "clears out all methods from creator" do
|
59
|
-
creator_subclass = Class.new(StubProbeCreator) do
|
60
|
-
def i_should_be_a_scenario
|
61
|
-
end
|
62
|
-
end
|
63
|
-
creator_subclass.instance_methods.should include('i_should_be_a_scenario')
|
64
|
-
|
65
|
-
creator_subclass.new(@space, @subject) do |m|
|
66
|
-
m.i_should_be_a_scenario.should be_instance_of(Scenario)
|
67
|
-
end
|
68
|
-
end
|
69
|
-
end
|
70
|
-
|
71
|
-
describe StubProbeCreator, ".new where method takes a block" do
|
72
|
-
it_should_behave_like "RR::StubProbeCreator"
|
73
|
-
|
74
|
-
before do
|
75
|
-
def @subject.foobar(*args, &block)
|
76
|
-
yield(*args)
|
77
|
-
end
|
78
|
-
@creator = StubProbeCreator.new(@space, @subject)
|
79
|
-
end
|
80
|
-
|
81
|
-
it "calls the block" do
|
82
|
-
@creator.foobar(1, 2)
|
83
|
-
@subject.foobar(1, 2) {|arg1, arg2| [arg2, arg1]}.should == [2, 1]
|
84
|
-
end
|
85
|
-
end
|
86
|
-
|
87
|
-
describe StubProbeCreator, "#method_missing" do
|
88
|
-
it_should_behave_like "RR::StubProbeCreator"
|
89
|
-
|
90
|
-
before do
|
91
|
-
@subject = Object.new
|
92
|
-
@creator = StubProbeCreator.new(@space, @subject)
|
93
|
-
end
|
94
|
-
|
95
|
-
it "sets up a scenario with passed in arguments" do
|
96
|
-
def @subject.foobar(*args); :baz; end
|
97
|
-
@creator.foobar(1, 2)
|
98
|
-
proc do
|
99
|
-
@subject.foobar
|
100
|
-
end.should raise_error(Errors::ScenarioNotFoundError)
|
101
|
-
end
|
102
|
-
|
103
|
-
it "sets expectations on the subject while calling the original method" do
|
104
|
-
def @subject.foobar(*args); :baz; end
|
105
|
-
@creator.foobar(1, 2) {:new_value}
|
106
|
-
10.times do
|
107
|
-
@subject.foobar(1, 2).should == :new_value
|
108
|
-
end
|
109
|
-
end
|
110
|
-
|
111
|
-
it "sets after_call on the scenario when passed a block" do
|
112
|
-
real_value = Object.new
|
113
|
-
(class << @subject; self; end).class_eval do
|
114
|
-
define_method(:foobar) {real_value}
|
115
|
-
end
|
116
|
-
@creator.foobar(1, 2) do |value|
|
117
|
-
mock(value).a_method {99}
|
118
|
-
value
|
119
|
-
end
|
120
|
-
|
121
|
-
return_value = @subject.foobar(1, 2)
|
122
|
-
return_value.should === return_value
|
123
|
-
return_value.a_method.should == 99
|
124
|
-
end
|
125
|
-
end
|
126
|
-
|
127
|
-
end
|
data/lib/rr/creator.rb
DELETED
@@ -1,16 +0,0 @@
|
|
1
|
-
module RR
|
2
|
-
# RR::Creator is the superclass for all creators.
|
3
|
-
class Creator
|
4
|
-
def initialize(space, subject, &block)
|
5
|
-
@space = space
|
6
|
-
@subject = subject
|
7
|
-
class << self
|
8
|
-
instance_methods.each do |m|
|
9
|
-
undef_method m unless m =~ /^__/
|
10
|
-
end
|
11
|
-
include self::InstanceMethods
|
12
|
-
end
|
13
|
-
yield(self) if block_given?
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|