rr 0.4.3 → 0.4.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (40) hide show
  1. data/CHANGES +4 -0
  2. data/README +25 -0
  3. data/Rakefile +1 -1
  4. data/lib/rr/double.rb +10 -10
  5. data/lib/rr/double_creator.rb +5 -5
  6. data/lib/rr/double_injection.rb +7 -7
  7. data/lib/rr/double_method_proxy.rb +1 -2
  8. data/lib/rr/space.rb +21 -21
  9. data/lib/rr/wildcard_matchers/anything.rb +4 -0
  10. data/lib/rr/wildcard_matchers/boolean.rb +4 -0
  11. data/lib/rr/wildcard_matchers/duck_type.rb +7 -0
  12. data/lib/rr/wildcard_matchers/is_a.rb +4 -0
  13. data/lib/rr/wildcard_matchers/numeric.rb +4 -0
  14. data/spec/high_level_spec.rb +14 -0
  15. data/spec/rr/adapters/rr_methods_space_spec.rb +16 -16
  16. data/spec/rr/double/double_injection_bind_spec.rb +47 -20
  17. data/spec/rr/double/double_injection_dispatching_spec.rb +26 -20
  18. data/spec/rr/double/double_injection_has_original_method_spec.rb +10 -11
  19. data/spec/rr/double/double_injection_register_scenario_spec.rb +6 -6
  20. data/spec/rr/double/double_injection_reset_spec.rb +11 -14
  21. data/spec/rr/double/double_injection_spec.rb +18 -12
  22. data/spec/rr/double/double_injection_verify_spec.rb +5 -5
  23. data/spec/rr/double_definition_spec.rb +5 -5
  24. data/spec/rr/double_method_proxy_spec.rb +5 -5
  25. data/spec/rr/double_spec.rb +48 -48
  26. data/spec/rr/expectations/anything_spec.rb +14 -0
  27. data/spec/rr/expectations/boolean_spec.rb +14 -0
  28. data/spec/rr/expectations/duck_type_spec.rb +14 -0
  29. data/spec/rr/expectations/is_a_spec.rb +14 -0
  30. data/spec/rr/expectations/numeric_spec.rb +14 -0
  31. data/spec/rr/expectations/range_spec.rb +10 -0
  32. data/spec/rr/expectations/regexp_spec.rb +10 -0
  33. data/spec/rr/expectations/times_called_expectation/times_called_expectation_helper.rb +3 -3
  34. data/spec/rr/rspec/rspec_adapter_spec.rb +12 -12
  35. data/spec/rr/space/space_create_spec.rb +27 -37
  36. data/spec/rr/space/space_register_spec.rb +3 -3
  37. data/spec/rr/space/space_reset_spec.rb +24 -24
  38. data/spec/rr/space/space_spec.rb +2 -2
  39. data/spec/rr/space/space_verify_spec.rb +18 -18
  40. metadata +9 -2
@@ -0,0 +1,14 @@
1
+ require "spec/spec_helper"
2
+
3
+ module RR
4
+ module WildcardMatchers
5
+ describe Numeric do
6
+ describe "#inspect" do
7
+ it "returns numeric" do
8
+ matcher = Numeric.new
9
+ matcher.inspect.should == "numeric"
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,10 @@
1
+ require "spec/spec_helper"
2
+
3
+ describe Range do
4
+ describe "#inspect" do
5
+ it "returns the range" do
6
+ matcher = 2..3
7
+ matcher.inspect.should == "2..3"
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,10 @@
1
+ require "spec/spec_helper"
2
+
3
+ describe Regexp do
4
+ describe "#inspect" do
5
+ it "returns the regexp" do
6
+ matcher = /foo/
7
+ matcher.inspect.should == "/foo/"
8
+ end
9
+ end
10
+ end
@@ -3,13 +3,13 @@ require "spec/spec_helper"
3
3
  module RR
4
4
  module Expectations
5
5
  describe TimesCalledExpectation, :shared => true do
6
- attr_reader :space, :object, :method_name, :double_insertion, :double, :expectation
6
+ attr_reader :space, :object, :method_name, :double_injection, :double, :expectation
7
7
  before do
8
8
  @space = Space.new
9
9
  @object = Object.new
10
10
  @method_name = :foobar
11
- @double_insertion = space.double_insertion(object, method_name)
12
- @double = space.double(double_insertion)
11
+ @double_injection = space.double_injection(object, method_name)
12
+ @double = space.double(double_injection)
13
13
  double.with_any_args
14
14
  end
15
15
 
@@ -12,12 +12,12 @@ module RR
12
12
  @method_name = :foobar
13
13
  end
14
14
 
15
- it "resets the double_insertions" do
16
- RR::Space.double_insertion(@subject, @method_name)
17
- RR::Space.double_insertions.should_not be_empty
15
+ it "resets the double_injections" do
16
+ RR::Space.double_injection(@subject, @method_name)
17
+ RR::Space.double_injections.should_not be_empty
18
18
 
19
19
  @fixture.setup_mocks_for_rspec
20
- RR::Space.double_insertions.should be_empty
20
+ RR::Space.double_injections.should be_empty
21
21
  end
22
22
  end
23
23
 
@@ -30,16 +30,16 @@ module RR
30
30
  @method_name = :foobar
31
31
  end
32
32
 
33
- it "verifies the double_insertions" do
34
- double_insertion = RR::Space.double_insertion(@subject, @method_name)
35
- double = RR::Space.double(double_insertion)
33
+ it "verifies the double_injections" do
34
+ double_injection = RR::Space.double_injection(@subject, @method_name)
35
+ double = RR::Space.double(double_injection)
36
36
 
37
37
  double.once
38
38
 
39
39
  proc do
40
40
  @fixture.verify_mocks_for_rspec
41
41
  end.should raise_error(::RR::Errors::TimesCalledError)
42
- RR::Space.double_insertions.should be_empty
42
+ RR::Space.double_injections.should be_empty
43
43
  end
44
44
  end
45
45
 
@@ -52,12 +52,12 @@ module RR
52
52
  @method_name = :foobar
53
53
  end
54
54
 
55
- it "resets the double_insertions" do
56
- RR::Space.double_insertion(@subject, @method_name)
57
- RR::Space.double_insertions.should_not be_empty
55
+ it "resets the double_injections" do
56
+ RR::Space.double_injection(@subject, @method_name)
57
+ RR::Space.double_injections.should_not be_empty
58
58
 
59
59
  @fixture.teardown_mocks_for_rspec
60
- RR::Space.double_insertions.should be_empty
60
+ RR::Space.double_injections.should be_empty
61
61
  end
62
62
  end
63
63
  end
@@ -14,14 +14,6 @@ module RR
14
14
  proxy.should be_instance_of(DoubleMethodProxy)
15
15
  end
16
16
 
17
- it "sets space to self" do
18
- proxy = @space.double_method_proxy(@creator, @object)
19
- class << proxy
20
- attr_reader :space
21
- end
22
- proxy.space.should === @space
23
- end
24
-
25
17
  it "sets creator to passed in creator" do
26
18
  proxy = @space.double_method_proxy(@creator, @object)
27
19
  class << proxy
@@ -186,38 +178,38 @@ module RR
186
178
  @method_name = :foobar
187
179
  end
188
180
 
189
- it "creates a Double and registers it to the double_insertion" do
190
- double_insertion = @space.double_insertion(@object, @method_name)
191
- def double_insertion.doubles
181
+ it "creates a Double and registers it to the double_injection" do
182
+ double_injection = @space.double_injection(@object, @method_name)
183
+ def double_injection.doubles
192
184
  @doubles
193
185
  end
194
186
 
195
- double = @space.double(double_insertion)
196
- double_insertion.doubles.should include(double)
187
+ double = @space.double(double_injection)
188
+ double_injection.doubles.should include(double)
197
189
  end
198
190
  end
199
191
 
200
- describe Space, "#double_insertion" do
192
+ describe Space, "#double_injection" do
201
193
  it_should_behave_like "RR::Space"
202
194
 
203
195
  before do
204
196
  @space = Space.new
205
197
  end
206
198
 
207
- it "creates a new double_insertion when existing object == but not === with the same method name" do
199
+ it "creates a new double_injection when existing object == but not === with the same method name" do
208
200
  object1 = []
209
201
  object2 = []
210
202
  (object1 === object2).should be_true
211
203
  object1.__id__.should_not == object2.__id__
212
204
 
213
- double1 = @space.double_insertion(object1, :foobar)
214
- double2 = @space.double_insertion(object2, :foobar)
205
+ double1 = @space.double_injection(object1, :foobar)
206
+ double2 = @space.double_injection(object2, :foobar)
215
207
 
216
208
  double1.should_not == double2
217
209
  end
218
210
  end
219
211
 
220
- describe Space, "#double_insertion when double_insertion does not exist" do
212
+ describe Space, "#double_injection when double_injection does not exist" do
221
213
  it_should_behave_like "RR::Space"
222
214
 
223
215
  before do
@@ -229,29 +221,27 @@ module RR
229
221
  @method_name = :foobar
230
222
  end
231
223
 
232
- it "returns double_insertion and adds double_insertion to double_insertion list when method_name is a symbol" do
233
- double_insertion = @space.double_insertion(@object, @method_name)
234
- @space.double_insertion(@object, @method_name).should === double_insertion
235
- double_insertion.space.should === @space
236
- double_insertion.object.should === @object
237
- double_insertion.method_name.should === @method_name
224
+ it "returns double_injection and adds double_injection to double_injection list when method_name is a symbol" do
225
+ double_injection = @space.double_injection(@object, @method_name)
226
+ @space.double_injection(@object, @method_name).should === double_injection
227
+ double_injection.object.should === @object
228
+ double_injection.method_name.should === @method_name
238
229
  end
239
230
 
240
- it "returns double_insertion and adds double_insertion to double_insertion list when method_name is a string" do
241
- double_insertion = @space.double_insertion(@object, 'foobar')
242
- @space.double_insertion(@object, @method_name).should === double_insertion
243
- double_insertion.space.should === @space
244
- double_insertion.object.should === @object
245
- double_insertion.method_name.should === @method_name
231
+ it "returns double_injection and adds double_injection to double_injection list when method_name is a string" do
232
+ double_injection = @space.double_injection(@object, 'foobar')
233
+ @space.double_injection(@object, @method_name).should === double_injection
234
+ double_injection.object.should === @object
235
+ double_injection.method_name.should === @method_name
246
236
  end
247
237
 
248
238
  it "overrides the method when passing a block" do
249
- double_insertion = @space.double_insertion(@object, @method_name)
239
+ double_injection = @space.double_injection(@object, @method_name)
250
240
  @object.methods.should include("__rr__#{@method_name}")
251
241
  end
252
242
  end
253
243
 
254
- describe Space, "#double_insertion when double_insertion exists" do
244
+ describe Space, "#double_injection when double_injection exists" do
255
245
  it_should_behave_like "RR::Space"
256
246
 
257
247
  before do
@@ -263,15 +253,15 @@ module RR
263
253
  @method_name = :foobar
264
254
  end
265
255
 
266
- it "returns the existing double_insertion" do
256
+ it "returns the existing double_injection" do
267
257
  original_foobar_method = @object.method(:foobar)
268
- double_insertion = @space.double_insertion(@object, 'foobar')
258
+ double_injection = @space.double_injection(@object, 'foobar')
269
259
 
270
- double_insertion.object_has_original_method?.should be_true
260
+ double_injection.object_has_original_method?.should be_true
271
261
 
272
- @space.double_insertion(@object, 'foobar').should === double_insertion
262
+ @space.double_injection(@object, 'foobar').should === double_injection
273
263
 
274
- double_insertion.reset
264
+ double_injection.reset
275
265
  @object.foobar.should == :original_foobar
276
266
  end
277
267
  end
@@ -10,7 +10,7 @@ module RR
10
10
  Space.instance = @space
11
11
  @object = Object.new
12
12
  @method_name = :foobar
13
- @double_insertion = @space.double_insertion(@object, @method_name)
13
+ @double_injection = @space.double_injection(@object, @method_name)
14
14
  end
15
15
 
16
16
  after(:each) do
@@ -18,13 +18,13 @@ module RR
18
18
  end
19
19
 
20
20
  it "adds the ordered double to the ordered_doubles collection" do
21
- double1 = @space.double(@double_insertion)
21
+ double1 = @space.double(@double_injection)
22
22
 
23
23
  @space.ordered_doubles.should == []
24
24
  @space.register_ordered_double double1
25
25
  @space.ordered_doubles.should == [double1]
26
26
 
27
- double2 = @space.double(@double_insertion)
27
+ double2 = @space.double(@double_injection)
28
28
  @space.register_ordered_double double2
29
29
  @space.ordered_doubles.should == [double1, double2]
30
30
  end
@@ -12,8 +12,8 @@ module RR
12
12
  end
13
13
 
14
14
  it "removes the ordered doubles" do
15
- double1 = @space.double_insertion(@object1, :foobar1)
16
- double2 = @space.double_insertion(@object1, :foobar2)
15
+ double1 = @space.double_injection(@object1, :foobar1)
16
+ double2 = @space.double_injection(@object1, :foobar2)
17
17
 
18
18
  double1 = @space.double(double1)
19
19
  double2 = @space.double(double2)
@@ -27,8 +27,8 @@ module RR
27
27
  @space.ordered_doubles.should be_empty
28
28
  end
29
29
 
30
- it "resets all double_insertions" do
31
- double1 = @space.double_insertion(@object1, @method_name)
30
+ it "resets all double_injections" do
31
+ double1 = @space.double_injection(@object1, @method_name)
32
32
  double1_reset_calls = 0
33
33
  (
34
34
  class << double1;
@@ -38,7 +38,7 @@ module RR
38
38
  double1_reset_calls += 1
39
39
  end
40
40
  end
41
- double2 = @space.double_insertion(@object2, @method_name)
41
+ double2 = @space.double_injection(@object2, @method_name)
42
42
  double2_reset_calls = 0
43
43
  (
44
44
  class << double2;
@@ -62,35 +62,35 @@ module RR
62
62
  @method_name = :foobar
63
63
  end
64
64
 
65
- it "resets the double_insertions" do
66
- double_insertion = @space.double_insertion(@object, @method_name)
67
- @space.double_insertions[@object][@method_name].should === double_insertion
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
68
  @object.methods.should include("__rr__#{@method_name}")
69
69
 
70
70
  @space.reset_double(@object, @method_name)
71
- @space.double_insertions[@object][@method_name].should be_nil
71
+ @space.double_injections[@object][@method_name].should be_nil
72
72
  @object.methods.should_not include("__rr__#{@method_name}")
73
73
  end
74
74
 
75
- it "removes the object from the double_insertions map when it has no double_insertions" do
76
- double1 = @space.double_insertion(@object, :foobar1)
77
- double2 = @space.double_insertion(@object, :foobar2)
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
78
 
79
- @space.double_insertions.include?(@object).should == true
80
- @space.double_insertions[@object][:foobar1].should_not be_nil
81
- @space.double_insertions[@object][:foobar2].should_not be_nil
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
82
 
83
83
  @space.reset_double(@object, :foobar1)
84
- @space.double_insertions.include?(@object).should == true
85
- @space.double_insertions[@object][:foobar1].should be_nil
86
- @space.double_insertions[@object][:foobar2].should_not be_nil
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
87
 
88
88
  @space.reset_double(@object, :foobar2)
89
- @space.double_insertions.include?(@object).should == false
89
+ @space.double_injections.include?(@object).should == false
90
90
  end
91
91
  end
92
92
 
93
- describe "#reset_double_insertions" do
93
+ describe "#reset_double_injections" do
94
94
  it_should_behave_like "RR::Space"
95
95
 
96
96
  before do
@@ -100,8 +100,8 @@ module RR
100
100
  @method_name = :foobar
101
101
  end
102
102
 
103
- it "resets the double_insertion and removes it from the double_insertions list" do
104
- double1 = @space.double_insertion(@object1, @method_name)
103
+ it "resets the double_injection and removes it from the double_injections list" do
104
+ double1 = @space.double_injection(@object1, @method_name)
105
105
  double1_reset_calls = 0
106
106
  (
107
107
  class << double1;
@@ -111,7 +111,7 @@ module RR
111
111
  double1_reset_calls += 1
112
112
  end
113
113
  end
114
- double2 = @space.double_insertion(@object2, @method_name)
114
+ double2 = @space.double_injection(@object2, @method_name)
115
115
  double2_reset_calls = 0
116
116
  (
117
117
  class << double2;
@@ -122,7 +122,7 @@ module RR
122
122
  end
123
123
  end
124
124
 
125
- @space.send(:reset_double_insertions)
125
+ @space.send(:reset_double_injections)
126
126
  double1_reset_calls.should == 1
127
127
  double2_reset_calls.should == 1
128
128
  end
@@ -20,12 +20,12 @@ module RR
20
20
  class << @space;
21
21
  self;
22
22
  end).class_eval do
23
- define_method :double_insertion do |*args|
23
+ define_method :double_injection do |*args|
24
24
  create_double_args = args
25
25
  end
26
26
  end
27
27
 
28
- Space.double_insertion(:foo, :bar)
28
+ Space.double_injection(:foo, :bar)
29
29
  create_double_args.should == [:foo, :bar]
30
30
  end
31
31
  end
@@ -6,11 +6,11 @@ module RR
6
6
  @space = Space.new
7
7
  @object = Object.new
8
8
  @method_name = :foobar
9
- @double_insertion = @space.double_insertion(@object, @method_name)
9
+ @double_injection = @space.double_injection(@object, @method_name)
10
10
  end
11
11
 
12
12
  it "raises an error when Double is NonTerminal" do
13
- double = @space.double(@double_insertion)
13
+ double = @space.double(@double_injection)
14
14
  @space.register_ordered_double(double)
15
15
 
16
16
  double.any_number_of_times
@@ -36,8 +36,8 @@ module RR
36
36
  @method_name = :foobar
37
37
  end
38
38
 
39
- it "verifies and deletes the double_insertions" do
40
- double1 = @space.double_insertion(@object1, @method_name)
39
+ it "verifies and deletes the double_injections" do
40
+ double1 = @space.double_injection(@object1, @method_name)
41
41
  double1_verify_calls = 0
42
42
  double1_reset_calls = 0
43
43
  (
@@ -51,7 +51,7 @@ module RR
51
51
  double1_reset_calls += 1
52
52
  end
53
53
  end
54
- double2 = @space.double_insertion(@object2, @method_name)
54
+ double2 = @space.double_injection(@object2, @method_name)
55
55
  double2_verify_calls = 0
56
56
  double2_reset_calls = 0
57
57
  (
@@ -83,14 +83,14 @@ module RR
83
83
  @method_name = :foobar
84
84
  end
85
85
 
86
- it "verifies and deletes the double_insertion" do
87
- double_insertion = @space.double_insertion(@object, @method_name)
88
- @space.double_insertions[@object][@method_name].should === double_insertion
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
89
  @object.methods.should include("__rr__#{@method_name}")
90
90
 
91
91
  verify_calls = 0
92
92
  (
93
- class << double_insertion;
93
+ class << double_injection;
94
94
  self;
95
95
  end).class_eval do
96
96
  define_method(:verify) do ||
@@ -100,18 +100,18 @@ module RR
100
100
  @space.verify_double(@object, @method_name)
101
101
  verify_calls.should == 1
102
102
 
103
- @space.double_insertions[@object][@method_name].should be_nil
103
+ @space.double_injections[@object][@method_name].should be_nil
104
104
  @object.methods.should_not include("__rr__#{@method_name}")
105
105
  end
106
106
 
107
- it "deletes the double_insertion when verifying the double_insertion raises an error" do
108
- double_insertion = @space.double_insertion(@object, @method_name)
109
- @space.double_insertions[@object][@method_name].should === double_insertion
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
110
  @object.methods.should include("__rr__#{@method_name}")
111
111
 
112
112
  verify_called = true
113
113
  (
114
- class << double_insertion;
114
+ class << double_injection;
115
115
  self;
116
116
  end).class_eval do
117
117
  define_method(:verify) do ||
@@ -122,7 +122,7 @@ module RR
122
122
  proc {@space.verify_double(@object, @method_name)}.should raise_error
123
123
  verify_called.should be_true
124
124
 
125
- @space.double_insertions[@object][@method_name].should be_nil
125
+ @space.double_injections[@object][@method_name].should be_nil
126
126
  @object.methods.should_not include("__rr__#{@method_name}")
127
127
  end
128
128
  end
@@ -131,7 +131,7 @@ module RR
131
131
  it_should_behave_like "RR::Space#verify_ordered_double"
132
132
 
133
133
  it "keeps the double when times called is not verified" do
134
- double = @space.double(@double_insertion)
134
+ double = @space.double(@double_injection)
135
135
  @space.register_ordered_double(double)
136
136
 
137
137
  double.twice
@@ -142,7 +142,7 @@ module RR
142
142
  end
143
143
 
144
144
  it "removes the double when times called expectation should no longer be attempted" do
145
- double = @space.double(@double_insertion)
145
+ double = @space.double(@double_injection)
146
146
  @space.register_ordered_double(double)
147
147
 
148
148
  double.with(1).once
@@ -172,7 +172,7 @@ module RR
172
172
  end
173
173
 
174
174
  def double
175
- double_definition = @space.double(@double_insertion).once
175
+ double_definition = @space.double(@double_injection).once
176
176
  @space.register_ordered_double(double_definition.double)
177
177
  double_definition.double
178
178
  end