caricature 0.7.5 → 0.7.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.
Files changed (74) hide show
  1. data/README.rdoc +97 -97
  2. data/Rakefile +309 -310
  3. data/caricature.gemspec +123 -110
  4. data/lib/caricature/bacon/integration.rb +75 -75
  5. data/lib/caricature/bacon.rb +2 -2
  6. data/lib/caricature/clr/descriptor.rb +159 -159
  7. data/lib/caricature/clr/event_verification.rb +56 -56
  8. data/lib/caricature/clr/expectation.rb +100 -100
  9. data/lib/caricature/clr/isolation.rb +78 -78
  10. data/lib/caricature/clr/isolator.rb +252 -252
  11. data/lib/caricature/clr/messenger.rb +51 -49
  12. data/lib/caricature/clr/method_call_recorder.rb +96 -96
  13. data/lib/caricature/expectation.rb +1 -1
  14. data/lib/caricature/method_call_recorder.rb +3 -3
  15. data/lib/caricature/rspec/integration.rb +118 -118
  16. data/lib/caricature/version.rb +5 -5
  17. data/lib/caricature.rb +25 -25
  18. data/spec/bacon/integration/callback_spec.rb +156 -156
  19. data/spec/bacon/integration/clr_to_clr_spec.rb +325 -253
  20. data/spec/bacon/integration/event_spec.rb +97 -97
  21. data/spec/bacon/integration/indexer_spec.rb +27 -27
  22. data/spec/bacon/spec_helper.rb +4 -4
  23. data/spec/bacon/unit/descriptor_spec.rb +212 -212
  24. data/spec/bacon/unit/sword_spec.rb +39 -39
  25. data/spec/bacon/unit/verification_spec.rb +103 -103
  26. data/spec/bin/ClrModels.dll +0 -0
  27. data/spec/bin/ClrModels.dll.mdb +0 -0
  28. data/spec/fixtures/ExplodingCar.cs +56 -0
  29. data/spec/fixtures/ExposedChangedSubscriber.cs +26 -0
  30. data/spec/fixtures/ExposingWarrior.cs +58 -0
  31. data/spec/fixtures/IExplodingWarrior.cs +10 -0
  32. data/spec/fixtures/IExposing.cs +9 -0
  33. data/spec/fixtures/IExposingBridge.cs +9 -0
  34. data/spec/fixtures/IExposingWarrior.cs +8 -0
  35. data/spec/fixtures/IHaveAnIndexer.cs +8 -0
  36. data/spec/fixtures/IWarrior.cs +13 -0
  37. data/spec/fixtures/IWeapon.cs +9 -0
  38. data/spec/fixtures/IndexerCaller.cs +17 -0
  39. data/spec/fixtures/IndexerContained.cs +20 -0
  40. data/spec/fixtures/MyClassWithAStatic.cs +16 -0
  41. data/spec/fixtures/Ninja.cs +34 -0
  42. data/spec/fixtures/Samurai.cs +29 -0
  43. data/spec/fixtures/StaticCaller.cs +12 -0
  44. data/spec/fixtures/Sword.cs +16 -0
  45. data/spec/fixtures/SwordWithStatics.cs +19 -0
  46. data/spec/fixtures/clr_interaction.rb +61 -0
  47. data/spec/fixtures/dagger.rb +11 -0
  48. data/spec/fixtures/dagger_with_class_members.rb +11 -0
  49. data/spec/fixtures/sheath.rb +19 -0
  50. data/spec/fixtures/soldier.rb +29 -0
  51. data/spec/fixtures/soldier_with_class_members.rb +7 -0
  52. data/spec/fixtures/swift_cleanup_crew.rb +21 -0
  53. data/spec/fixtures/with_class_methods.rb +11 -0
  54. data/spec/{models → models.notused}/ClrModels.cs +241 -241
  55. data/spec/{models → models.notused}/ruby_models.rb +150 -150
  56. data/spec/rspec/integration/callback_spec.rb +156 -156
  57. data/spec/rspec/integration/clr_to_clr_spec.rb +254 -254
  58. data/spec/rspec/integration/clr_to_ruby_spec.rb +227 -227
  59. data/spec/rspec/integration/indexer_spec.rb +27 -27
  60. data/spec/rspec/integration/ruby_to_ruby_spec.rb +271 -271
  61. data/spec/rspec/spec_helper.rb +12 -12
  62. data/spec/rspec/unit/core_ext_spec.rb +87 -87
  63. data/spec/rspec/unit/descriptor_spec.rb +210 -210
  64. data/spec/rspec/unit/event_spec.rb +16 -16
  65. data/spec/rspec/unit/expectation_spec.rb +300 -300
  66. data/spec/rspec/unit/interop_spec.rb +29 -29
  67. data/spec/rspec/unit/isolation_spec.rb +86 -86
  68. data/spec/rspec/unit/isolator_spec.rb +219 -219
  69. data/spec/rspec/unit/messaging_spec.rb +310 -310
  70. data/spec/rspec/unit/method_call_spec.rb +342 -342
  71. data/spec/rspec/unit/sword_spec.rb +39 -39
  72. data/spec/rspec/unit/verification_spec.rb +103 -103
  73. data/spec/spec_helper.rb +16 -15
  74. metadata +42 -11
@@ -1,343 +1,343 @@
1
- require File.dirname(__FILE__) + "/../spec_helper"
2
-
3
- describe "MethodCallRecorder" do
4
-
5
- before do
6
- @recorder = Caricature::MethodCallRecorder.new
7
- end
8
-
9
- describe "when recording a call without arguments" do
10
-
11
- before do
12
- @recorder.record_call :my_method
13
- end
14
-
15
- it "should have 1 method call" do
16
- @recorder.method_calls[:instance].size.should == 1
17
- end
18
-
19
- describe "recorded call" do
20
-
21
- before do
22
- @mc = @recorder.method_calls[:instance][:my_method]
23
- end
24
-
25
- it "should have a method call collected" do
26
- @mc.should_not be_nil
27
- end
28
-
29
- it "should have the correct name" do
30
- @mc.method_name.should == :my_method
31
- end
32
-
33
- it "should have no arguments" do
34
- @mc.args.should == [Caricature::ArgumentRecording.new]
35
- end
36
-
37
- it "should have no block" do
38
- @mc.block.should be_nil
39
- end
40
-
41
- it "should have a count a 1" do
42
- @mc.count.should == 1
43
- end
44
-
45
- end
46
-
47
- end
48
-
49
- describe "when recording a call without arguments but with a block" do
50
-
51
- before do
52
- @block_content = "I'm in the block"
53
- @recorder.record_call :my_method do
54
- @block_content
55
- end
56
- end
57
-
58
- it "should have 1 method call" do
59
- @recorder.method_calls[:instance].size.should == 1
60
- end
61
-
62
- describe "recorded call" do
63
-
64
- before do
65
- @mc = @recorder.method_calls[:instance][:my_method]
66
- end
67
-
68
- it "should have a method call collected" do
69
- @mc.should_not be_nil
70
- end
71
-
72
- it "should have the correct name" do
73
- @mc.method_name.should == :my_method
74
- end
75
-
76
- it "should have no arguments" do
77
- @mc.args.should == [Caricature::ArgumentRecording.new]
78
- end
79
-
80
- it "should have a block" do
81
- @mc.args.first.block.should_not be_nil
82
- end
83
-
84
- it "should have the correct block" do
85
- @mc.args.first.block.call.should == @block_content
86
- end
87
-
88
- it "should have a count a 1" do
89
- @mc.count.should == 1
90
- end
91
-
92
- end
93
-
94
- end
95
-
96
- describe "when recording a call 1 argument" do
97
-
98
- before do
99
- @recorder.record_call :my_method, :instance, nil, 1
100
- end
101
-
102
- it "should have 1 method call" do
103
- @recorder.method_calls[:instance].size.should == 1
104
- end
105
-
106
- describe "recorded call" do
107
-
108
- before do
109
- @mc = @recorder.method_calls[:instance][:my_method]
110
- end
111
-
112
- it "should have a method call collected" do
113
- @mc.should_not be_nil
114
- end
115
-
116
- it "should have the correct name" do
117
- @mc.method_name.should == :my_method
118
- end
119
-
120
- it "should have 1 argument" do
121
- @mc.args.size.should == 1
122
- end
123
-
124
- it "should have the correct argument" do
125
- @mc.args.should == [Caricature::ArgumentRecording.new([1])]
126
- end
127
-
128
- it "should have no block" do
129
- @mc.block.should be_nil
130
- end
131
-
132
- it "should have a count a 1" do
133
- @mc.count.should == 1
134
- end
135
-
136
- end
137
-
138
- end
139
-
140
- describe "when recording a call 2 arguments" do
141
-
142
- before do
143
- @recorder.record_call :my_method, :instance, nil, 1, 2
144
- end
145
-
146
- it "should have 1 method call" do
147
- @recorder.method_calls[:instance].size.should == 1
148
- end
149
-
150
- describe "recorded call" do
151
-
152
- before do
153
- @mc = @recorder.method_calls[:instance][:my_method]
154
- end
155
-
156
- it "should have a method call collected" do
157
- @mc.should_not be_nil
158
- end
159
-
160
- it "should have the correct name" do
161
- @mc.method_name.should == :my_method
162
- end
163
-
164
- it "should have 1 argument recording" do
165
- @mc.args.size.should == 1
166
- end
167
-
168
- it "should have the correct arguments" do
169
- @mc.args.should == [Caricature::ArgumentRecording.new([1, 2])]
170
- end
171
-
172
- it "should have no block" do
173
- @mc.block.should be_nil
174
- end
175
-
176
- it "should have a count a 1" do
177
- @mc.count.should == 1
178
- end
179
-
180
- end
181
-
182
- end
183
-
184
- describe "when recording 2 calls with no arguments" do
185
-
186
- before do
187
- @recorder.record_call :my_method
188
- @recorder.record_call :my_method
189
- end
190
-
191
- it "should have 1 method call" do
192
- @recorder.method_calls[:instance].size.should == 1
193
- end
194
-
195
- describe "recorded call" do
196
-
197
- before do
198
- @mc = @recorder.method_calls[:instance][:my_method]
199
- end
200
-
201
- it "should have a method call collected" do
202
- @mc.should_not be_nil
203
- end
204
-
205
- it "should have the correct name" do
206
- @mc.method_name.should == :my_method
207
- end
208
-
209
- it "should have no arguments" do
210
- @mc.args.should == [Caricature::ArgumentRecording.new]
211
- end
212
-
213
- it "should have no block" do
214
- @mc.block.should be_nil
215
- end
216
-
217
- it "should have a count of 2" do
218
- @mc.count.should == 2
219
- end
220
-
221
- end
222
-
223
- end
224
-
225
- describe "when recording a call with a block" do
226
- before do
227
- @args = []
228
- @b = @recorder.record_call :some_method, :instance, nil, 5, 6, 7 do |*args|
229
- @args = args
230
- end
231
-
232
- end
233
-
234
- it "should return a block" do
235
- @b.should_not be_nil
236
- end
237
-
238
- it "should return a block that wraps a recording" do
239
- @b.call 8, 9, 0
240
- @recorder.method_calls[:instance][:some_method].args.first.blocks.first.args.should == [8, 9, 0]
241
- end
242
-
243
- it "should call the original block" do
244
- @b.call 8, 9, 0
245
- @args.should == [8, 9, 0]
246
- end
247
- end
248
-
249
- describe "when recording 2 calls with different arguments" do
250
-
251
- before do
252
- @recorder.record_call :my_method
253
- @recorder.record_call :my_method, :instance, nil, 1, 3, 4
254
- end
255
-
256
- it "should have 1 method call" do
257
- @recorder.method_calls[:instance].size.should == 1
258
- end
259
-
260
- describe "recorded call" do
261
-
262
- before do
263
- @mc = @recorder.method_calls[:instance][:my_method]
264
- end
265
-
266
- it "should have a method call collected" do
267
- @mc.should_not be_nil
268
- end
269
-
270
- it "should have the correct name" do
271
- @mc.method_name.should == :my_method
272
- end
273
-
274
- it "should have argument variations" do
275
- @mc.has_argument_variations?.should be_true
276
- end
277
-
278
- it "should have no block" do
279
- @mc.block.should be_nil
280
- end
281
-
282
- it "should have a count of 2" do
283
- @mc.count.should == 2
284
- end
285
-
286
- end
287
-
288
- end
289
-
290
- describe "when asked if a certain method was called" do
291
-
292
- before do
293
- @recorder.record_call :my_method
294
- @recorder.record_call :my_method, :instance, nil, 1, 3, 4
295
-
296
- end
297
-
298
- it "should confirm when we don't care about the arguments" do
299
- @recorder.was_called?(:my_method, nil, :instance, :any).should be_true
300
- end
301
-
302
- it "should confirm when there are no argument variations" do
303
- @recorder.record_call :another_method
304
- @recorder.was_called?(:another_method, nil, :instance, :any).should be_true
305
- end
306
-
307
- it "should be negative when we provide the wrong arguments" do
308
- @recorder.was_called?(:my_method, nil, :instance, 1, 2, 5).should be_false
309
- end
310
-
311
- it "should be positive when we provide the correct arguments" do
312
- @recorder.was_called?(:my_method, nil, :instance, 1, 3, 4).should be_true
313
- end
314
-
315
- it "should be positive when we provide no arguments and a call had been recorded without arguments" do
316
- @recorder.was_called?(:my_method, nil, :instance).should be_true
317
- end
318
-
319
- describe "with block" do
320
-
321
- before do
322
- @args = []
323
- b = @recorder.record_call :some_method, :instance, nil, 5, 6, 7 do |*args|
324
- @args << args
325
- end
326
- b.call 1, 3, 5
327
- b.call 3, 4, 6
328
- b.call
329
- end
330
-
331
- it "should be positive when we provide any arguments" do
332
- @recorder.was_called?(:some_method, [:any], :instance, :any).should be_true
333
- end
334
-
335
- it "should be positive when we provide specific arguments" do
336
- @recorder.was_called?(:some_method, [1, 3, 5], :instance, :any).should be_true
337
- end
338
-
339
- end
340
-
341
- end
342
-
1
+ require File.dirname(__FILE__) + "/../spec_helper"
2
+
3
+ describe "MethodCallRecorder" do
4
+
5
+ before do
6
+ @recorder = Caricature::MethodCallRecorder.new
7
+ end
8
+
9
+ describe "when recording a call without arguments" do
10
+
11
+ before do
12
+ @recorder.record_call :my_method
13
+ end
14
+
15
+ it "should have 1 method call" do
16
+ @recorder.method_calls[:instance].size.should == 1
17
+ end
18
+
19
+ describe "recorded call" do
20
+
21
+ before do
22
+ @mc = @recorder.method_calls[:instance][:my_method]
23
+ end
24
+
25
+ it "should have a method call collected" do
26
+ @mc.should_not be_nil
27
+ end
28
+
29
+ it "should have the correct name" do
30
+ @mc.method_name.should == :my_method
31
+ end
32
+
33
+ it "should have no arguments" do
34
+ @mc.args.should == [Caricature::ArgumentRecording.new]
35
+ end
36
+
37
+ it "should have no block" do
38
+ @mc.block.should be_nil
39
+ end
40
+
41
+ it "should have a count a 1" do
42
+ @mc.count.should == 1
43
+ end
44
+
45
+ end
46
+
47
+ end
48
+
49
+ describe "when recording a call without arguments but with a block" do
50
+
51
+ before do
52
+ @block_content = "I'm in the block"
53
+ @recorder.record_call :my_method do
54
+ @block_content
55
+ end
56
+ end
57
+
58
+ it "should have 1 method call" do
59
+ @recorder.method_calls[:instance].size.should == 1
60
+ end
61
+
62
+ describe "recorded call" do
63
+
64
+ before do
65
+ @mc = @recorder.method_calls[:instance][:my_method]
66
+ end
67
+
68
+ it "should have a method call collected" do
69
+ @mc.should_not be_nil
70
+ end
71
+
72
+ it "should have the correct name" do
73
+ @mc.method_name.should == :my_method
74
+ end
75
+
76
+ it "should have no arguments" do
77
+ @mc.args.should == [Caricature::ArgumentRecording.new]
78
+ end
79
+
80
+ it "should have a block" do
81
+ @mc.args.first.block.should_not be_nil
82
+ end
83
+
84
+ it "should have the correct block" do
85
+ @mc.args.first.block.call.should == @block_content
86
+ end
87
+
88
+ it "should have a count a 1" do
89
+ @mc.count.should == 1
90
+ end
91
+
92
+ end
93
+
94
+ end
95
+
96
+ describe "when recording a call 1 argument" do
97
+
98
+ before do
99
+ @recorder.record_call :my_method, :instance, nil, 1
100
+ end
101
+
102
+ it "should have 1 method call" do
103
+ @recorder.method_calls[:instance].size.should == 1
104
+ end
105
+
106
+ describe "recorded call" do
107
+
108
+ before do
109
+ @mc = @recorder.method_calls[:instance][:my_method]
110
+ end
111
+
112
+ it "should have a method call collected" do
113
+ @mc.should_not be_nil
114
+ end
115
+
116
+ it "should have the correct name" do
117
+ @mc.method_name.should == :my_method
118
+ end
119
+
120
+ it "should have 1 argument" do
121
+ @mc.args.size.should == 1
122
+ end
123
+
124
+ it "should have the correct argument" do
125
+ @mc.args.should == [Caricature::ArgumentRecording.new([1])]
126
+ end
127
+
128
+ it "should have no block" do
129
+ @mc.block.should be_nil
130
+ end
131
+
132
+ it "should have a count a 1" do
133
+ @mc.count.should == 1
134
+ end
135
+
136
+ end
137
+
138
+ end
139
+
140
+ describe "when recording a call 2 arguments" do
141
+
142
+ before do
143
+ @recorder.record_call :my_method, :instance, nil, 1, 2
144
+ end
145
+
146
+ it "should have 1 method call" do
147
+ @recorder.method_calls[:instance].size.should == 1
148
+ end
149
+
150
+ describe "recorded call" do
151
+
152
+ before do
153
+ @mc = @recorder.method_calls[:instance][:my_method]
154
+ end
155
+
156
+ it "should have a method call collected" do
157
+ @mc.should_not be_nil
158
+ end
159
+
160
+ it "should have the correct name" do
161
+ @mc.method_name.should == :my_method
162
+ end
163
+
164
+ it "should have 1 argument recording" do
165
+ @mc.args.size.should == 1
166
+ end
167
+
168
+ it "should have the correct arguments" do
169
+ @mc.args.should == [Caricature::ArgumentRecording.new([1, 2])]
170
+ end
171
+
172
+ it "should have no block" do
173
+ @mc.block.should be_nil
174
+ end
175
+
176
+ it "should have a count a 1" do
177
+ @mc.count.should == 1
178
+ end
179
+
180
+ end
181
+
182
+ end
183
+
184
+ describe "when recording 2 calls with no arguments" do
185
+
186
+ before do
187
+ @recorder.record_call :my_method
188
+ @recorder.record_call :my_method
189
+ end
190
+
191
+ it "should have 1 method call" do
192
+ @recorder.method_calls[:instance].size.should == 1
193
+ end
194
+
195
+ describe "recorded call" do
196
+
197
+ before do
198
+ @mc = @recorder.method_calls[:instance][:my_method]
199
+ end
200
+
201
+ it "should have a method call collected" do
202
+ @mc.should_not be_nil
203
+ end
204
+
205
+ it "should have the correct name" do
206
+ @mc.method_name.should == :my_method
207
+ end
208
+
209
+ it "should have no arguments" do
210
+ @mc.args.should == [Caricature::ArgumentRecording.new]
211
+ end
212
+
213
+ it "should have no block" do
214
+ @mc.block.should be_nil
215
+ end
216
+
217
+ it "should have a count of 2" do
218
+ @mc.count.should == 2
219
+ end
220
+
221
+ end
222
+
223
+ end
224
+
225
+ describe "when recording a call with a block" do
226
+ before do
227
+ @args = []
228
+ @b = @recorder.record_call :some_method, :instance, nil, 5, 6, 7 do |*args|
229
+ @args = args
230
+ end
231
+
232
+ end
233
+
234
+ it "should return a block" do
235
+ @b.should_not be_nil
236
+ end
237
+
238
+ it "should return a block that wraps a recording" do
239
+ @b.call 8, 9, 0
240
+ @recorder.method_calls[:instance][:some_method].args.first.blocks.first.args.should == [8, 9, 0]
241
+ end
242
+
243
+ it "should call the original block" do
244
+ @b.call 8, 9, 0
245
+ @args.should == [8, 9, 0]
246
+ end
247
+ end
248
+
249
+ describe "when recording 2 calls with different arguments" do
250
+
251
+ before do
252
+ @recorder.record_call :my_method
253
+ @recorder.record_call :my_method, :instance, nil, 1, 3, 4
254
+ end
255
+
256
+ it "should have 1 method call" do
257
+ @recorder.method_calls[:instance].size.should == 1
258
+ end
259
+
260
+ describe "recorded call" do
261
+
262
+ before do
263
+ @mc = @recorder.method_calls[:instance][:my_method]
264
+ end
265
+
266
+ it "should have a method call collected" do
267
+ @mc.should_not be_nil
268
+ end
269
+
270
+ it "should have the correct name" do
271
+ @mc.method_name.should == :my_method
272
+ end
273
+
274
+ it "should have argument variations" do
275
+ @mc.has_argument_variations?.should be_true
276
+ end
277
+
278
+ it "should have no block" do
279
+ @mc.block.should be_nil
280
+ end
281
+
282
+ it "should have a count of 2" do
283
+ @mc.count.should == 2
284
+ end
285
+
286
+ end
287
+
288
+ end
289
+
290
+ describe "when asked if a certain method was called" do
291
+
292
+ before do
293
+ @recorder.record_call :my_method
294
+ @recorder.record_call :my_method, :instance, nil, 1, 3, 4
295
+
296
+ end
297
+
298
+ it "should confirm when we don't care about the arguments" do
299
+ @recorder.was_called?(:my_method, nil, :instance, :any).should be_true
300
+ end
301
+
302
+ it "should confirm when there are no argument variations" do
303
+ @recorder.record_call :another_method
304
+ @recorder.was_called?(:another_method, nil, :instance, :any).should be_true
305
+ end
306
+
307
+ it "should be negative when we provide the wrong arguments" do
308
+ @recorder.was_called?(:my_method, nil, :instance, 1, 2, 5).should be_false
309
+ end
310
+
311
+ it "should be positive when we provide the correct arguments" do
312
+ @recorder.was_called?(:my_method, nil, :instance, 1, 3, 4).should be_true
313
+ end
314
+
315
+ it "should be positive when we provide no arguments and a call had been recorded without arguments" do
316
+ @recorder.was_called?(:my_method, nil, :instance).should be_true
317
+ end
318
+
319
+ describe "with block" do
320
+
321
+ before do
322
+ @args = []
323
+ b = @recorder.record_call :some_method, :instance, nil, 5, 6, 7 do |*args|
324
+ @args << args
325
+ end
326
+ b.call 1, 3, 5
327
+ b.call 3, 4, 6
328
+ b.call
329
+ end
330
+
331
+ it "should be positive when we provide any arguments" do
332
+ @recorder.was_called?(:some_method, [:any], :instance, :any).should be_true
333
+ end
334
+
335
+ it "should be positive when we provide specific arguments" do
336
+ @recorder.was_called?(:some_method, [1, 3, 5], :instance, :any).should be_true
337
+ end
338
+
339
+ end
340
+
341
+ end
342
+
343
343
  end