minispec 0.0.1

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 (83) hide show
  1. checksums.yaml +7 -0
  2. data/.pryrc +2 -0
  3. data/Gemfile +4 -0
  4. data/LICENSE +22 -0
  5. data/README.md +2140 -0
  6. data/Rakefile +11 -0
  7. data/bin/minispec +4 -0
  8. data/lib/minispec.rb +175 -0
  9. data/lib/minispec/api.rb +2 -0
  10. data/lib/minispec/api/class.rb +195 -0
  11. data/lib/minispec/api/class/after.rb +49 -0
  12. data/lib/minispec/api/class/around.rb +54 -0
  13. data/lib/minispec/api/class/before.rb +101 -0
  14. data/lib/minispec/api/class/helpers.rb +116 -0
  15. data/lib/minispec/api/class/let.rb +44 -0
  16. data/lib/minispec/api/class/tests.rb +33 -0
  17. data/lib/minispec/api/instance.rb +158 -0
  18. data/lib/minispec/api/instance/mocks/doubles.rb +36 -0
  19. data/lib/minispec/api/instance/mocks/mocks.rb +319 -0
  20. data/lib/minispec/api/instance/mocks/spies.rb +17 -0
  21. data/lib/minispec/api/instance/mocks/stubs.rb +105 -0
  22. data/lib/minispec/helpers.rb +1 -0
  23. data/lib/minispec/helpers/array.rb +56 -0
  24. data/lib/minispec/helpers/booleans.rb +108 -0
  25. data/lib/minispec/helpers/generic.rb +24 -0
  26. data/lib/minispec/helpers/mocks/expectations.rb +29 -0
  27. data/lib/minispec/helpers/mocks/spies.rb +36 -0
  28. data/lib/minispec/helpers/raise.rb +44 -0
  29. data/lib/minispec/helpers/throw.rb +29 -0
  30. data/lib/minispec/mocks.rb +11 -0
  31. data/lib/minispec/mocks/expectations.rb +77 -0
  32. data/lib/minispec/mocks/stubs.rb +178 -0
  33. data/lib/minispec/mocks/validations.rb +80 -0
  34. data/lib/minispec/mocks/validations/amount.rb +63 -0
  35. data/lib/minispec/mocks/validations/arguments.rb +161 -0
  36. data/lib/minispec/mocks/validations/caller.rb +43 -0
  37. data/lib/minispec/mocks/validations/order.rb +47 -0
  38. data/lib/minispec/mocks/validations/raise.rb +111 -0
  39. data/lib/minispec/mocks/validations/return.rb +74 -0
  40. data/lib/minispec/mocks/validations/throw.rb +91 -0
  41. data/lib/minispec/mocks/validations/yield.rb +141 -0
  42. data/lib/minispec/proxy.rb +201 -0
  43. data/lib/minispec/reporter.rb +185 -0
  44. data/lib/minispec/utils.rb +139 -0
  45. data/lib/minispec/utils/differ.rb +325 -0
  46. data/lib/minispec/utils/pretty_print.rb +51 -0
  47. data/lib/minispec/utils/raise.rb +123 -0
  48. data/lib/minispec/utils/throw.rb +140 -0
  49. data/minispec.gemspec +27 -0
  50. data/test/mocks/expectations/amount.rb +67 -0
  51. data/test/mocks/expectations/arguments.rb +126 -0
  52. data/test/mocks/expectations/caller.rb +55 -0
  53. data/test/mocks/expectations/generic.rb +35 -0
  54. data/test/mocks/expectations/order.rb +46 -0
  55. data/test/mocks/expectations/raise.rb +166 -0
  56. data/test/mocks/expectations/return.rb +71 -0
  57. data/test/mocks/expectations/throw.rb +113 -0
  58. data/test/mocks/expectations/yield.rb +109 -0
  59. data/test/mocks/spies/amount.rb +68 -0
  60. data/test/mocks/spies/arguments.rb +57 -0
  61. data/test/mocks/spies/generic.rb +61 -0
  62. data/test/mocks/spies/order.rb +38 -0
  63. data/test/mocks/spies/raise.rb +158 -0
  64. data/test/mocks/spies/return.rb +71 -0
  65. data/test/mocks/spies/throw.rb +113 -0
  66. data/test/mocks/spies/yield.rb +101 -0
  67. data/test/mocks/test__doubles.rb +98 -0
  68. data/test/mocks/test__expectations.rb +27 -0
  69. data/test/mocks/test__mocks.rb +197 -0
  70. data/test/mocks/test__proxies.rb +61 -0
  71. data/test/mocks/test__spies.rb +43 -0
  72. data/test/mocks/test__stubs.rb +427 -0
  73. data/test/proxified_asserts.rb +34 -0
  74. data/test/setup.rb +53 -0
  75. data/test/test__around.rb +58 -0
  76. data/test/test__assert.rb +510 -0
  77. data/test/test__before_and_after.rb +117 -0
  78. data/test/test__before_and_after_all.rb +71 -0
  79. data/test/test__helpers.rb +197 -0
  80. data/test/test__raise.rb +104 -0
  81. data/test/test__skip.rb +41 -0
  82. data/test/test__throw.rb +103 -0
  83. metadata +196 -0
@@ -0,0 +1,34 @@
1
+ class MinispecTest
2
+ class ProxifiedAsserts < self
3
+ include MinispecTest::Asserts::Mixin
4
+
5
+ unit = Unit.new
6
+ unit.__ms__prepare_test
7
+ proxied_methods = [
8
+ [STRING, [:==, :===, :eql?, :equal?, :empty?, :!=, :=~, :<=, :include?, :start_with?, :frozen?]],
9
+ [TAINTED_STRING, [:tainted?]],
10
+ [UNTRUSTED_STRING, [:untrusted?]],
11
+ [ARRAY, [:!=, :any?, :all?, :empty?, :instance_of?, :respond_to?, :include?, :frozen?, :kind_of?]],
12
+ [HASH, [:any?, :all?, :is_a?, :empty?, :respond_to?]],
13
+ [NIL, [:nil?]]
14
+ ]
15
+
16
+ proxied_methods.each do |(object, methods)|
17
+ methods.each do |method|
18
+ unit.proxy(object, method)
19
+
20
+ test = 'test_ %s#%s received through proxy' % [object.inspect, method]
21
+ define_method test do
22
+ messages = Messages.select do |m|
23
+ m[:object] == object && m[:method] == method
24
+ end
25
+ assert_operator messages.size, :>, 0
26
+ end
27
+ end
28
+ end
29
+
30
+ result = msrun(Unit)
31
+ Status = result.status
32
+ Messages = unit.__ms__mocks__messages_copy
33
+ end
34
+ end
@@ -0,0 +1,53 @@
1
+ require 'minitest/autorun'
2
+ require 'minispec'
3
+
4
+ class Reporter < MiniSpec::Reporter
5
+ attr_reader :status
6
+
7
+ def initialize(*)
8
+ super
9
+ @status = {}
10
+ end
11
+
12
+ def mark_as_passed spec, test
13
+ super
14
+ @status[test] = 0
15
+ end
16
+
17
+ def mark_as_skipped spec, test, source
18
+ super
19
+ @status[test] = -1
20
+ end
21
+
22
+ def mark_as_failed spec, test, verb, proc, failures
23
+ super
24
+ @status[test] = 1
25
+ end
26
+ end
27
+
28
+ class SilentReporter < Reporter
29
+ def puts(*); end
30
+ alias print puts
31
+ end
32
+
33
+ def msrun spec, verbose = false
34
+ reporter = verbose ? Reporter.new : SilentReporter.new
35
+ spec.run(reporter)
36
+ reporter.summary if verbose
37
+ reporter
38
+ end
39
+
40
+ class MinispecTest < Minitest::Test
41
+ def self.define_tests unit
42
+ result = msrun(unit)
43
+ unit.tests.each_pair do |test,(_,proc)|
44
+ status = test =~ /:fail/ ? 1 : 0
45
+ define_method 'test_ %s: %s' % [unit, test] do
46
+ assert_equal(status, result.status[test], proc.source_location)
47
+ end
48
+ end
49
+ end
50
+
51
+ class Expectations < self
52
+ end
53
+ end
@@ -0,0 +1,58 @@
1
+ class MinispecTest
2
+ class Around < self
3
+
4
+ X, Y = [], []
5
+ class A
6
+ include Minispec
7
+
8
+ around do |test|
9
+ X.clear
10
+ X << 1
11
+ test.call
12
+ X << 2
13
+ end
14
+
15
+ test :around do
16
+ X << :A
17
+ end
18
+ end
19
+
20
+ def test_around
21
+ msrun(A)
22
+ assert_equal [1, :A, 2], X
23
+ end
24
+
25
+ module C
26
+ include Minispec
27
+
28
+ around /a/ do |test|
29
+ X.clear
30
+ test.call
31
+ X << :a
32
+ end
33
+ end
34
+
35
+ class D
36
+ include C
37
+
38
+ test(:a) {}
39
+ test(:b) {}
40
+ end
41
+
42
+ def test_around_runs_only_on_matching_tests
43
+ msrun(D)
44
+ assert_equal [:a], X
45
+ end
46
+
47
+ class F < A
48
+ around {raise}
49
+ around {X.clear}
50
+ test(:around) {}
51
+ end
52
+
53
+ def test_only_last_around_run
54
+ msrun(F)
55
+ assert_equal [], X
56
+ end
57
+ end
58
+ end
@@ -0,0 +1,510 @@
1
+ # encoding: UTF-8
2
+
3
+ class MinispecTest
4
+ class Asserts < self
5
+ module Mixin
6
+ STRING = 'abc'
7
+ TAINTED_STRING = 'tainted'.taint
8
+ UNTRUSTED_STRING = 'untrusted'.untrust
9
+ ARRAY = [1, '2', 'three']
10
+ HASH = {foo: :bar}
11
+ INTEGER = 2.freeze # on jruby integers are not frozen
12
+ FLOAT = 2.0
13
+ NIL = nil
14
+
15
+ class Unit
16
+ include Minispec
17
+ continue_on_failures true
18
+ end
19
+
20
+ Unit.test :== do
21
+ is(STRING) == %[abc]
22
+ assert(INTEGER) == FLOAT
23
+ end
24
+ def test_equality
25
+ assert STRING == 'abc'
26
+ assert INTEGER == FLOAT
27
+ assert passed(:==)
28
+ end
29
+ Unit.test ':== generates a failure' do
30
+ is(STRING) == 'a'
31
+ end
32
+ def test_failure_of_equality
33
+ assert failed(:==)
34
+ end
35
+
36
+
37
+ Unit.test :=== do
38
+ check(STRING) === 'ABC'.downcase
39
+ prove(String) === STRING
40
+ check(Array) === ARRAY
41
+ assume(Hash) === HASH
42
+ end
43
+ def test_case_equality
44
+ assert STRING === 'ABC'.downcase
45
+ assert String === STRING
46
+ assert Array === ARRAY
47
+ assert Hash === HASH
48
+ assert passed(:===)
49
+ end
50
+ Unit.test ':=== generates a failure' do
51
+ check(STRING) === 'ABC'
52
+ end
53
+ def test_failure_of_case_equality
54
+ assert failed(:===)
55
+ end
56
+
57
+
58
+ Unit.test :eql? do
59
+ is(STRING).eql? 'cba'.reverse
60
+ refute(INTEGER).eql? FLOAT
61
+ end
62
+ def test_eql?
63
+ assert STRING.eql?('cba'.reverse)
64
+ refute INTEGER.eql?(FLOAT)
65
+ assert passed(:eql?)
66
+ end
67
+ Unit.test ':eql? generates a failure' do
68
+ is(STRING).eql? 'cba'
69
+ end
70
+ def test_failure_of_eql?
71
+ assert failed(:eql?)
72
+ end
73
+
74
+
75
+ Unit.test :equal? do
76
+ is(STRING).equal? STRING
77
+ refute('a').equal? 'a'
78
+ end
79
+ def test_equal?
80
+ assert STRING.equal?(STRING)
81
+ refute 'a'.equal?('a')
82
+ assert passed(:equal?)
83
+ end
84
+ Unit.test ':equal? generates a failure' do
85
+ is(STRING).equal? 'abc'
86
+ end
87
+ def test_failure_of_equal?
88
+ assert failed(:equal?)
89
+ end
90
+
91
+
92
+ Unit.test :empty? do
93
+ refute(STRING).empty?
94
+ refute(ARRAY).empty?
95
+ refute(HASH).empty?
96
+ is([]).empty?
97
+ is({}).empty?
98
+ end
99
+ def test_empty?
100
+ refute STRING.empty?
101
+ refute ARRAY.empty?
102
+ refute HASH.empty?
103
+ assert [].empty?
104
+ assert({}.empty?)
105
+ assert passed(:empty?)
106
+ end
107
+ Unit.test ':empty? generates a failure' do
108
+ is(STRING).empty?
109
+ end
110
+ def test_failure_of_empty?
111
+ assert failed(:empty?)
112
+ end
113
+
114
+
115
+ Unit.test :=~ do
116
+ assume(STRING) =~ /a/
117
+ end
118
+ def test_tilde_match
119
+ assert(STRING =~ /a/)
120
+ assert passed(:=~)
121
+ end
122
+ Unit.test ':=~ generates a failure' do
123
+ assume(STRING) =~ /z/
124
+ end
125
+ def test_failure_of_tilde_match
126
+ assert failed(:=~)
127
+ end
128
+
129
+
130
+ Unit.test :match do
131
+ expect(STRING).match /b/
132
+ end
133
+ def test_match
134
+ assert STRING.match(/b/)
135
+ assert passed(:match)
136
+ end
137
+ Unit.test ':match generates a failure' do
138
+ expect(STRING).match /bar/
139
+ end
140
+ def test_failure_of_match
141
+ assert failed(:match)
142
+ end
143
+
144
+
145
+ Unit.test :include? do
146
+ does(STRING).include? 'c'
147
+ does(ARRAY).include? 1
148
+ end
149
+ def test_include?
150
+ assert STRING.include?('c')
151
+ assert ARRAY.include?(1)
152
+ assert passed(:include?)
153
+ end
154
+ Unit.test ':include? generates a failure' do
155
+ does(STRING).include? 'z'
156
+ end
157
+ def test_failure_of_include?
158
+ assert failed(:include?)
159
+ end
160
+
161
+
162
+ Unit.test :any? do
163
+ are(ARRAY).any? {|x| x.to_i > 1}
164
+ has(HASH).any? {|k,v| k == :foo}
165
+ end
166
+ def test_any?
167
+ assert ARRAY.any? {|x| x.to_i > 1}
168
+ assert HASH.any? {|k,v| k == :foo}
169
+ assert passed(:any?)
170
+ end
171
+ Unit.test ':any? generates a failure' do
172
+ has(HASH).any? {|k,v| k == :baz}
173
+ end
174
+ def test_failure_of_any?
175
+ assert failed(:any?)
176
+ end
177
+
178
+ Unit.test :all? do
179
+ expect(ARRAY).all? {|v| v.to_i > -1}
180
+ verify(HASH).all? {|k,v| v}
181
+ end
182
+ def test_all?
183
+ assert ARRAY.all? {|v| v.to_i > -1}
184
+ assert HASH.all? {|k,v| v}
185
+ assert passed(:all?)
186
+ end
187
+ Unit.test ':all? generates a failure' do
188
+ verify(HASH).all? {|k,v| v == :blah}
189
+ end
190
+ def test_failure_of_all?
191
+ assert failed(:all?)
192
+ end
193
+
194
+
195
+ Unit.test :start_with? do
196
+ does(STRING).start_with? 'a'
197
+ end
198
+ def test_start_with?
199
+ assert STRING.start_with?('a')
200
+ assert passed(:start_with?)
201
+ end
202
+ Unit.test ':start_with? generates a failure' do
203
+ does(STRING).start_with? 'blah'
204
+ end
205
+ def test_failure_of_start_with?
206
+ assert failed(:start_with?)
207
+ end
208
+
209
+ Unit.test :end_with? do
210
+ does(STRING).end_with? 'c'
211
+ end
212
+ def test_end_with?
213
+ assert STRING.end_with?('c')
214
+ assert passed(:end_with?)
215
+ end
216
+ Unit.test ':end_with? generates a failure' do
217
+ does(STRING).end_with? 'doh'
218
+ end
219
+ def test_failure_of_end_with?
220
+ assert failed(:end_with?)
221
+ end
222
+
223
+ Unit.test :valid_encoding? do
224
+ has(STRING).valid_encoding?
225
+ end
226
+ def test_valid_encoding?
227
+ assert STRING.valid_encoding?
228
+ assert passed(:valid_encoding?)
229
+ end
230
+ Unit.test ':valid_encoding? generates a failure' do
231
+ refute(STRING).valid_encoding?
232
+ end
233
+ def test_failure_of_valid_encoding?
234
+ assert failed(:valid_encoding?)
235
+ end
236
+
237
+ Unit.test :ascii_only? do
238
+ is(STRING).ascii_only?
239
+ end
240
+ def test_ascii_only?
241
+ assert STRING.ascii_only?
242
+ assert passed(:ascii_only?)
243
+ end
244
+ Unit.test ':ascii_only? generates a failure' do
245
+ is('ё').ascii_only?
246
+ end
247
+ def test_failure_of_ascii_only?
248
+ assert failed(:ascii_only?)
249
+ end
250
+
251
+ Unit.test :> do
252
+ is(FLOAT) > 0
253
+ is('b') > 'a'
254
+ end
255
+ def test_bt
256
+ assert(FLOAT > 0)
257
+ assert('b' > 'a')
258
+ assert passed(:>)
259
+ end
260
+ Unit.test ':> generates a failure' do
261
+ is('a') > 'b'
262
+ end
263
+ def test_failure_of_bt
264
+ assert failed(:>)
265
+ end
266
+
267
+ Unit.test :>= do
268
+ is(INTEGER) >= FLOAT
269
+ is(STRING) >= 'ab'
270
+ end
271
+ def test_bte
272
+ assert(INTEGER >= FLOAT)
273
+ assert(STRING >= 'ab')
274
+ assert passed(:>=)
275
+ end
276
+ Unit.test ':>= generates a failure' do
277
+ is(STRING) >= 'xyz'
278
+ end
279
+ def test_failure_of_bte
280
+ assert failed(:>=)
281
+ end
282
+
283
+ Unit.test :< do
284
+ is(0) < INTEGER
285
+ is('a') < 'b'
286
+ end
287
+ def test_lt
288
+ assert(0 < INTEGER)
289
+ assert('a' < 'b')
290
+ assert passed(:<)
291
+ end
292
+ Unit.test ':< generates a failure' do
293
+ is('b') < 'a'
294
+ end
295
+ def test_failure_of_lt
296
+ assert failed(:<)
297
+ end
298
+
299
+ Unit.test :<= do
300
+ is(FLOAT) <= INTEGER
301
+ is(STRING) <= 'abcd'
302
+ end
303
+ def test_lte
304
+ assert(FLOAT <= INTEGER)
305
+ assert(STRING <= 'abcd')
306
+ assert passed(:<=)
307
+ end
308
+ Unit.test ':<= generates a failure' do
309
+ is(STRING) <= '0'
310
+ end
311
+ def test_failure_of_lte
312
+ assert failed(:<=)
313
+ end
314
+
315
+ Unit.test :between? do
316
+ is(FLOAT).between? FLOAT, INTEGER
317
+ is('b').between? 'a', 'c'
318
+ end
319
+ def test_between?
320
+ assert(FLOAT.between? FLOAT, INTEGER)
321
+ assert('b'.between? 'a', 'c')
322
+ assert passed(:between?)
323
+ end
324
+ Unit.test ':between? generates a failure' do
325
+ is('b').between? 'x', 'y'
326
+ end
327
+ def test_failure_of_between?
328
+ assert failed(:between?)
329
+ end
330
+
331
+ Unit.test :nil? do
332
+ is(NIL).nil?
333
+ refute(STRING).nil?
334
+ end
335
+ def test_nil?
336
+ assert(NIL.nil?)
337
+ refute STRING.nil?
338
+ assert passed(:nil?)
339
+ end
340
+ Unit.test ':nil? generates a failure' do
341
+ is(STRING).nil?
342
+ end
343
+ def test_failure_of_nil?
344
+ assert failed(:nil?)
345
+ end
346
+
347
+ Unit.test :!~ do
348
+ prove(STRING) !~ /z/
349
+ end
350
+ def test_not_match
351
+ assert(STRING !~ /z/)
352
+ assert passed(:!~)
353
+ end
354
+ Unit.test ':!~ generates a failure' do
355
+ prove(STRING) !~ /a/
356
+ end
357
+ def test_failure_of_not_match
358
+ assert failed(:!~)
359
+ end
360
+
361
+ Unit.test :tainted? do
362
+ is(TAINTED_STRING).tainted?
363
+ refute(STRING).tainted?
364
+ end
365
+ def test_tainted?
366
+ assert TAINTED_STRING.tainted?
367
+ refute STRING.tainted?
368
+ assert passed(:tainted?)
369
+ end
370
+ Unit.test ':tainted? generates a failure' do
371
+ is(STRING).tainted?
372
+ end
373
+ def test_failure_of_tainted?
374
+ assert failed(:tainted?)
375
+ end
376
+
377
+ Unit.test :untrusted? do
378
+ is(UNTRUSTED_STRING).untrusted?
379
+ refute(STRING).untrusted?
380
+ end
381
+ def test_untrusted?
382
+ assert UNTRUSTED_STRING.untrusted?
383
+ refute STRING.untrusted?
384
+ assert passed(:untrusted?)
385
+ end
386
+ Unit.test ':untrusted? generates a failure' do
387
+ is(STRING).untrusted?
388
+ end
389
+ def test_failure_of_untrusted?
390
+ assert failed(:untrusted?)
391
+ end
392
+
393
+ Unit.test :frozen? do
394
+ refute(STRING).frozen?
395
+ is('smth'.freeze).frozen?
396
+ negate(ARRAY).frozen?
397
+ is(INTEGER).frozen?
398
+ end
399
+ def test_frozen?
400
+ refute STRING.frozen?
401
+ assert 'smth'.freeze.frozen?
402
+ refute ARRAY.frozen?
403
+ assert INTEGER.frozen?
404
+ assert passed(:frozen?)
405
+ end
406
+ Unit.test ':frozen? generates a failure' do
407
+ is(STRING).frozen?
408
+ end
409
+ def test_failure_of_frozen?
410
+ assert failed(:frozen?)
411
+ end
412
+
413
+ Unit.test :instance_of? do
414
+ check(STRING).instance_of? String
415
+ negate(ARRAY).instance_of? Enumerable
416
+ end
417
+ def test_instance_of?
418
+ assert STRING.instance_of?(String)
419
+ refute ARRAY.instance_of?(Enumerable)
420
+ assert passed(:instance_of?)
421
+ end
422
+ Unit.test ':instance_of? generates a failure' do
423
+ check(STRING).instance_of? Array
424
+ end
425
+ def test_failure_of_instance_of?
426
+ assert failed(:instance_of?)
427
+ end
428
+
429
+ Unit.test :kind_of? do
430
+ is(STRING).kind_of? String
431
+ is(ARRAY).kind_of? Enumerable
432
+ end
433
+ def test_kind_of?
434
+ assert STRING.kind_of?(String)
435
+ assert ARRAY.kind_of?(Enumerable)
436
+ assert passed(:kind_of?)
437
+ end
438
+ Unit.test ':kind_of? generates a failure' do
439
+ is(STRING).kind_of? Hash
440
+ end
441
+ def test_failure_of_kind_of?
442
+ assert failed(:kind_of?)
443
+ end
444
+
445
+ Unit.test :is_a? do
446
+ check(STRING).is_a? String
447
+ assert(HASH).is_a? Hash
448
+ end
449
+ def test_is_a?
450
+ assert STRING.is_a?(String)
451
+ assert HASH.is_a?(Hash)
452
+ assert passed(:is_a?)
453
+ end
454
+ Unit.test ':is_a? generates a failure' do
455
+ check(STRING).is_a? Symbol
456
+ end
457
+ def test_failure_of_is_a?
458
+ assert failed(:is_a?)
459
+ end
460
+
461
+ Unit.test :respond_to? do
462
+ does(STRING).respond_to? :ascii_only?
463
+ does(ARRAY).respond_to? :any?
464
+ does(HASH).respond_to? :any?
465
+ end
466
+ def test_respond_to?
467
+ assert STRING.respond_to?(:ascii_only?)
468
+ assert(ARRAY).respond_to?(:any?)
469
+ assert(HASH).respond_to?(:any?)
470
+ assert passed(:respond_to?)
471
+ end
472
+ Unit.test ':respond_to? generates a failure' do
473
+ does(STRING).respond_to? :blah
474
+ end
475
+ def test_failure_of_respond_to?
476
+ assert failed(:respond_to?)
477
+ end
478
+
479
+ Unit.test :!= do
480
+ check(STRING) != 'blah'
481
+ negate(ARRAY) != ARRAY
482
+ end
483
+ def test_not_equal
484
+ assert(STRING != 'blah')
485
+ refute(ARRAY != ARRAY)
486
+ assert passed(:!=)
487
+ end
488
+ Unit.test ':!= generates a failure' do
489
+ check(STRING) != STRING
490
+ end
491
+ def test_failure_of_not_equal
492
+ assert failed(:!=)
493
+ end
494
+
495
+ def passed test
496
+ self.class::Status[test] == 0
497
+ end
498
+ def failed test
499
+ self.class::Status[':%s generates a failure' % test] == 1
500
+ end
501
+ end
502
+ include Mixin
503
+
504
+ result = msrun(Unit)
505
+ Status = result.status
506
+ end
507
+ end
508
+
509
+ # running same tests but this time with proxified objects
510
+ require File.expand_path('../proxified_asserts', __FILE__)