jnunemaker-matchy 0.4.0
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.
- data/History.txt +4 -0
- data/License.txt +20 -0
- data/Manifest.txt +36 -0
- data/PostInstall.txt +7 -0
- data/README.rdoc +162 -0
- data/Rakefile +4 -0
- data/config/hoe.rb +73 -0
- data/config/requirements.rb +15 -0
- data/countloc.rb +67 -0
- data/lib/matchy.rb +19 -0
- data/lib/matchy/built_in/change_expectations.rb +31 -0
- data/lib/matchy/built_in/enumerable_expectations.rb +41 -0
- data/lib/matchy/built_in/error_expectations.rb +66 -0
- data/lib/matchy/built_in/operator_expectations.rb +42 -0
- data/lib/matchy/built_in/truth_expectations.rb +146 -0
- data/lib/matchy/custom_matcher.rb +10 -0
- data/lib/matchy/expectation_builder.rb +9 -0
- data/lib/matchy/matcher_builder.rb +51 -0
- data/lib/matchy/modals.rb +34 -0
- data/lib/matchy/version.rb +9 -0
- data/matchy.gemspec +26 -0
- data/setup.rb +1585 -0
- data/tasks/deployment.rake +34 -0
- data/tasks/environment.rake +7 -0
- data/test/all.rb +7 -0
- data/test/ruby1.9.compatibility_tests.rb +541 -0
- data/test/test_change_expectation.rb +63 -0
- data/test/test_custom_matcher.rb +139 -0
- data/test/test_enumerable_expectations.rb +91 -0
- data/test/test_error_expectations.rb +144 -0
- data/test/test_expectation_builder.rb +28 -0
- data/test/test_helper.rb +1 -0
- data/test/test_matcher_builder.rb +72 -0
- data/test/test_modals.rb +39 -0
- data/test/test_operator_expectations.rb +157 -0
- data/test/test_truth_expectations.rb +373 -0
- metadata +109 -0
@@ -0,0 +1,34 @@
|
|
1
|
+
desc 'Release the website and new gem version'
|
2
|
+
task :deploy => [:check_version, :website, :release] do
|
3
|
+
puts "Remember to create SVN tag:"
|
4
|
+
puts "svn copy svn+ssh://#{rubyforge_username}@rubyforge.org/var/svn/#{PATH}/trunk " +
|
5
|
+
"svn+ssh://#{rubyforge_username}@rubyforge.org/var/svn/#{PATH}/tags/REL-#{VERS} "
|
6
|
+
puts "Suggested comment:"
|
7
|
+
puts "Tagging release #{CHANGES}"
|
8
|
+
end
|
9
|
+
|
10
|
+
desc 'Runs tasks website_generate and install_gem as a local deployment of the gem'
|
11
|
+
task :local_deploy => [:website_generate, :install_gem]
|
12
|
+
|
13
|
+
task :check_version do
|
14
|
+
unless ENV['VERSION']
|
15
|
+
puts 'Must pass a VERSION=x.y.z release version'
|
16
|
+
exit
|
17
|
+
end
|
18
|
+
unless ENV['VERSION'] == VERS
|
19
|
+
puts "Please update your version.rb to match the release version, currently #{VERS}"
|
20
|
+
exit
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
desc 'Install the package as a gem, without generating documentation(ri/rdoc)'
|
25
|
+
task :install_gem_no_doc => [:clean, :package] do
|
26
|
+
sh "#{'sudo ' unless Hoe::WINDOZE }gem install pkg/*.gem --no-rdoc --no-ri"
|
27
|
+
end
|
28
|
+
|
29
|
+
namespace :manifest do
|
30
|
+
desc 'Recreate Manifest.txt to include ALL files'
|
31
|
+
task :refresh do
|
32
|
+
`rake check_manifest | patch -p0 > Manifest.txt`
|
33
|
+
end
|
34
|
+
end
|
data/test/all.rb
ADDED
@@ -0,0 +1,541 @@
|
|
1
|
+
# Eval this file with ruby 1.9
|
2
|
+
|
3
|
+
require 'test/unit'
|
4
|
+
require File.dirname(__FILE__) + '/../lib/matchy.rb'
|
5
|
+
class TestAThing < Test::Unit::TestCase
|
6
|
+
|
7
|
+
def setup
|
8
|
+
@obj = Object.new
|
9
|
+
end
|
10
|
+
|
11
|
+
# ==
|
12
|
+
def test_operator_eql_eql
|
13
|
+
1.should == 1
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_operator_eql_eql_fails
|
17
|
+
lambda {1.should == 2}.should raise_error
|
18
|
+
end
|
19
|
+
|
20
|
+
def test_operator_eql_eql_negative
|
21
|
+
1.should_not == 2
|
22
|
+
end
|
23
|
+
|
24
|
+
def test_operator_eql_eql_negative_fails
|
25
|
+
lambda {1.should_not == 1}.should raise_error
|
26
|
+
end
|
27
|
+
|
28
|
+
# ===
|
29
|
+
def test_operator_eql_eql_eql
|
30
|
+
1.should === 1
|
31
|
+
end
|
32
|
+
|
33
|
+
def test_operator_eql_eql_eql_fails
|
34
|
+
lambda {1.should === 2}.should raise_error
|
35
|
+
end
|
36
|
+
|
37
|
+
def test_operator_eql_eql_eql_negative
|
38
|
+
1.should_not === 2
|
39
|
+
end
|
40
|
+
|
41
|
+
def test_operator_eql_eql_eql_negative_fails
|
42
|
+
lambda {1.should_not === 1}.should raise_error
|
43
|
+
end
|
44
|
+
|
45
|
+
# =~
|
46
|
+
def test_operator_eql_match
|
47
|
+
"string".should =~ /in/
|
48
|
+
end
|
49
|
+
|
50
|
+
def test_operator_eql_match_fails
|
51
|
+
lambda {"string".should =~ /an/}.should raise_error
|
52
|
+
end
|
53
|
+
|
54
|
+
def test_operator_eql_match_negative
|
55
|
+
"string".should_not =~ /an/
|
56
|
+
end
|
57
|
+
|
58
|
+
def test_operator_eql_match_negative_fails
|
59
|
+
lambda {"string".should_not =~ /in/}.should raise_error
|
60
|
+
end
|
61
|
+
|
62
|
+
# <=
|
63
|
+
def test_operator_lt_eql
|
64
|
+
1.should <= 2
|
65
|
+
end
|
66
|
+
|
67
|
+
def test_operator_lt_eql_fails
|
68
|
+
lambda {1.should <= 0}.should raise_error
|
69
|
+
end
|
70
|
+
|
71
|
+
def test_operator_lt_eql_negative
|
72
|
+
1.should_not <= 0
|
73
|
+
end
|
74
|
+
|
75
|
+
def test_operator_lt_eql_negative_fails
|
76
|
+
lambda {1.should_not <= 2}.should raise_error
|
77
|
+
end
|
78
|
+
|
79
|
+
# >=
|
80
|
+
def test_operator_gt_eql
|
81
|
+
1.should >= 0
|
82
|
+
end
|
83
|
+
|
84
|
+
def test_operator_gt_eql_fails
|
85
|
+
lambda {1.should >= 2}.should raise_error
|
86
|
+
end
|
87
|
+
|
88
|
+
def test_operator_gt_eql_negative
|
89
|
+
1.should_not >= 2
|
90
|
+
end
|
91
|
+
|
92
|
+
def test_operator_gt_eql_negative_fails
|
93
|
+
lambda {1.should_not >= 0}.should raise_error
|
94
|
+
end
|
95
|
+
|
96
|
+
# <
|
97
|
+
def test_operator_lt
|
98
|
+
1.should < 2
|
99
|
+
end
|
100
|
+
|
101
|
+
def test_operator_lt_fails
|
102
|
+
lambda {1.should < 0}.should raise_error
|
103
|
+
end
|
104
|
+
|
105
|
+
def test_operator_lt_negative
|
106
|
+
1.should_not < 0
|
107
|
+
end
|
108
|
+
|
109
|
+
def test_operator_lt_negative_fails
|
110
|
+
lambda {1.should_not < 2}.should raise_error
|
111
|
+
end
|
112
|
+
|
113
|
+
# >
|
114
|
+
def test_operator_gt
|
115
|
+
1.should > 0
|
116
|
+
end
|
117
|
+
|
118
|
+
def test_operator_gt_fails
|
119
|
+
lambda {1.should > 2}.should raise_error
|
120
|
+
end
|
121
|
+
|
122
|
+
def test_operator_gt_negative
|
123
|
+
1.should_not > 2
|
124
|
+
end
|
125
|
+
|
126
|
+
def test_operator_gt_negative_fails
|
127
|
+
lambda {1.should_not > 0}.should raise_error
|
128
|
+
end
|
129
|
+
|
130
|
+
# be()
|
131
|
+
def test_be
|
132
|
+
1.should be(1)
|
133
|
+
end
|
134
|
+
|
135
|
+
def test_be_fails
|
136
|
+
lambda {1.should be(2)}.should raise_error
|
137
|
+
end
|
138
|
+
|
139
|
+
def test_be_negative
|
140
|
+
1.should_not be(2)
|
141
|
+
end
|
142
|
+
|
143
|
+
def test_be_negative_fails
|
144
|
+
lambda {1.should_not be(1)}.should raise_error
|
145
|
+
end
|
146
|
+
|
147
|
+
# be_something
|
148
|
+
def test_positive_be_something_method_missing_pass
|
149
|
+
def @obj.something?
|
150
|
+
true
|
151
|
+
end
|
152
|
+
@obj.should be_something
|
153
|
+
end
|
154
|
+
|
155
|
+
def test_positive_be_something_method_missing_fails
|
156
|
+
def @obj.something?
|
157
|
+
false
|
158
|
+
end
|
159
|
+
lambda {@obj.should be_something}.should raise_error(Test::Unit::AssertionFailedError)
|
160
|
+
end
|
161
|
+
|
162
|
+
def test_negative_be_something_method_missing_pass
|
163
|
+
def @obj.something?
|
164
|
+
false
|
165
|
+
end
|
166
|
+
@obj.should_not be_something
|
167
|
+
end
|
168
|
+
|
169
|
+
def test_negative_be_something_method_missing_fails
|
170
|
+
def @obj.something?
|
171
|
+
true
|
172
|
+
end
|
173
|
+
lambda {@obj.should_not be_something}.should raise_error(Test::Unit::AssertionFailedError)
|
174
|
+
end
|
175
|
+
|
176
|
+
def test_be_something_method_missing_fail_message
|
177
|
+
obj = "foo"
|
178
|
+
def obj.something?
|
179
|
+
true
|
180
|
+
end
|
181
|
+
matcher_obj = be_something
|
182
|
+
obj.should matcher_obj
|
183
|
+
|
184
|
+
matcher_obj.failure_message.should be("Expected \"foo\" to return true for something?, with 'no args'.")
|
185
|
+
end
|
186
|
+
|
187
|
+
def test_be_something_method_missing_negative_fail_message
|
188
|
+
obj = "foo"
|
189
|
+
def obj.something?
|
190
|
+
false
|
191
|
+
end
|
192
|
+
matcher_obj = be_something
|
193
|
+
obj.should_not matcher_obj
|
194
|
+
|
195
|
+
matcher_obj.negative_failure_message.should =~ /Expected \"foo\" to not return true for something?/
|
196
|
+
end
|
197
|
+
|
198
|
+
# be_something(arg)
|
199
|
+
def test_positive_be_something_with_arg_method_missing_pass
|
200
|
+
def @obj.something?(arg)
|
201
|
+
true
|
202
|
+
end
|
203
|
+
@obj.should be_something(1)
|
204
|
+
end
|
205
|
+
|
206
|
+
def test_positive_be_something_with_arg_method_missing_fails
|
207
|
+
def @obj.something?(arg)
|
208
|
+
false
|
209
|
+
end
|
210
|
+
lambda {@obj.should be_something(1)}.should raise_error(Test::Unit::AssertionFailedError)
|
211
|
+
end
|
212
|
+
|
213
|
+
def test_negative_be_something_method_missing_pass
|
214
|
+
def @obj.something?(arg)
|
215
|
+
false
|
216
|
+
end
|
217
|
+
@obj.should_not be_something(1)
|
218
|
+
end
|
219
|
+
|
220
|
+
def test_negative_be_something_method_missing_fails
|
221
|
+
def @obj.something?(arg)
|
222
|
+
true
|
223
|
+
end
|
224
|
+
lambda {@obj.should_not be_something(1)}.should raise_error(Test::Unit::AssertionFailedError)
|
225
|
+
end
|
226
|
+
|
227
|
+
def test_be_something_method_missing_fail_message
|
228
|
+
obj = "foo"
|
229
|
+
def obj.something?(arg)
|
230
|
+
true
|
231
|
+
end
|
232
|
+
matcher_obj = be_something(1)
|
233
|
+
obj.should matcher_obj
|
234
|
+
|
235
|
+
matcher_obj.failure_message.should be("Expected \"foo\" to return true for something?, with '1'.")
|
236
|
+
end
|
237
|
+
|
238
|
+
def test_be_something_method_missing_negative_fail_message
|
239
|
+
obj = "foo"
|
240
|
+
def obj.something?(arg)
|
241
|
+
false
|
242
|
+
end
|
243
|
+
matcher_obj = be_something(1)
|
244
|
+
obj.should_not matcher_obj
|
245
|
+
|
246
|
+
matcher_obj.negative_failure_message.should be("Expected \"foo\" to not return true for something?, with '1'.")
|
247
|
+
end
|
248
|
+
|
249
|
+
# change
|
250
|
+
def test_change
|
251
|
+
var = 1
|
252
|
+
lambda {var += 1}.should change {var}
|
253
|
+
end
|
254
|
+
|
255
|
+
def test_change_fails
|
256
|
+
var = 1
|
257
|
+
lambda do
|
258
|
+
lambda { }.should change {var}
|
259
|
+
end.should raise_error
|
260
|
+
end
|
261
|
+
|
262
|
+
def test_change_by
|
263
|
+
var = 1
|
264
|
+
lambda {var += 1}.should change {var}.by(1)
|
265
|
+
end
|
266
|
+
|
267
|
+
def test_change_by_fails
|
268
|
+
var = 1
|
269
|
+
lambda do
|
270
|
+
lambda {var += 2}.should change {var}.by(1)
|
271
|
+
end.should raise_error
|
272
|
+
end
|
273
|
+
|
274
|
+
def test_change_by_at_least
|
275
|
+
var = 1
|
276
|
+
lambda {var += 1}.should change {var}.by_at_least(1)
|
277
|
+
end
|
278
|
+
|
279
|
+
def test_change_by_at_least_fails
|
280
|
+
var = 1
|
281
|
+
lambda do
|
282
|
+
lambda {var += 0.9}.should change {var}.by_at_least(1)
|
283
|
+
end.should raise_error
|
284
|
+
end
|
285
|
+
|
286
|
+
def test_change_by_at_most
|
287
|
+
var = 1
|
288
|
+
lambda {var += 1}.should change {var}.by_at_most(1)
|
289
|
+
end
|
290
|
+
|
291
|
+
def test_change_by_at_most_fails
|
292
|
+
var = 1
|
293
|
+
lambda do
|
294
|
+
lambda {var += 1.1}.should change {var}.by_at_most(1)
|
295
|
+
end.should raise_error
|
296
|
+
end
|
297
|
+
|
298
|
+
def test_change_from_to
|
299
|
+
var = 1
|
300
|
+
lambda {var += 1}.should change {var}.from(1).to(2)
|
301
|
+
end
|
302
|
+
|
303
|
+
def test_change_from_to_fails
|
304
|
+
var = 1
|
305
|
+
lambda do
|
306
|
+
lambda {var += 1.1}.should change {var}.from(1).to(2)
|
307
|
+
end.should raise_error
|
308
|
+
end
|
309
|
+
|
310
|
+
# include/exclude
|
311
|
+
def test_include
|
312
|
+
[1,2,3,4].should include(4)
|
313
|
+
end
|
314
|
+
|
315
|
+
def test_include_fail
|
316
|
+
lambda {
|
317
|
+
[1,2,3,4].should include(6)
|
318
|
+
}.should raise_error(Test::Unit::AssertionFailedError)
|
319
|
+
end
|
320
|
+
|
321
|
+
def test_exclude
|
322
|
+
[1,2,3,4].should exclude(9)
|
323
|
+
end
|
324
|
+
|
325
|
+
def test_exclude_fail
|
326
|
+
lambda {
|
327
|
+
[1,2,3,4].should exclude(4)
|
328
|
+
}.should raise_error(Test::Unit::AssertionFailedError)
|
329
|
+
end
|
330
|
+
|
331
|
+
def test_multi_include
|
332
|
+
[1,2,3,4].should include(1,2)
|
333
|
+
end
|
334
|
+
|
335
|
+
def test_multi_include_fail
|
336
|
+
lambda {
|
337
|
+
[1,2,3,4].should include(6,7,8)
|
338
|
+
}.should raise_error(Test::Unit::AssertionFailedError)
|
339
|
+
end
|
340
|
+
|
341
|
+
def test_multi_exclude
|
342
|
+
[1,2,3,4].should exclude(13,14)
|
343
|
+
end
|
344
|
+
|
345
|
+
def test_multi_exclude_fail
|
346
|
+
lambda {
|
347
|
+
[1,2,3,4].should exclude(2,3,4)
|
348
|
+
}.should raise_error(Test::Unit::AssertionFailedError)
|
349
|
+
end
|
350
|
+
|
351
|
+
def test_negative_include
|
352
|
+
[1,2,3,4].should_not include(9)
|
353
|
+
end
|
354
|
+
|
355
|
+
def test_negative_include_fail
|
356
|
+
lambda {
|
357
|
+
[1,2,3,4].should_not include(4)
|
358
|
+
}.should raise_error(Test::Unit::AssertionFailedError)
|
359
|
+
end
|
360
|
+
|
361
|
+
def test_negative_exclude
|
362
|
+
[1,2,3,4].should_not exclude(3)
|
363
|
+
end
|
364
|
+
|
365
|
+
def test_negative_exclude_fail
|
366
|
+
lambda {
|
367
|
+
[1,2,3,4].should_not exclude(6,7)
|
368
|
+
}.should raise_error(Test::Unit::AssertionFailedError)
|
369
|
+
end
|
370
|
+
|
371
|
+
def test_include_fail_message
|
372
|
+
obj = include(1)
|
373
|
+
obj.matches?([4,5,6])
|
374
|
+
|
375
|
+
obj.failure_message.should be("Expected [4, 5, 6] to include [1].")
|
376
|
+
end
|
377
|
+
|
378
|
+
def test_include_negative_fail_message
|
379
|
+
obj = include(1)
|
380
|
+
obj.matches?([4,5,6])
|
381
|
+
|
382
|
+
obj.negative_failure_message.should be("Expected [4, 5, 6] to not include [1].")
|
383
|
+
end
|
384
|
+
|
385
|
+
def test_exclude_fail_message
|
386
|
+
obj = exclude(4)
|
387
|
+
obj.matches?([4,5,6])
|
388
|
+
|
389
|
+
obj.failure_message.should be("Expected [4, 5, 6] to exclude [4].")
|
390
|
+
end
|
391
|
+
|
392
|
+
def test_exclude_negative_fail_message
|
393
|
+
obj = exclude(4)
|
394
|
+
obj.matches?([4,5,6])
|
395
|
+
|
396
|
+
obj.negative_failure_message.should be("Expected [4, 5, 6] to not exclude [4].")
|
397
|
+
end
|
398
|
+
|
399
|
+
# raise_error
|
400
|
+
def test_raises_error
|
401
|
+
lambda { raise "FAIL" }.should raise_error
|
402
|
+
end
|
403
|
+
|
404
|
+
def test_raises_error_fail
|
405
|
+
lambda {
|
406
|
+
lambda { "WIN" }.should raise_error
|
407
|
+
}.should raise_error(Test::Unit::AssertionFailedError)
|
408
|
+
end
|
409
|
+
|
410
|
+
def test_raise_error_negative_raises_error
|
411
|
+
lambda { "WIN" }.should_not raise_error
|
412
|
+
end
|
413
|
+
|
414
|
+
def test_raise_error_negative_raises_error_fail
|
415
|
+
lambda {
|
416
|
+
lambda { raise "FAIL" }.should_not raise_error
|
417
|
+
}.should raise_error(Test::Unit::AssertionFailedError)
|
418
|
+
end
|
419
|
+
|
420
|
+
def test_raise_error_raises_specific_error
|
421
|
+
lambda { raise TypeError }.should raise_error(TypeError)
|
422
|
+
end
|
423
|
+
|
424
|
+
def test_raise_error_raises_specific_error_fail_with_no_error
|
425
|
+
lambda {
|
426
|
+
lambda { "WIN" }.should raise_error(TypeError)
|
427
|
+
}.should raise_error(Test::Unit::AssertionFailedError)
|
428
|
+
end
|
429
|
+
|
430
|
+
def test_raise_error_raises_specific_error_fail_with_different_error
|
431
|
+
lambda {
|
432
|
+
lambda { raise StandardError }.should raise_error(TypeError)
|
433
|
+
}.should raise_error(Test::Unit::AssertionFailedError)
|
434
|
+
end
|
435
|
+
|
436
|
+
def test_raise_error_error_fail_message
|
437
|
+
obj = raise_error(TypeError)
|
438
|
+
obj.matches?(lambda { raise NameError })
|
439
|
+
|
440
|
+
obj.failure_message.should =~ /Expected #<(.*)> to raise TypeError, but NameError was raised instead./
|
441
|
+
end
|
442
|
+
|
443
|
+
def test_raise_error_error_fail_message_when_no_error
|
444
|
+
obj = raise_error(TypeError)
|
445
|
+
obj.matches?(lambda { "moop" })
|
446
|
+
|
447
|
+
obj.failure_message.should =~ /Expected #<(.*)> to raise TypeError, but none was raised./
|
448
|
+
end
|
449
|
+
|
450
|
+
def test_raise_error_error_negative_fail_message
|
451
|
+
obj = raise_error(TypeError)
|
452
|
+
obj.matches?(lambda { raise TypeError })
|
453
|
+
|
454
|
+
obj.negative_failure_message.should =~ /Expected #<(.*)> to not raise TypeError./
|
455
|
+
end
|
456
|
+
|
457
|
+
def test_raise_error_string_argument_message
|
458
|
+
lambda {raise "message"}.should raise_error("message")
|
459
|
+
end
|
460
|
+
|
461
|
+
def test_string_argument_message_fails_no_error
|
462
|
+
lambda do
|
463
|
+
lambda { 1 }.should raise_error("message")
|
464
|
+
|
465
|
+
end.should raise_error
|
466
|
+
end
|
467
|
+
|
468
|
+
def test_raise_error_string_argument_message_fails_wrong_message
|
469
|
+
lambda do
|
470
|
+
lambda { raise "other message" }.should raise_error("message")
|
471
|
+
end.should raise_error
|
472
|
+
end
|
473
|
+
|
474
|
+
def test_raise_error_regexp_argument_message
|
475
|
+
lambda {raise "message"}.should raise_error(/essa/)
|
476
|
+
end
|
477
|
+
|
478
|
+
def test_raise_error_regexp_argument_message_fails_no_error
|
479
|
+
lambda do
|
480
|
+
lambda { 1 }.should raise_error(/essa/)
|
481
|
+
end.should raise_error
|
482
|
+
end
|
483
|
+
|
484
|
+
def test_raise_error_regexp_argument_message_fails_wrong_message
|
485
|
+
lambda do
|
486
|
+
lambda { raise "other message" }.should raise_error(/abc/)
|
487
|
+
end.should raise_error(/matching/)
|
488
|
+
end
|
489
|
+
|
490
|
+
# throw
|
491
|
+
def test_throws_symbol
|
492
|
+
lambda {
|
493
|
+
throw :win
|
494
|
+
}.should throw_symbol(:win)
|
495
|
+
end
|
496
|
+
|
497
|
+
def test_throws_symbol_fails_with_different_symbol
|
498
|
+
lambda {
|
499
|
+
lambda {
|
500
|
+
throw :fail
|
501
|
+
}.should throw_symbol(:win)
|
502
|
+
}.should raise_error(Test::Unit::AssertionFailedError)
|
503
|
+
end
|
504
|
+
|
505
|
+
def test_negative_throws_symbol
|
506
|
+
lambda {
|
507
|
+
"not this time!"
|
508
|
+
}.should_not throw_symbol(:win)
|
509
|
+
end
|
510
|
+
|
511
|
+
def test_negative_throws_symbol_fails_with_different_symbol
|
512
|
+
|
513
|
+
lambda{
|
514
|
+
lambda {
|
515
|
+
throw :fail
|
516
|
+
}.should_not throw_symbol(:fail)
|
517
|
+
}.should raise_error(Test::Unit::AssertionFailedError)
|
518
|
+
|
519
|
+
end
|
520
|
+
|
521
|
+
def test_throw_fail_message
|
522
|
+
obj = throw_symbol(:fail)
|
523
|
+
obj.matches?(lambda { throw :lame })
|
524
|
+
|
525
|
+
obj.failure_message.should =~ /Expected #<(.*)> to throw :fail, but :lame was thrown instead./
|
526
|
+
end
|
527
|
+
|
528
|
+
def test_throw_fail_message_when_no_symbol
|
529
|
+
obj = throw_symbol(:fail)
|
530
|
+
obj.matches?(lambda { "moop" })
|
531
|
+
|
532
|
+
obj.failure_message.should =~ /Expected #<(.*)> to throw :fail, but no symbol was thrown./
|
533
|
+
end
|
534
|
+
|
535
|
+
def test_throw_negative_fail_message
|
536
|
+
obj = throw_symbol(:fail)
|
537
|
+
obj.matches?(lambda { throw :fail })
|
538
|
+
|
539
|
+
obj.negative_failure_message.should =~ /Expected #<(.*)> to not throw :fail./
|
540
|
+
end
|
541
|
+
end
|