rsanheim-micronaut 0.1.3.2

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 (82) hide show
  1. data/LICENSE +45 -0
  2. data/README +17 -0
  3. data/RSPEC-LICENSE +23 -0
  4. data/Rakefile +83 -0
  5. data/bin/micronaut +4 -0
  6. data/examples/example_helper.rb +36 -0
  7. data/examples/lib/micronaut/behaviour_example.rb +188 -0
  8. data/examples/lib/micronaut/configuration_example.rb +70 -0
  9. data/examples/lib/micronaut/example_example.rb +46 -0
  10. data/examples/lib/micronaut/expectations/extensions/object_example.rb +72 -0
  11. data/examples/lib/micronaut/expectations/fail_with_example.rb +17 -0
  12. data/examples/lib/micronaut/expectations/wrap_expectation_example.rb +31 -0
  13. data/examples/lib/micronaut/formatters/base_formatter_example.rb +107 -0
  14. data/examples/lib/micronaut/formatters/documentation_formatter_example.rb +5 -0
  15. data/examples/lib/micronaut/formatters/progress_formatter_example.rb +74 -0
  16. data/examples/lib/micronaut/kernel_extensions_example.rb +13 -0
  17. data/examples/lib/micronaut/matchers/be_close_example.rb +52 -0
  18. data/examples/lib/micronaut/matchers/be_example.rb +298 -0
  19. data/examples/lib/micronaut/matchers/change_example.rb +360 -0
  20. data/examples/lib/micronaut/matchers/description_generation_example.rb +175 -0
  21. data/examples/lib/micronaut/matchers/eql_example.rb +35 -0
  22. data/examples/lib/micronaut/matchers/equal_example.rb +35 -0
  23. data/examples/lib/micronaut/matchers/handler_example.rb +153 -0
  24. data/examples/lib/micronaut/matchers/has_example.rb +71 -0
  25. data/examples/lib/micronaut/matchers/have_example.rb +575 -0
  26. data/examples/lib/micronaut/matchers/include_example.rb +103 -0
  27. data/examples/lib/micronaut/matchers/match_example.rb +43 -0
  28. data/examples/lib/micronaut/matchers/matcher_methods_example.rb +66 -0
  29. data/examples/lib/micronaut/matchers/operator_matcher_example.rb +189 -0
  30. data/examples/lib/micronaut/matchers/raise_error_example.rb +346 -0
  31. data/examples/lib/micronaut/matchers/respond_to_example.rb +54 -0
  32. data/examples/lib/micronaut/matchers/satisfy_example.rb +36 -0
  33. data/examples/lib/micronaut/matchers/simple_matcher_example.rb +93 -0
  34. data/examples/lib/micronaut/matchers/throw_symbol_example.rb +96 -0
  35. data/examples/lib/micronaut/runner_example.rb +5 -0
  36. data/examples/lib/micronaut/runner_options_example.rb +5 -0
  37. data/examples/lib/micronaut/world_example.rb +102 -0
  38. data/examples/lib/micronaut_example.rb +23 -0
  39. data/examples/resources/example_classes.rb +67 -0
  40. data/lib/autotest/discover.rb +3 -0
  41. data/lib/autotest/micronaut.rb +47 -0
  42. data/lib/micronaut/behaviour.rb +211 -0
  43. data/lib/micronaut/configuration.rb +133 -0
  44. data/lib/micronaut/example.rb +28 -0
  45. data/lib/micronaut/expectations/extensions/object.rb +62 -0
  46. data/lib/micronaut/expectations/extensions/string_and_symbol.rb +19 -0
  47. data/lib/micronaut/expectations/handler.rb +52 -0
  48. data/lib/micronaut/expectations/wrap_expectation.rb +57 -0
  49. data/lib/micronaut/expectations.rb +46 -0
  50. data/lib/micronaut/formatters/base_formatter.rb +82 -0
  51. data/lib/micronaut/formatters/base_text_formatter.rb +148 -0
  52. data/lib/micronaut/formatters/documentation_formatter.rb +62 -0
  53. data/lib/micronaut/formatters/progress_formatter.rb +36 -0
  54. data/lib/micronaut/formatters.rb +12 -0
  55. data/lib/micronaut/kernel_extensions.rb +11 -0
  56. data/lib/micronaut/matchers/be.rb +204 -0
  57. data/lib/micronaut/matchers/be_close.rb +22 -0
  58. data/lib/micronaut/matchers/change.rb +148 -0
  59. data/lib/micronaut/matchers/eql.rb +26 -0
  60. data/lib/micronaut/matchers/equal.rb +26 -0
  61. data/lib/micronaut/matchers/generated_descriptions.rb +36 -0
  62. data/lib/micronaut/matchers/has.rb +19 -0
  63. data/lib/micronaut/matchers/have.rb +153 -0
  64. data/lib/micronaut/matchers/include.rb +80 -0
  65. data/lib/micronaut/matchers/match.rb +22 -0
  66. data/lib/micronaut/matchers/method_missing.rb +9 -0
  67. data/lib/micronaut/matchers/operator_matcher.rb +50 -0
  68. data/lib/micronaut/matchers/raise_error.rb +128 -0
  69. data/lib/micronaut/matchers/respond_to.rb +50 -0
  70. data/lib/micronaut/matchers/satisfy.rb +50 -0
  71. data/lib/micronaut/matchers/simple_matcher.rb +135 -0
  72. data/lib/micronaut/matchers/throw_symbol.rb +108 -0
  73. data/lib/micronaut/matchers.rb +148 -0
  74. data/lib/micronaut/mocking/with_absolutely_nothing.rb +11 -0
  75. data/lib/micronaut/mocking/with_mocha.rb +13 -0
  76. data/lib/micronaut/mocking/with_rr.rb +24 -0
  77. data/lib/micronaut/mocking.rb +7 -0
  78. data/lib/micronaut/runner.rb +57 -0
  79. data/lib/micronaut/runner_options.rb +33 -0
  80. data/lib/micronaut/world.rb +75 -0
  81. data/lib/micronaut.rb +37 -0
  82. metadata +149 -0
@@ -0,0 +1,43 @@
1
+ require File.expand_path(File.dirname(__FILE__) + "/../../../example_helper")
2
+
3
+ describe Micronaut::Matchers do
4
+
5
+ describe "should match(expected)" do
6
+
7
+ it "should pass when target (String) matches expected (Regexp)" do
8
+ "string".should match(/tri/)
9
+ end
10
+
11
+ it "should fail when target (String) does not match expected (Regexp)" do
12
+ lambda { "string".should match(/rings/) }.should fail
13
+ end
14
+
15
+ it "should provide message, expected and actual on failure" do
16
+ matcher = match(/rings/)
17
+ matcher.matches?("string")
18
+ matcher.failure_message.should == ["expected \"string\" to match /rings/", /rings/, "string"]
19
+ end
20
+
21
+ end
22
+
23
+ describe "should_not match(expected)" do
24
+
25
+ it "should pass when target (String) matches does not match (Regexp)" do
26
+ "string".should_not match(/rings/)
27
+ end
28
+
29
+ it "should fail when target (String) matches expected (Regexp)" do
30
+ lambda {
31
+ "string".should_not match(/tri/)
32
+ }.should fail
33
+ end
34
+
35
+ it "should provide message, expected and actual on failure" do
36
+ matcher = match(/tri/)
37
+ matcher.matches?("string")
38
+ matcher.negative_failure_message.should == ["expected \"string\" not to match /tri/", /tri/, "string"]
39
+ end
40
+
41
+ end
42
+
43
+ end
@@ -0,0 +1,66 @@
1
+ require File.expand_path(File.dirname(__FILE__) + "/../../../example_helper")
2
+
3
+ module Micronaut
4
+ module Matchers
5
+ describe %Q{The Micronaut::Matchers module gets included in the execution context of every spec.
6
+ This module should provide the following methods, each of which returns a Matcher object.} do
7
+ it "be_true" do
8
+ be_true.should be_an_instance_of(Be)
9
+ end
10
+ it "be_false" do
11
+ be_false.should be_an_instance_of(Be)
12
+ end
13
+ it "be_nil" do
14
+ be_nil.should be_an_instance_of(Be)
15
+ end
16
+ it "be_arbitrary_predicate" do
17
+ be_arbitrary_predicate.should be_an_instance_of(Be)
18
+ end
19
+ it "change" do
20
+ change("target", :message).should be_an_instance_of(Change)
21
+ end
22
+ it "have" do
23
+ have(0).should be_an_instance_of(Have)
24
+ end
25
+ it "have_exactly" do
26
+ have_exactly(0).should be_an_instance_of(Have)
27
+ end
28
+ it "have_at_least" do
29
+ have_at_least(0).should be_an_instance_of(Have)
30
+ end
31
+ it "have_at_most" do
32
+ have_at_most(0).should be_an_instance_of(Have)
33
+ end
34
+ it "include" do
35
+ include(:value).should be_an_instance_of(Include)
36
+ end
37
+ it "raise_error" do
38
+ raise_error.should be_an_instance_of(RaiseError)
39
+ raise_error(NoMethodError).should be_an_instance_of(RaiseError)
40
+ raise_error(NoMethodError, "message").should be_an_instance_of(RaiseError)
41
+ end
42
+ it "satisfy" do
43
+ satisfy{}.should be_an_instance_of(Satisfy)
44
+ end
45
+ it "throw_symbol" do
46
+ throw_symbol.should be_an_instance_of(ThrowSymbol)
47
+ throw_symbol(:sym).should be_an_instance_of(ThrowSymbol)
48
+ end
49
+ it "respond_to" do
50
+ respond_to(:sym).should be_an_instance_of(RespondTo)
51
+ end
52
+ end
53
+
54
+ describe "Micronaut::Matchers#method_missing" do
55
+ it "should convert be_xyz to Be(:be_xyz)" do
56
+ Be.expects(:new).with(:be_whatever)
57
+ be_whatever
58
+ end
59
+
60
+ it "should convert have_xyz to Has(:have_xyz)" do
61
+ self.expects(:has).with(:have_whatever)
62
+ have_whatever
63
+ end
64
+ end
65
+ end
66
+ end
@@ -0,0 +1,189 @@
1
+ require File.expand_path(File.dirname(__FILE__) + "/../../../example_helper")
2
+
3
+ describe "should ==" do
4
+
5
+ it "should delegate message to target" do
6
+ subject = "apple"
7
+ subject.expects(:==).with("apple").returns(true)
8
+ subject.should == "apple"
9
+ end
10
+
11
+ it "should return true on success" do
12
+ subject = "apple"
13
+ (subject.should == "apple").should be_true
14
+ end
15
+
16
+ it "should fail when target.==(actual) returns false" do
17
+ subject = "apple"
18
+ Micronaut::Expectations.expects(:fail_with).with(%[expected: "orange",\n got: "apple" (using ==)], "orange", "apple")
19
+ subject.should == "orange"
20
+ end
21
+
22
+ end
23
+
24
+ describe "should_not ==" do
25
+
26
+ it "should delegate message to target" do
27
+ subject = "orange"
28
+ subject.expects(:==).with("apple").returns(false)
29
+ subject.should_not == "apple"
30
+ end
31
+
32
+ it "should return true on success" do
33
+ subject = "apple"
34
+ (subject.should_not == "orange").should be_true
35
+ end
36
+
37
+ it "should fail when target.==(actual) returns false" do
38
+ subject = "apple"
39
+ Micronaut::Expectations.expects(:fail_with).with(%[expected not: == "apple",\n got: "apple"], "apple", "apple")
40
+ subject.should_not == "apple"
41
+ end
42
+
43
+ end
44
+
45
+ describe "should ===" do
46
+
47
+ it "should delegate message to target" do
48
+ subject = "apple"
49
+ subject.expects(:===).with("apple").returns(true)
50
+ subject.should === "apple"
51
+ end
52
+
53
+ it "should fail when target.===(actual) returns false" do
54
+ subject = "apple"
55
+ subject.expects(:===).with("orange").returns(false)
56
+ Micronaut::Expectations.expects(:fail_with).with(%[expected: "orange",\n got: "apple" (using ===)], "orange", "apple")
57
+ subject.should === "orange"
58
+ end
59
+
60
+ end
61
+
62
+ describe "should_not ===" do
63
+
64
+ it "should delegate message to target" do
65
+ subject = "orange"
66
+ subject.expects(:===).with("apple").returns(false)
67
+ subject.should_not === "apple"
68
+ end
69
+
70
+ it "should fail when target.===(actual) returns false" do
71
+ subject = "apple"
72
+ subject.expects(:===).with("apple").returns(true)
73
+ Micronaut::Expectations.expects(:fail_with).with(%[expected not: === "apple",\n got: "apple"], "apple", "apple")
74
+ subject.should_not === "apple"
75
+ end
76
+
77
+ end
78
+
79
+ describe "should =~" do
80
+
81
+ it "should delegate message to target" do
82
+ subject = "foo"
83
+ subject.expects(:=~).with(/oo/).returns(true)
84
+ subject.should =~ /oo/
85
+ end
86
+
87
+ it "should fail when target.=~(actual) returns false" do
88
+ subject = "fu"
89
+ subject.expects(:=~).with(/oo/).returns(false)
90
+ Micronaut::Expectations.expects(:fail_with).with(%[expected: /oo/,\n got: "fu" (using =~)], /oo/, "fu")
91
+ subject.should =~ /oo/
92
+ end
93
+
94
+ end
95
+
96
+ describe "should_not =~" do
97
+
98
+ it "should delegate message to target" do
99
+ subject = "fu"
100
+ subject.expects(:=~).with(/oo/).returns(false)
101
+ subject.should_not =~ /oo/
102
+ end
103
+
104
+ it "should fail when target.=~(actual) returns false" do
105
+ subject = "foo"
106
+ subject.expects(:=~).with(/oo/).returns(true)
107
+ Micronaut::Expectations.expects(:fail_with).with(%[expected not: =~ /oo/,\n got: "foo"], /oo/, "foo")
108
+ subject.should_not =~ /oo/
109
+ end
110
+
111
+ end
112
+
113
+ describe "should >" do
114
+
115
+ it "should pass if > passes" do
116
+ 4.should > 3
117
+ end
118
+
119
+ it "should fail if > fails" do
120
+ Micronaut::Expectations.expects(:fail_with).with(%[expected: > 5,\n got: 4], 5, 4)
121
+ 4.should > 5
122
+ end
123
+
124
+ end
125
+
126
+ describe "should >=" do
127
+
128
+ it "should pass if >= passes" do
129
+ 4.should > 3
130
+ 4.should >= 4
131
+ end
132
+
133
+ it "should fail if > fails" do
134
+ Micronaut::Expectations.expects(:fail_with).with(%[expected: >= 5,\n got: 4], 5, 4)
135
+ 4.should >= 5
136
+ end
137
+
138
+ end
139
+
140
+ describe "should <" do
141
+
142
+ it "should pass if < passes" do
143
+ 4.should < 5
144
+ end
145
+
146
+ it "should fail if > fails" do
147
+ Micronaut::Expectations.expects(:fail_with).with(%[expected: < 3,\n got: 4], 3, 4)
148
+ 4.should < 3
149
+ end
150
+
151
+ end
152
+
153
+ describe "should <=" do
154
+
155
+ it "should pass if <= passes" do
156
+ 4.should <= 5
157
+ 4.should <= 4
158
+ end
159
+
160
+ it "should fail if > fails" do
161
+ Micronaut::Expectations.expects(:fail_with).with(%[expected: <= 3,\n got: 4], 3, 4)
162
+ 4.should <= 3
163
+ end
164
+
165
+ end
166
+
167
+ describe Micronaut::Matchers::PositiveOperatorMatcher do
168
+
169
+ it "should work when the target has implemented #send" do
170
+ o = Object.new
171
+ def o.send(*args); raise "DOH! Library developers shouldn't use #send!" end
172
+ lambda {
173
+ o.should == o
174
+ }.should_not raise_error
175
+ end
176
+
177
+ end
178
+
179
+ describe Micronaut::Matchers::NegativeOperatorMatcher do
180
+
181
+ it "should work when the target has implemented #send" do
182
+ o = Object.new
183
+ def o.send(*args); raise "DOH! Library developers shouldn't use #send!" end
184
+ lambda {
185
+ o.should_not == :foo
186
+ }.should_not raise_error
187
+ end
188
+
189
+ end
@@ -0,0 +1,346 @@
1
+ require File.expand_path(File.dirname(__FILE__) + "/../../../example_helper")
2
+
3
+ describe "should raise_error" do
4
+
5
+ it "should pass if anything is raised" do
6
+ lambda {raise}.should raise_error
7
+ end
8
+
9
+ it "should fail if nothing is raised" do
10
+ lambda {
11
+ lambda {}.should raise_error
12
+ }.should fail_with("expected Exception but nothing was raised")
13
+ end
14
+
15
+ end
16
+
17
+ describe "should_not raise_error" do
18
+
19
+ it "should pass if nothing is raised" do
20
+ lambda {}.should_not raise_error
21
+ end
22
+
23
+ it "should fail if anything is raised" do
24
+ lambda {
25
+ lambda {raise}.should_not raise_error
26
+ }.should fail_with("expected no Exception, got RuntimeError")
27
+ end
28
+
29
+ end
30
+
31
+ describe "should raise_error(message)" do
32
+
33
+ it "should pass if RuntimeError is raised with the right message" do
34
+ lambda {raise 'blah'}.should raise_error('blah')
35
+ end
36
+
37
+ it "should pass if RuntimeError is raised with a matching message" do
38
+ lambda {raise 'blah'}.should raise_error(/blah/)
39
+ end
40
+
41
+ it "should pass if any other error is raised with the right message" do
42
+ lambda {raise NameError.new('blah')}.should raise_error('blah')
43
+ end
44
+
45
+ it "should fail if RuntimeError error is raised with the wrong message" do
46
+ lambda do
47
+ lambda {raise 'blarg'}.should raise_error('blah')
48
+ end.should fail_with("expected Exception with \"blah\", got #<RuntimeError: blarg>")
49
+ end
50
+
51
+ it "should fail if any other error is raised with the wrong message" do
52
+ lambda do
53
+ lambda {raise NameError.new('blarg')}.should raise_error('blah')
54
+ end.should fail_with("expected Exception with \"blah\", got #<NameError: blarg>")
55
+ end
56
+
57
+ end
58
+
59
+ describe "should_not raise_error(message)" do
60
+
61
+ it "should pass if RuntimeError error is raised with the different message" do
62
+ lambda {raise 'blarg'}.should_not raise_error('blah')
63
+ end
64
+
65
+ it "should pass if any other error is raised with the wrong message" do
66
+ lambda {raise NameError.new('blarg')}.should_not raise_error('blah')
67
+ end
68
+
69
+ it "should fail if RuntimeError is raised with message" do
70
+ lambda do
71
+ lambda {raise 'blah'}.should_not raise_error('blah')
72
+ end.should fail_with(%Q|expected no Exception with "blah", got #<RuntimeError: blah>|)
73
+ end
74
+
75
+ it "should fail if any other error is raised with message" do
76
+ lambda do
77
+ lambda {raise NameError.new('blah')}.should_not raise_error('blah')
78
+ end.should fail_with(%Q|expected no Exception with "blah", got #<NameError: blah>|)
79
+ end
80
+
81
+ end
82
+
83
+ describe "should raise_error(NamedError)" do
84
+
85
+ it "should pass if named error is raised" do
86
+ lambda { non_existent_method }.should raise_error(NameError)
87
+ end
88
+
89
+ it "should fail if nothing is raised" do
90
+ lambda {
91
+ lambda { }.should raise_error(NameError)
92
+ }.should fail_with("expected NameError but nothing was raised")
93
+ end
94
+
95
+ it "should fail if another error is raised (NameError)" do
96
+ lambda {
97
+ lambda { raise }.should raise_error(NameError)
98
+ }.should fail_with("expected NameError, got RuntimeError")
99
+ end
100
+
101
+ it "should fail if another error is raised (NameError)" do
102
+ lambda {
103
+ lambda { load "non/existent/file" }.should raise_error(NameError)
104
+ }.should fail_with(/expected NameError, got #<LoadError/)
105
+ end
106
+
107
+ end
108
+
109
+ describe "should_not raise_error(NamedError)" do
110
+
111
+ it "should pass if nothing is raised" do
112
+ lambda { }.should_not raise_error(NameError)
113
+ end
114
+
115
+ it "should pass if another error is raised" do
116
+ lambda { raise }.should_not raise_error(NameError)
117
+ end
118
+
119
+ it "should fail if named error is raised" do
120
+ lambda {
121
+ lambda { non_existent_method }.should_not raise_error(NameError)
122
+ }.should fail_with(/expected no NameError, got #<NameError: undefined/)
123
+ end
124
+
125
+ end
126
+
127
+ describe "should raise_error(NamedError, error_message) with String" do
128
+
129
+ it "should pass if named error is raised with same message" do
130
+ lambda { raise "example message" }.should raise_error(RuntimeError, "example message")
131
+ end
132
+
133
+ it "should fail if nothing is raised" do
134
+ lambda {
135
+ lambda {}.should raise_error(RuntimeError, "example message")
136
+ }.should fail_with("expected RuntimeError with \"example message\" but nothing was raised")
137
+ end
138
+
139
+ it "should fail if incorrect error is raised" do
140
+ lambda {
141
+ lambda { raise }.should raise_error(NameError, "example message")
142
+ }.should fail_with("expected NameError with \"example message\", got RuntimeError")
143
+ end
144
+
145
+ it "should fail if correct error is raised with incorrect message" do
146
+ lambda {
147
+ lambda { raise RuntimeError.new("not the example message") }.should raise_error(RuntimeError, "example message")
148
+ }.should fail_with(/expected RuntimeError with \"example message\", got #<RuntimeError: not the example message/)
149
+ end
150
+
151
+ end
152
+
153
+ describe "should raise_error(NamedError, error_message) { |err| ... }" do
154
+
155
+ it "should yield exception if named error is raised with same message" do
156
+ ran = false
157
+
158
+ lambda {
159
+ raise "example message"
160
+ }.should raise_error(RuntimeError, "example message") { |err|
161
+ ran = true
162
+ err.class.should == RuntimeError
163
+ err.message.should == "example message"
164
+ }
165
+
166
+ ran.should == true
167
+ end
168
+
169
+ it "yielded block should be able to fail on it's own right" do
170
+ ran, passed = false, false
171
+
172
+ lambda {
173
+ lambda {
174
+ raise "example message"
175
+ }.should raise_error(RuntimeError, "example message") { |err|
176
+ ran = true
177
+ 5.should == 4
178
+ passed = true
179
+ }
180
+ }.should fail_with(/expected: 4/m)
181
+
182
+ ran.should == true
183
+ passed.should == false
184
+ end
185
+
186
+ it "should NOT yield exception if no error was thrown" do
187
+ ran = false
188
+
189
+ lambda {
190
+ lambda {}.should raise_error(RuntimeError, "example message") { |err|
191
+ ran = true
192
+ }
193
+ }.should fail_with("expected RuntimeError with \"example message\" but nothing was raised")
194
+
195
+ ran.should == false
196
+ end
197
+
198
+ it "should not yield exception if error class is not matched" do
199
+ ran = false
200
+
201
+ lambda {
202
+ lambda {
203
+ raise "example message"
204
+ }.should raise_error(SyntaxError, "example message") { |err|
205
+ ran = true
206
+ }
207
+ }.should fail_with("expected SyntaxError with \"example message\", got #<RuntimeError: example message>")
208
+
209
+ ran.should == false
210
+ end
211
+
212
+ it "should NOT yield exception if error message is not matched" do
213
+ ran = false
214
+
215
+ lambda {
216
+ lambda {
217
+ raise "example message"
218
+ }.should raise_error(RuntimeError, "different message") { |err|
219
+ ran = true
220
+ }
221
+ }.should fail_with("expected RuntimeError with \"different message\", got #<RuntimeError: example message>")
222
+
223
+ ran.should == false
224
+ end
225
+
226
+ end
227
+
228
+ describe "should_not raise_error(NamedError, error_message) { |err| ... }" do
229
+
230
+ it "should pass if nothing is raised" do
231
+ ran = false
232
+
233
+ lambda {}.should_not raise_error(RuntimeError, "example message") { |err|
234
+ ran = true
235
+ }
236
+
237
+ ran.should == false
238
+ end
239
+
240
+ it "should pass if a different error is raised" do
241
+ ran = false
242
+
243
+ lambda { raise }.should_not raise_error(NameError, "example message") { |err|
244
+ ran = true
245
+ }
246
+
247
+ ran.should == false
248
+ end
249
+
250
+ it "should pass if same error is raised with different message" do
251
+ ran = false
252
+
253
+ lambda {
254
+ raise RuntimeError.new("not the example message")
255
+ }.should_not raise_error(RuntimeError, "example message") { |err|
256
+ ran = true
257
+ }
258
+
259
+ ran.should == false
260
+ end
261
+
262
+ it "should fail if named error is raised with same message" do
263
+ ran = false
264
+
265
+ lambda {
266
+ lambda {
267
+ raise "example message"
268
+ }.should_not raise_error(RuntimeError, "example message") { |err|
269
+ ran = true
270
+ }
271
+ }.should fail_with("expected no RuntimeError with \"example message\", got #<RuntimeError: example message>")
272
+
273
+ ran.should == false
274
+ end
275
+
276
+ end
277
+
278
+ describe "should_not raise_error(NamedError, error_message) with String" do
279
+
280
+ it "should pass if nothing is raised" do
281
+ lambda {}.should_not raise_error(RuntimeError, "example message")
282
+ end
283
+
284
+ it "should pass if a different error is raised" do
285
+ lambda { raise }.should_not raise_error(NameError, "example message")
286
+ end
287
+
288
+ it "should pass if same error is raised with different message" do
289
+ lambda { raise RuntimeError.new("not the example message") }.should_not raise_error(RuntimeError, "example message")
290
+ end
291
+
292
+ it "should fail if named error is raised with same message" do
293
+ lambda {
294
+ lambda { raise "example message" }.should_not raise_error(RuntimeError, "example message")
295
+ }.should fail_with("expected no RuntimeError with \"example message\", got #<RuntimeError: example message>")
296
+ end
297
+
298
+ end
299
+
300
+ describe "should raise_error(NamedError, error_message) with Regexp" do
301
+
302
+ it "should pass if named error is raised with matching message" do
303
+ lambda { raise "example message" }.should raise_error(RuntimeError, /ample mess/)
304
+ end
305
+
306
+ it "should fail if nothing is raised" do
307
+ lambda {
308
+ lambda {}.should raise_error(RuntimeError, /ample mess/)
309
+ }.should fail_with("expected RuntimeError with message matching /ample mess/ but nothing was raised")
310
+ end
311
+
312
+ it "should fail if incorrect error is raised" do
313
+ lambda {
314
+ lambda { raise }.should raise_error(NameError, /ample mess/)
315
+ }.should fail_with("expected NameError with message matching /ample mess/, got RuntimeError")
316
+ end
317
+
318
+ it "should fail if correct error is raised with incorrect message" do
319
+ lambda {
320
+ lambda { raise RuntimeError.new("not the example message") }.should raise_error(RuntimeError, /less than ample mess/)
321
+ }.should fail_with("expected RuntimeError with message matching /less than ample mess/, got #<RuntimeError: not the example message>")
322
+ end
323
+
324
+ end
325
+
326
+ describe "should_not raise_error(NamedError, error_message) with Regexp" do
327
+
328
+ it "should pass if nothing is raised" do
329
+ lambda {}.should_not raise_error(RuntimeError, /ample mess/)
330
+ end
331
+
332
+ it "should pass if a different error is raised" do
333
+ lambda { raise }.should_not raise_error(NameError, /ample mess/)
334
+ end
335
+
336
+ it "should pass if same error is raised with non-matching message" do
337
+ lambda { raise RuntimeError.new("non matching message") }.should_not raise_error(RuntimeError, /ample mess/)
338
+ end
339
+
340
+ it "should fail if named error is raised with matching message" do
341
+ lambda {
342
+ lambda { raise "example message" }.should_not raise_error(RuntimeError, /ample mess/)
343
+ }.should fail_with("expected no RuntimeError with message matching /ample mess/, got #<RuntimeError: example message>")
344
+ end
345
+
346
+ end
@@ -0,0 +1,54 @@
1
+ require File.expand_path(File.dirname(__FILE__) + "/../../../example_helper")
2
+
3
+ describe "should respond_to(:sym)" do
4
+
5
+ it "should pass if target responds to :sym" do
6
+ Object.new.should respond_to(:methods)
7
+ end
8
+
9
+ it "should fail target does not respond to :sym" do
10
+ lambda {
11
+ "this string".should respond_to(:some_method)
12
+ }.should fail_with("expected \"this string\" to respond to :some_method")
13
+ end
14
+
15
+ end
16
+
17
+ describe "should respond_to(message1, message2)" do
18
+
19
+ it "should pass if target responds to both messages" do
20
+ Object.new.should respond_to('methods', 'inspect')
21
+ end
22
+
23
+ it "should fail target does not respond to first message" do
24
+ lambda {
25
+ Object.new.should respond_to('method_one', 'inspect')
26
+ }.should fail_with(/expected #<Object:.*> to respond to "method_one"/)
27
+ end
28
+
29
+ it "should fail target does not respond to second message" do
30
+ lambda {
31
+ Object.new.should respond_to('inspect', 'method_one')
32
+ }.should fail_with(/expected #<Object:.*> to respond to "method_one"/)
33
+ end
34
+
35
+ it "should fail target does not respond to either message" do
36
+ lambda {
37
+ Object.new.should respond_to('method_one', 'method_two')
38
+ }.should fail_with(/expected #<Object:.*> to respond to "method_one", "method_two"/)
39
+ end
40
+ end
41
+
42
+ describe "should_not respond_to(:sym)" do
43
+
44
+ it "should pass if target does not respond to :sym" do
45
+ Object.new.should_not respond_to(:some_method)
46
+ end
47
+
48
+ it "should fail target responds to :sym" do
49
+ lambda {
50
+ Object.new.should_not respond_to(:methods)
51
+ }.should fail_with(/expected #<Object:.*> not to respond to :methods/)
52
+ end
53
+
54
+ end