minispec 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
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__)