caricature 0.7.5 → 0.7.6

Sign up to get free protection for your applications and to get access to all the features.
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,151 +1,151 @@
1
- class Soldier
2
-
3
- def initialize
4
- @life = 10
5
- end
6
-
7
- def name
8
- "Tommy Boy"
9
- end
10
-
11
- def to_s
12
- "I'm a soldier"
13
- end
14
-
15
- def attack(target, weapon)
16
- weapon.attack(target)
17
- end
18
-
19
- def is_killed_by?(weapon)
20
- weapon.damage > 3
21
- end
22
-
23
- def survive_attack_with(weapon)
24
- @life - weapon.damage
25
- end
26
-
27
- end
28
-
29
- class SoldierWithClassMembers
30
- def initialize
31
- @life = 10
32
- end
33
- def name
34
- "Tommy Boy"
35
- end
36
- def to_s
37
- "I'm a soldier"
38
- end
39
- def attack(target, weapon)
40
- weapon.attack(target)
41
- end
42
- def is_killed_by?(weapon)
43
- weapon.damage > 3
44
- end
45
- def survive_attack_with(weapon)
46
- @life - weapon.damage
47
- end
48
- def self.class_name
49
- "DaggerWithClassMembers"
50
- end
51
- end
52
-
53
- class Dagger
54
-
55
- def damage
56
- 2
57
- end
58
-
59
- def attack(target)
60
- target.survive_attack_with self
61
- end
62
-
63
-
64
- end
65
-
66
- class DaggerWithClassMembers
67
- def damage
68
- 2
69
- end
70
- def attack(target)
71
- target.survive_attack_with self
72
- end
73
- def self.class_name
74
- "DaggerWithClassMembers"
75
- end
76
- end
77
-
78
- class WithClassMethods
79
-
80
- def hello_world
81
- "Hello World!"
82
- end
83
-
84
- def self.good_bye_world
85
- "Goodbye world!"
86
- end
87
-
88
- end
89
-
90
- class Sheath
91
- attr_reader :dagger
92
-
93
- def initialize(dagger)
94
- @dagger = dagger
95
- end
96
-
97
- def insert(dagger)
98
- raise "There is already a dagger in here" if @dagger
99
- @dagger = dagger
100
- end
101
-
102
- def draw
103
- raise "Dagger is nowhere to be found" unless @dagger
104
- d = @dagger
105
- @dagger = nil
106
- d
107
- end
108
- end
109
-
110
- if defined? IRONRUBY_VERSION
111
-
112
- module Caricature
113
-
114
- module InterfaceIncludingModule
115
- include ClrModels::IWarrior
116
- end
117
-
118
- module PureRubyModule
119
-
120
- end
121
-
122
- module RubyModuleIncludingModule
123
- include PureRubyModule
124
- end
125
-
126
- module InterfaceUpTheWazoo
127
- include InterfaceIncludingModule
128
- end
129
-
130
- class InterfaceIncludingClass
131
- include ClrModels::IWarrior
132
- end
133
-
134
- class SubClassingClrClass < ClrModels::Ninja
135
-
136
- end
137
-
138
- class InterfaceUpTheWazooClass
139
- include InterfaceUpTheWazoo
140
- end
141
-
142
- class SubclassingRubyClass < Soldier
143
-
144
- end
145
-
146
- class ModuleIncludingClass
147
- include RubyModuleIncludingModule
148
- end
149
- end
150
-
1
+ class Soldier
2
+
3
+ def initialize
4
+ @life = 10
5
+ end
6
+
7
+ def name
8
+ "Tommy Boy"
9
+ end
10
+
11
+ def to_s
12
+ "I'm a soldier"
13
+ end
14
+
15
+ def attack(target, weapon)
16
+ weapon.attack(target)
17
+ end
18
+
19
+ def is_killed_by?(weapon)
20
+ weapon.damage > 3
21
+ end
22
+
23
+ def survive_attack_with(weapon)
24
+ @life - weapon.damage
25
+ end
26
+
27
+ end
28
+
29
+ class SoldierWithClassMembers
30
+ def initialize
31
+ @life = 10
32
+ end
33
+ def name
34
+ "Tommy Boy"
35
+ end
36
+ def to_s
37
+ "I'm a soldier"
38
+ end
39
+ def attack(target, weapon)
40
+ weapon.attack(target)
41
+ end
42
+ def is_killed_by?(weapon)
43
+ weapon.damage > 3
44
+ end
45
+ def survive_attack_with(weapon)
46
+ @life - weapon.damage
47
+ end
48
+ def self.class_name
49
+ "DaggerWithClassMembers"
50
+ end
51
+ end
52
+
53
+ class Dagger
54
+
55
+ def damage
56
+ 2
57
+ end
58
+
59
+ def attack(target)
60
+ target.survive_attack_with self
61
+ end
62
+
63
+
64
+ end
65
+
66
+ class DaggerWithClassMembers
67
+ def damage
68
+ 2
69
+ end
70
+ def attack(target)
71
+ target.survive_attack_with self
72
+ end
73
+ def self.class_name
74
+ "DaggerWithClassMembers"
75
+ end
76
+ end
77
+
78
+ class WithClassMethods
79
+
80
+ def hello_world
81
+ "Hello World!"
82
+ end
83
+
84
+ def self.good_bye_world
85
+ "Goodbye world!"
86
+ end
87
+
88
+ end
89
+
90
+ class Sheath
91
+ attr_reader :dagger
92
+
93
+ def initialize(dagger)
94
+ @dagger = dagger
95
+ end
96
+
97
+ def insert(dagger)
98
+ raise "There is already a dagger in here" if @dagger
99
+ @dagger = dagger
100
+ end
101
+
102
+ def draw
103
+ raise "Dagger is nowhere to be found" unless @dagger
104
+ d = @dagger
105
+ @dagger = nil
106
+ d
107
+ end
108
+ end
109
+
110
+ if defined? IRONRUBY_VERSION
111
+
112
+ module Caricature
113
+
114
+ module InterfaceIncludingModule
115
+ include ClrModels::IWarrior
116
+ end
117
+
118
+ module PureRubyModule
119
+
120
+ end
121
+
122
+ module RubyModuleIncludingModule
123
+ include PureRubyModule
124
+ end
125
+
126
+ module InterfaceUpTheWazoo
127
+ include InterfaceIncludingModule
128
+ end
129
+
130
+ class InterfaceIncludingClass
131
+ include ClrModels::IWarrior
132
+ end
133
+
134
+ class SubClassingClrClass < ClrModels::Ninja
135
+
136
+ end
137
+
138
+ class InterfaceUpTheWazooClass
139
+ include InterfaceUpTheWazoo
140
+ end
141
+
142
+ class SubclassingRubyClass < Soldier
143
+
144
+ end
145
+
146
+ class ModuleIncludingClass
147
+ include RubyModuleIncludingModule
148
+ end
149
+ end
150
+
151
151
  end
@@ -1,157 +1,157 @@
1
- require File.dirname(__FILE__) + "/../spec_helper"
2
-
3
- describe "Callbacks on expectations" do
4
-
5
- describe "CLR to CLR interactions" do
6
-
7
- describe "when isolating CLR interfaces" do
8
-
9
- before do
10
- @ninja = ClrModels::Ninja.new
11
- @weapon = Caricature::Isolation.for(ClrModels::IWeapon)
12
- end
13
-
14
- it "should execute the callback when the expectation is invoked" do
15
- ninja = ClrModels::Ninja.new
16
- cnt = 0
17
- @weapon.when_receiving(:attack).with(:any) do |*args|
18
- cnt += 1
19
- end
20
- @ninja.attack ninja, @weapon
21
-
22
- cnt.should == 1
23
- end
24
-
25
- end
26
-
27
- describe "when isolating CLR classes" do
28
-
29
- before do
30
- @ninja = ClrModels::Ninja.new
31
- @weapon = Caricature::Isolation.for(ClrModels::Sword)
32
- end
33
-
34
- it "should execute the callback when the expectation is invoked" do
35
- ninja = ClrModels::Ninja.new
36
- cnt = 0
37
- @weapon.when_receiving(:attack).with(:any) do |*args|
38
- cnt += 1
39
- end
40
- @ninja.attack ninja, @weapon
41
-
42
- cnt.should == 1
43
- end
44
-
45
- end
46
-
47
- describe "when isolating CLR instances" do
48
- before do
49
- @ninja = ClrModels::Ninja.new
50
- @weapon = Caricature::Isolation.for(ClrModels::Sword.new)
51
- end
52
-
53
- it "should execute the callback when the expectation is invoked" do
54
- ninja = ClrModels::Ninja.new
55
- cnt = 0
56
- @weapon.when_receiving(:attack).with(ninja) do |*args|
57
- cnt += 1
58
- end
59
- @ninja.attack ninja, @weapon
60
-
61
- cnt.should == 1
62
- end
63
- end
64
-
65
- end
66
-
67
- describe "CLR to ruby interactions" do
68
-
69
- describe "when isolating CLR interfaces" do
70
-
71
- before do
72
- @ninja = Soldier.new
73
- @weapon = Caricature::Isolation.for(ClrModels::IWeapon)
74
- end
75
-
76
- it "should execute the callback when the expectation is invoked" do
77
- ninja = Soldier.new
78
- cnt = 0
79
- @weapon.when_receiving(:attack).with(:any) do |*args|
80
- cnt += 1
81
- end
82
- @ninja.attack ninja, @weapon
83
-
84
- cnt.should == 1
85
- end
86
-
87
- end
88
-
89
- describe "when isolating CLR classes" do
90
-
91
- before do
92
- @ninja = Soldier.new
93
- @weapon = Caricature::Isolation.for(ClrModels::Sword)
94
- end
95
-
96
- it "should execute the callback when the expectation is invoked" do
97
- ninja = Soldier.new
98
- cnt = 0
99
- @weapon.when_receiving(:attack).with(:any) do |*args|
100
- cnt += 1
101
- end
102
- @ninja.attack ninja, @weapon
103
-
104
- cnt.should == 1
105
- end
106
-
107
- end
108
-
109
- describe "when isolating CLR instances" do
110
- before do
111
- @ninja = Soldier.new
112
- @weapon = Caricature::Isolation.for(ClrModels::Sword.new)
113
- end
114
-
115
- it "should execute the callback when the expectation is invoked" do
116
- ninja = Soldier.new
117
- cnt = 0
118
- @weapon.when_receiving(:attack).with(ninja) do |*args|
119
- cnt += 1
120
- end
121
- @ninja.attack ninja, @weapon
122
-
123
- cnt.should == 1
124
- end
125
- end
126
-
127
-
128
- end
129
-
130
- describe "Ruby to Ruby interactions" do
131
-
132
- it "should execute a callback when an expectation is being invoked and with is not defined in a block" do
133
- iso = Caricature::Isolation.for(Dagger)
134
- cnt = 0
135
- iso.when_receiving(:damage).with(:any) do |*args|
136
- cnt += 1
137
- end
138
- iso.damage
139
- cnt.should == 1
140
- end
141
-
142
- it "should execute a callback when an expectation is being invoked and with is defined in a block" do
143
- cnt = 0
144
- iso = Caricature::Isolation.for(Dagger)
145
- iso.when_receiving(:damage) do |exp|
146
- exp.with(:any) do |*args|
147
- cnt += 1
148
- end
149
- end
150
- iso.damage
151
- cnt.should == 1
152
- end
153
- end
154
-
155
-
156
-
1
+ require File.dirname(__FILE__) + "/../spec_helper"
2
+
3
+ describe "Callbacks on expectations" do
4
+
5
+ describe "CLR to CLR interactions" do
6
+
7
+ describe "when isolating CLR interfaces" do
8
+
9
+ before do
10
+ @ninja = ClrModels::Ninja.new
11
+ @weapon = Caricature::Isolation.for(ClrModels::IWeapon)
12
+ end
13
+
14
+ it "should execute the callback when the expectation is invoked" do
15
+ ninja = ClrModels::Ninja.new
16
+ cnt = 0
17
+ @weapon.when_receiving(:attack).with(:any) do |*args|
18
+ cnt += 1
19
+ end
20
+ @ninja.attack ninja, @weapon
21
+
22
+ cnt.should == 1
23
+ end
24
+
25
+ end
26
+
27
+ describe "when isolating CLR classes" do
28
+
29
+ before do
30
+ @ninja = ClrModels::Ninja.new
31
+ @weapon = Caricature::Isolation.for(ClrModels::Sword)
32
+ end
33
+
34
+ it "should execute the callback when the expectation is invoked" do
35
+ ninja = ClrModels::Ninja.new
36
+ cnt = 0
37
+ @weapon.when_receiving(:attack).with(:any) do |*args|
38
+ cnt += 1
39
+ end
40
+ @ninja.attack ninja, @weapon
41
+
42
+ cnt.should == 1
43
+ end
44
+
45
+ end
46
+
47
+ describe "when isolating CLR instances" do
48
+ before do
49
+ @ninja = ClrModels::Ninja.new
50
+ @weapon = Caricature::Isolation.for(ClrModels::Sword.new)
51
+ end
52
+
53
+ it "should execute the callback when the expectation is invoked" do
54
+ ninja = ClrModels::Ninja.new
55
+ cnt = 0
56
+ @weapon.when_receiving(:attack).with(ninja) do |*args|
57
+ cnt += 1
58
+ end
59
+ @ninja.attack ninja, @weapon
60
+
61
+ cnt.should == 1
62
+ end
63
+ end
64
+
65
+ end
66
+
67
+ describe "CLR to ruby interactions" do
68
+
69
+ describe "when isolating CLR interfaces" do
70
+
71
+ before do
72
+ @ninja = Soldier.new
73
+ @weapon = Caricature::Isolation.for(ClrModels::IWeapon)
74
+ end
75
+
76
+ it "should execute the callback when the expectation is invoked" do
77
+ ninja = Soldier.new
78
+ cnt = 0
79
+ @weapon.when_receiving(:attack).with(:any) do |*args|
80
+ cnt += 1
81
+ end
82
+ @ninja.attack ninja, @weapon
83
+
84
+ cnt.should == 1
85
+ end
86
+
87
+ end
88
+
89
+ describe "when isolating CLR classes" do
90
+
91
+ before do
92
+ @ninja = Soldier.new
93
+ @weapon = Caricature::Isolation.for(ClrModels::Sword)
94
+ end
95
+
96
+ it "should execute the callback when the expectation is invoked" do
97
+ ninja = Soldier.new
98
+ cnt = 0
99
+ @weapon.when_receiving(:attack).with(:any) do |*args|
100
+ cnt += 1
101
+ end
102
+ @ninja.attack ninja, @weapon
103
+
104
+ cnt.should == 1
105
+ end
106
+
107
+ end
108
+
109
+ describe "when isolating CLR instances" do
110
+ before do
111
+ @ninja = Soldier.new
112
+ @weapon = Caricature::Isolation.for(ClrModels::Sword.new)
113
+ end
114
+
115
+ it "should execute the callback when the expectation is invoked" do
116
+ ninja = Soldier.new
117
+ cnt = 0
118
+ @weapon.when_receiving(:attack).with(ninja) do |*args|
119
+ cnt += 1
120
+ end
121
+ @ninja.attack ninja, @weapon
122
+
123
+ cnt.should == 1
124
+ end
125
+ end
126
+
127
+
128
+ end
129
+
130
+ describe "Ruby to Ruby interactions" do
131
+
132
+ it "should execute a callback when an expectation is being invoked and with is not defined in a block" do
133
+ iso = Caricature::Isolation.for(Dagger)
134
+ cnt = 0
135
+ iso.when_receiving(:damage).with(:any) do |*args|
136
+ cnt += 1
137
+ end
138
+ iso.damage
139
+ cnt.should == 1
140
+ end
141
+
142
+ it "should execute a callback when an expectation is being invoked and with is defined in a block" do
143
+ cnt = 0
144
+ iso = Caricature::Isolation.for(Dagger)
145
+ iso.when_receiving(:damage) do |exp|
146
+ exp.with(:any) do |*args|
147
+ cnt += 1
148
+ end
149
+ end
150
+ iso.damage
151
+ cnt.should == 1
152
+ end
153
+ end
154
+
155
+
156
+
157
157
  end