rr 0.4.8 → 0.4.9

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 (52) hide show
  1. data/CHANGES +3 -0
  2. data/{README → README.rdoc} +14 -6
  3. data/Rakefile +2 -2
  4. data/lib/rr.rb +11 -3
  5. data/lib/rr/adapters/rr_methods.rb +12 -12
  6. data/lib/rr/adapters/rspec.rb +3 -3
  7. data/lib/rr/adapters/test_unit.rb +3 -3
  8. data/lib/rr/double.rb +12 -10
  9. data/lib/rr/double_creator.rb +48 -45
  10. data/lib/rr/double_definition.rb +17 -149
  11. data/lib/rr/double_definition_builder.rb +11 -11
  12. data/lib/rr/double_definition_creator.rb +156 -0
  13. data/lib/rr/{double_method_proxy.rb → double_definition_creator_proxy.rb} +2 -2
  14. data/lib/rr/double_injection.rb +6 -6
  15. data/lib/rr/double_matches.rb +40 -40
  16. data/lib/rr/errors/rr_error.rb +1 -1
  17. data/lib/rr/expectations/times_called_expectation.rb +1 -1
  18. data/lib/rr/space.rb +9 -30
  19. data/spec/high_level_spec.rb +140 -143
  20. data/spec/rr/adapters/rr_methods_creator_spec.rb +21 -21
  21. data/spec/rr/adapters/rr_methods_space_spec.rb +2 -2
  22. data/spec/rr/double/double_injection_dispatching_spec.rb +15 -15
  23. data/spec/rr/double/double_injection_reset_spec.rb +1 -1
  24. data/spec/rr/double/double_injection_verify_spec.rb +5 -4
  25. data/spec/rr/{double_method_proxy_spec.rb → double_definition_creator_proxy_spec.rb} +12 -10
  26. data/spec/rr/{double_creator_spec.rb → double_definition_creator_spec.rb} +166 -124
  27. data/spec/rr/double_definition_spec.rb +637 -642
  28. data/spec/rr/double_spec.rb +44 -43
  29. data/spec/rr/errors/rr_error_spec.rb +6 -6
  30. data/spec/rr/expectations/times_called_expectation/times_called_expectation_any_times_spec.rb +3 -3
  31. data/spec/rr/expectations/times_called_expectation/times_called_expectation_at_least_spec.rb +8 -8
  32. data/spec/rr/expectations/times_called_expectation/times_called_expectation_at_most_spec.rb +11 -13
  33. data/spec/rr/expectations/times_called_expectation/times_called_expectation_helper.rb +2 -2
  34. data/spec/rr/expectations/times_called_expectation/times_called_expectation_integer_spec.rb +19 -19
  35. data/spec/rr/expectations/times_called_expectation/times_called_expectation_proc_spec.rb +16 -16
  36. data/spec/rr/expectations/times_called_expectation/times_called_expectation_range_spec.rb +16 -16
  37. data/spec/rr/expectations/times_called_expectation/times_called_expectation_spec.rb +7 -11
  38. data/spec/rr/rspec/rspec_adapter_spec.rb +10 -10
  39. data/spec/rr/rspec/rspec_backtrace_tweaking_spec.rb +1 -1
  40. data/spec/rr/space/space_spec.rb +372 -18
  41. data/spec/rr/test_unit/test_unit_backtrace_test.rb +1 -1
  42. data/spec/rr/times_called_matchers/proc_matcher_spec.rb +3 -3
  43. data/spec/rr/times_called_matchers/times_called_matcher_spec.rb +3 -3
  44. data/spec/spec_helper.rb +14 -3
  45. data/spec/spec_suite.rb +2 -2
  46. metadata +47 -45
  47. data/spec/rr/double/double_injection_register_scenario_spec.rb +0 -24
  48. data/spec/rr/space/space_create_spec.rb +0 -268
  49. data/spec/rr/space/space_helper.rb +0 -7
  50. data/spec/rr/space/space_register_spec.rb +0 -32
  51. data/spec/rr/space/space_reset_spec.rb +0 -131
  52. data/spec/rr/space/space_verify_spec.rb +0 -181
@@ -1,7 +0,0 @@
1
- module RR
2
- describe Space, :shared => true do
3
- after(:each) do
4
- Space.instance.verify_doubles
5
- end
6
- end
7
- end
@@ -1,32 +0,0 @@
1
- require "spec/spec_helper"
2
-
3
- module RR
4
- describe Space, "#register_ordered_double" do
5
- it_should_behave_like "RR::Space"
6
-
7
- before(:each) do
8
- @space = Space.new
9
- @original_space = Space.instance
10
- Space.instance = @space
11
- @object = Object.new
12
- @method_name = :foobar
13
- @double_injection = @space.double_injection(@object, @method_name)
14
- end
15
-
16
- after(:each) do
17
- Space.instance = @original_space
18
- end
19
-
20
- it "adds the ordered double to the ordered_doubles collection" do
21
- double1 = @space.double(@double_injection)
22
-
23
- @space.ordered_doubles.should == []
24
- @space.register_ordered_double double1
25
- @space.ordered_doubles.should == [double1]
26
-
27
- double2 = @space.double(@double_injection)
28
- @space.register_ordered_double double2
29
- @space.ordered_doubles.should == [double1, double2]
30
- end
31
- end
32
- end
@@ -1,131 +0,0 @@
1
- require "spec/spec_helper"
2
-
3
- module RR
4
- describe Space do
5
- it_should_behave_like "RR::Space"
6
- describe "#reset" do
7
- before do
8
- @space = Space.new
9
- @object1 = Object.new
10
- @object2 = Object.new
11
- @method_name = :foobar
12
- end
13
-
14
- it "removes the ordered doubles" do
15
- double1 = @space.double_injection(@object1, :foobar1)
16
- double2 = @space.double_injection(@object1, :foobar2)
17
-
18
- double1 = @space.double(double1)
19
- double2 = @space.double(double2)
20
-
21
- double1.ordered
22
- double2.ordered
23
-
24
- @space.ordered_doubles.should_not be_empty
25
-
26
- @space.reset
27
- @space.ordered_doubles.should be_empty
28
- end
29
-
30
- it "resets all double_injections" do
31
- double1 = @space.double_injection(@object1, @method_name)
32
- double1_reset_calls = 0
33
- (
34
- class << double1;
35
- self;
36
- end).class_eval do
37
- define_method(:reset) do ||
38
- double1_reset_calls += 1
39
- end
40
- end
41
- double2 = @space.double_injection(@object2, @method_name)
42
- double2_reset_calls = 0
43
- (
44
- class << double2;
45
- self;
46
- end).class_eval do
47
- define_method(:reset) do ||
48
- double2_reset_calls += 1
49
- end
50
- end
51
-
52
- @space.reset
53
- double1_reset_calls.should == 1
54
- double2_reset_calls.should == 1
55
- end
56
- end
57
-
58
- describe "#reset_double" do
59
- before do
60
- @space = Space.new
61
- @object = Object.new
62
- @method_name = :foobar
63
- end
64
-
65
- it "resets the double_injections" do
66
- double_injection = @space.double_injection(@object, @method_name)
67
- @space.double_injections[@object][@method_name].should === double_injection
68
- @object.methods.should include("__rr__#{@method_name}")
69
-
70
- @space.reset_double(@object, @method_name)
71
- @space.double_injections[@object][@method_name].should be_nil
72
- @object.methods.should_not include("__rr__#{@method_name}")
73
- end
74
-
75
- it "removes the object from the double_injections map when it has no double_injections" do
76
- double1 = @space.double_injection(@object, :foobar1)
77
- double2 = @space.double_injection(@object, :foobar2)
78
-
79
- @space.double_injections.include?(@object).should == true
80
- @space.double_injections[@object][:foobar1].should_not be_nil
81
- @space.double_injections[@object][:foobar2].should_not be_nil
82
-
83
- @space.reset_double(@object, :foobar1)
84
- @space.double_injections.include?(@object).should == true
85
- @space.double_injections[@object][:foobar1].should be_nil
86
- @space.double_injections[@object][:foobar2].should_not be_nil
87
-
88
- @space.reset_double(@object, :foobar2)
89
- @space.double_injections.include?(@object).should == false
90
- end
91
- end
92
-
93
- describe "#reset_double_injections" do
94
- it_should_behave_like "RR::Space"
95
-
96
- before do
97
- @space = Space.new
98
- @object1 = Object.new
99
- @object2 = Object.new
100
- @method_name = :foobar
101
- end
102
-
103
- it "resets the double_injection and removes it from the double_injections list" do
104
- double1 = @space.double_injection(@object1, @method_name)
105
- double1_reset_calls = 0
106
- (
107
- class << double1;
108
- self;
109
- end).class_eval do
110
- define_method(:reset) do ||
111
- double1_reset_calls += 1
112
- end
113
- end
114
- double2 = @space.double_injection(@object2, @method_name)
115
- double2_reset_calls = 0
116
- (
117
- class << double2;
118
- self;
119
- end).class_eval do
120
- define_method(:reset) do ||
121
- double2_reset_calls += 1
122
- end
123
- end
124
-
125
- @space.send(:reset_double_injections)
126
- double1_reset_calls.should == 1
127
- double2_reset_calls.should == 1
128
- end
129
- end
130
- end
131
- end
@@ -1,181 +0,0 @@
1
- require "spec/spec_helper"
2
-
3
- module RR
4
- describe Space, "#verify_ordered_double", :shared => true do
5
- before do
6
- @space = Space.new
7
- @object = Object.new
8
- @method_name = :foobar
9
- @double_injection = @space.double_injection(@object, @method_name)
10
- end
11
-
12
- it "raises an error when Double is NonTerminal" do
13
- double = @space.double(@double_injection)
14
- @space.register_ordered_double(double)
15
-
16
- double.any_number_of_times
17
- double.should_not be_terminal
18
-
19
- proc do
20
- @space.verify_ordered_double(double)
21
- end.should raise_error(
22
- Errors::DoubleOrderError,
23
- "Ordered Doubles cannot have a NonTerminal TimesCalledExpectation"
24
- )
25
- end
26
- end
27
-
28
- describe Space do
29
- it_should_behave_like "RR::Space"
30
-
31
- describe "#verify_doubles" do
32
- before do
33
- @space = Space.new
34
- @object1 = Object.new
35
- @object2 = Object.new
36
- @method_name = :foobar
37
- end
38
-
39
- it "verifies and deletes the double_injections" do
40
- double1 = @space.double_injection(@object1, @method_name)
41
- double1_verify_calls = 0
42
- double1_reset_calls = 0
43
- (
44
- class << double1;
45
- self;
46
- end).class_eval do
47
- define_method(:verify) do ||
48
- double1_verify_calls += 1
49
- end
50
- define_method(:reset) do ||
51
- double1_reset_calls += 1
52
- end
53
- end
54
- double2 = @space.double_injection(@object2, @method_name)
55
- double2_verify_calls = 0
56
- double2_reset_calls = 0
57
- (
58
- class << double2;
59
- self;
60
- end).class_eval do
61
- define_method(:verify) do ||
62
- double2_verify_calls += 1
63
- end
64
- define_method(:reset) do ||
65
- double2_reset_calls += 1
66
- end
67
- end
68
-
69
- @space.verify_doubles
70
- double1_verify_calls.should == 1
71
- double2_verify_calls.should == 1
72
- double1_reset_calls.should == 1
73
- double1_reset_calls.should == 1
74
- end
75
- end
76
-
77
- describe "#verify_double" do
78
- it_should_behave_like "RR::Space"
79
-
80
- before do
81
- @space = Space.new
82
- @object = Object.new
83
- @method_name = :foobar
84
- end
85
-
86
- it "verifies and deletes the double_injection" do
87
- double_injection = @space.double_injection(@object, @method_name)
88
- @space.double_injections[@object][@method_name].should === double_injection
89
- @object.methods.should include("__rr__#{@method_name}")
90
-
91
- verify_calls = 0
92
- (
93
- class << double_injection;
94
- self;
95
- end).class_eval do
96
- define_method(:verify) do ||
97
- verify_calls += 1
98
- end
99
- end
100
- @space.verify_double(@object, @method_name)
101
- verify_calls.should == 1
102
-
103
- @space.double_injections[@object][@method_name].should be_nil
104
- @object.methods.should_not include("__rr__#{@method_name}")
105
- end
106
-
107
- it "deletes the double_injection when verifying the double_injection raises an error" do
108
- double_injection = @space.double_injection(@object, @method_name)
109
- @space.double_injections[@object][@method_name].should === double_injection
110
- @object.methods.should include("__rr__#{@method_name}")
111
-
112
- verify_called = true
113
- (
114
- class << double_injection;
115
- self;
116
- end).class_eval do
117
- define_method(:verify) do ||
118
- verify_called = true
119
- raise "An Error"
120
- end
121
- end
122
- proc {@space.verify_double(@object, @method_name)}.should raise_error
123
- verify_called.should be_true
124
-
125
- @space.double_injections[@object][@method_name].should be_nil
126
- @object.methods.should_not include("__rr__#{@method_name}")
127
- end
128
- end
129
-
130
- describe "#verify_ordered_double where the passed in double is at the front of the queue" do
131
- it_should_behave_like "RR::Space#verify_ordered_double"
132
-
133
- it "keeps the double when times called is not verified" do
134
- double = @space.double(@double_injection)
135
- @space.register_ordered_double(double)
136
-
137
- double.twice
138
- double.should be_attempt
139
-
140
- @space.verify_ordered_double(double)
141
- @space.ordered_doubles.should include(double)
142
- end
143
-
144
- it "removes the double when times called expectation should no longer be attempted" do
145
- double = @space.double(@double_injection)
146
- @space.register_ordered_double(double)
147
-
148
- double.with(1).once
149
- @object.foobar(1)
150
- double.should_not be_attempt
151
-
152
- @space.verify_ordered_double(double)
153
- @space.ordered_doubles.should_not include(double)
154
- end
155
- end
156
-
157
- describe "#verify_ordered_double where the passed in double is not at the front of the queue" do
158
- it_should_behave_like "RR::Space#verify_ordered_double"
159
-
160
- it "raises error" do
161
- first_double = double
162
- second_double = double
163
-
164
- proc do
165
- @space.verify_ordered_double(second_double)
166
- end.should raise_error(
167
- Errors::DoubleOrderError,
168
- "foobar() called out of order in list\n" <<
169
- "- foobar()\n" <<
170
- "- foobar()"
171
- )
172
- end
173
-
174
- def double
175
- double_definition = @space.double(@double_injection).once
176
- @space.register_ordered_double(double_definition.double)
177
- double_definition.double
178
- end
179
- end
180
- end
181
- end