test-unit 1.2.3

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 (49) hide show
  1. data/History.txt +5 -0
  2. data/Manifest.txt +48 -0
  3. data/README.txt +27 -0
  4. data/Rakefile +15 -0
  5. data/bin/testrb +5 -0
  6. data/lib/test/unit.rb +280 -0
  7. data/lib/test/unit/assertionfailederror.rb +14 -0
  8. data/lib/test/unit/assertions.rb +622 -0
  9. data/lib/test/unit/autorunner.rb +220 -0
  10. data/lib/test/unit/collector.rb +43 -0
  11. data/lib/test/unit/collector/dir.rb +108 -0
  12. data/lib/test/unit/collector/objectspace.rb +34 -0
  13. data/lib/test/unit/error.rb +56 -0
  14. data/lib/test/unit/failure.rb +51 -0
  15. data/lib/test/unit/testcase.rb +160 -0
  16. data/lib/test/unit/testresult.rb +80 -0
  17. data/lib/test/unit/testsuite.rb +76 -0
  18. data/lib/test/unit/ui/console/testrunner.rb +127 -0
  19. data/lib/test/unit/ui/fox/testrunner.rb +268 -0
  20. data/lib/test/unit/ui/gtk/testrunner.rb +416 -0
  21. data/lib/test/unit/ui/gtk2/testrunner.rb +465 -0
  22. data/lib/test/unit/ui/testrunnermediator.rb +68 -0
  23. data/lib/test/unit/ui/testrunnerutilities.rb +46 -0
  24. data/lib/test/unit/ui/tk/testrunner.rb +260 -0
  25. data/lib/test/unit/util/backtracefilter.rb +40 -0
  26. data/lib/test/unit/util/observable.rb +90 -0
  27. data/lib/test/unit/util/procwrapper.rb +48 -0
  28. data/lib/test/unit/version.rb +7 -0
  29. data/sample/adder.rb +13 -0
  30. data/sample/subtracter.rb +12 -0
  31. data/sample/tc_adder.rb +18 -0
  32. data/sample/tc_subtracter.rb +18 -0
  33. data/sample/ts_examples.rb +7 -0
  34. data/test/collector/test_dir.rb +406 -0
  35. data/test/collector/test_objectspace.rb +98 -0
  36. data/test/runit/test_assert.rb +402 -0
  37. data/test/runit/test_testcase.rb +91 -0
  38. data/test/runit/test_testresult.rb +144 -0
  39. data/test/runit/test_testsuite.rb +49 -0
  40. data/test/test_assertions.rb +528 -0
  41. data/test/test_error.rb +26 -0
  42. data/test/test_failure.rb +33 -0
  43. data/test/test_testcase.rb +275 -0
  44. data/test/test_testresult.rb +104 -0
  45. data/test/test_testsuite.rb +129 -0
  46. data/test/util/test_backtracefilter.rb +41 -0
  47. data/test/util/test_observable.rb +102 -0
  48. data/test/util/test_procwrapper.rb +36 -0
  49. metadata +128 -0
@@ -0,0 +1,98 @@
1
+ # Author:: Nathaniel Talbott.
2
+ # Copyright:: Copyright (c) 2000-2003 Nathaniel Talbott. All rights reserved.
3
+ # License:: Ruby license.
4
+
5
+ require 'test/unit'
6
+ require 'test/unit/collector/objectspace'
7
+
8
+ module Test
9
+ module Unit
10
+ module Collector
11
+ class TC_ObjectSpace < TestCase
12
+ def setup
13
+ @tc1 = Class.new(TestCase) do
14
+ def self.name
15
+ "tc_1"
16
+ end
17
+ def test_1
18
+ end
19
+ def test_2
20
+ end
21
+ end
22
+
23
+ @tc2 = Class.new(TestCase) do
24
+ def self.name
25
+ "tc_2"
26
+ end
27
+ def test_0
28
+ end
29
+ end
30
+
31
+ @no_tc = Class.new do
32
+ def test_4
33
+ end
34
+ end
35
+
36
+ @object_space = {Class => [@tc1, @tc2, @no_tc], String => ['']}
37
+ def @object_space.each_object(type)
38
+ self[type].each{|item| yield(item) }
39
+ end
40
+
41
+ @c = ObjectSpace.new(@object_space)
42
+ end
43
+
44
+ def full_suite(name=ObjectSpace::NAME)
45
+ expected = TestSuite.new(name)
46
+ expected << (TestSuite.new(@tc1.name) << @tc1.new('test_1') << @tc1.new('test_2'))
47
+ expected << (TestSuite.new(@tc2.name) << @tc2.new('test_0'))
48
+ end
49
+
50
+ def empty_suite
51
+ TestSuite.new(ObjectSpace::NAME)
52
+ end
53
+
54
+ def test_basic_collection
55
+ assert_equal(full_suite("name"), @c.collect("name"))
56
+
57
+ @c.filter = []
58
+ assert_equal(full_suite("name"), @c.collect("name"))
59
+ end
60
+
61
+ def test_filtered_collection
62
+ @c.filter = proc{false}
63
+ assert_equal(empty_suite, @c.collect)
64
+
65
+ @c.filter = proc{true}
66
+ assert_equal(full_suite, @c.collect)
67
+
68
+ @c.filter = proc{nil}
69
+ assert_equal(full_suite, @c.collect)
70
+
71
+ @c.filter = [proc{false}, proc{true}]
72
+ assert_equal(empty_suite, @c.collect)
73
+
74
+ @c.filter = [proc{true}, proc{false}]
75
+ assert_equal(full_suite, @c.collect)
76
+
77
+ @c.filter = [proc{nil}, proc{false}]
78
+ assert_equal(empty_suite, @c.collect)
79
+
80
+ @c.filter = [proc{nil}, proc{true}]
81
+ assert_equal(full_suite, @c.collect)
82
+
83
+ expected = TestSuite.new(ObjectSpace::NAME)
84
+ expected << (TestSuite.new(@tc1.name) << @tc1.new('test_1'))
85
+ expected << (TestSuite.new(@tc2.name) << @tc2.new('test_0'))
86
+ @c.filter = proc{|test| ['test_1', 'test_0'].include?(test.method_name)}
87
+ assert_equal(expected, @c.collect)
88
+
89
+ expected = TestSuite.new(ObjectSpace::NAME)
90
+ expected << (TestSuite.new(@tc1.name) << @tc1.new('test_1'))
91
+ expected << (TestSuite.new(@tc2.name) << @tc2.new('test_0'))
92
+ @c.filter = [proc{|t| t.method_name == 'test_1' ? true : nil}, proc{|t| t.method_name == 'test_0' ? true : nil}, proc{false}]
93
+ assert_equal(expected, @c.collect)
94
+ end
95
+ end
96
+ end
97
+ end
98
+ end
@@ -0,0 +1,402 @@
1
+ # Author:: Masaki Suketa.
2
+ # Adapted by:: Nathaniel Talbott.
3
+ # Copyright:: Copyright (c) Masaki Suketa. All rights reserved.
4
+ # Copyright:: Copyright (c) 2002 Nathaniel Talbott. All rights reserved.
5
+ # License:: Ruby license.
6
+
7
+ require 'rubyunit'
8
+
9
+ module RUNIT
10
+ class TargetAssert
11
+ include RUNIT::Assert
12
+ end
13
+
14
+ class TestAssert < RUNIT::TestCase
15
+ def setup
16
+ @assert = TargetAssert.new
17
+ @e = nil
18
+ end
19
+
20
+ def test_assert
21
+ sub_test_assert_pass(true)
22
+ sub_test_assert_pass(TRUE)
23
+ sub_test_assert_failure(false)
24
+ sub_test_assert_failure(FALSE)
25
+ sub_test_assert_failure(nil)
26
+ sub_test_assert_pass("")
27
+ sub_test_assert_pass("ok")
28
+ sub_test_assert_pass(0)
29
+ sub_test_assert_pass(1)
30
+ end
31
+
32
+ def test_assert_with_2_argument
33
+ assert_no_exception {
34
+ assert(true, "3")
35
+ }
36
+ assert_no_exception {
37
+ assert(true)
38
+ }
39
+ end
40
+
41
+ def test_assert_equal_float_0_1
42
+ assert_proc = Proc.new {
43
+ @assert.assert_equal_float(1.4, 1.35, 0.1)
44
+ }
45
+ sub_assert_pass(assert_proc)
46
+ end
47
+
48
+ def test_assert_equal_float_0_5
49
+ assert_proc = Proc.new {
50
+ @assert.assert_equal_float(1.4, 1.34, 0.5)
51
+ }
52
+ sub_assert_pass(assert_proc)
53
+ end
54
+
55
+ def test_assert_equal_float_0
56
+ assert_proc = Proc.new {
57
+ @assert.assert_equal_float(1.4, 1.4, 0)
58
+ }
59
+ sub_assert_pass(assert_proc)
60
+ end
61
+
62
+ def test_assert_equal_float_0_raise
63
+ assert_proc = Proc.new {
64
+ @assert.assert_equal_float(1.4, 1.34, 0)
65
+ }
66
+ sub_assert_raise_fail(assert_proc)
67
+ end
68
+
69
+ def test_assert_equal_float_0_01
70
+ assert_proc = Proc.new {
71
+ @assert.assert_equal_float(1.4, 1.35, 0.01)
72
+ }
73
+ sub_assert_raise_fail(assert_proc)
74
+ end
75
+
76
+ def test_assert_equal_float_0_001
77
+ assert_proc = Proc.new {
78
+ @assert.assert_equal_float(Math.sqrt(2), 1.414, 0.001)
79
+ }
80
+ sub_assert_pass(assert_proc)
81
+ end
82
+
83
+ def test_assert_equal_float_minus_1_0
84
+ assert_proc = Proc.new {
85
+ @assert.assert_equal_float(1.4, 1.35, -1.0)
86
+ }
87
+ sub_assert_raise_fail(assert_proc)
88
+ end
89
+
90
+ def test_assert_fail
91
+ except = nil
92
+ begin
93
+ @assert.assert_fail("failure")
94
+ rescue Exception
95
+ except = $!
96
+ end
97
+ assert_not_nil(except)
98
+ end
99
+
100
+ def sub_test_assert_pass(obj)
101
+ assert_proc = Proc.new {
102
+ @assert.assert(obj)
103
+ }
104
+ sub_assert_pass(assert_proc)
105
+ end
106
+
107
+ def sub_test_assert_failure(obj)
108
+ assert_proc = Proc.new {
109
+ @assert.assert(obj)
110
+ }
111
+ sub_assert_raise_fail(assert_proc)
112
+ end
113
+
114
+ def test_assert_equal
115
+ assert_proc = Proc.new {
116
+ @assert.assert_equal(2, 2)
117
+ }
118
+ sub_assert_pass(assert_proc)
119
+ assert_proc = Proc.new {
120
+ @assert.assert_equal(2, 3)
121
+ }
122
+ sub_assert_raise_fail(assert_proc)
123
+ end
124
+
125
+ def test_assert_nil
126
+ obj = nil
127
+ assert_proc = Proc.new {
128
+ @assert.assert_nil(obj)
129
+ }
130
+ sub_assert_pass(assert_proc)
131
+ obj = 'string'
132
+ sub_assert_raise_fail(assert_proc)
133
+ end
134
+
135
+ def test_assert_not_nil
136
+ obj = 'string'
137
+ assert_proc = Proc.new {
138
+ @assert.assert_not_nil(obj)
139
+ }
140
+ sub_assert_pass(assert_proc)
141
+
142
+ obj = nil
143
+ sub_assert_raise_fail(assert_proc)
144
+ end
145
+
146
+ def test_assert_operator
147
+ assert_proc = Proc.new {
148
+ @assert.assert_operator(2, :<, 3)
149
+ }
150
+ sub_assert_pass(assert_proc)
151
+ assert_proc = Proc.new {
152
+ @assert.assert_operator(2, :>, 3)
153
+ }
154
+ sub_assert_raise_fail(assert_proc)
155
+ end
156
+
157
+ def test_assert_respond_to
158
+ sub_test_assert_respond_to('string', 'sub', 'foo')
159
+ sub_test_assert_respond_to('string', :sub, :foo)
160
+ end
161
+
162
+ def sub_test_assert_respond_to(obj, msg, dummy_msg)
163
+ assert_proc = Proc.new {
164
+ @assert.assert_respond_to(msg, obj)
165
+ }
166
+ sub_assert_pass(assert_proc)
167
+ assert_proc = Proc.new {
168
+ @assert.assert_respond_to(dummy_msg, obj)
169
+ }
170
+ sub_assert_raise_fail(assert_proc)
171
+ end
172
+
173
+ def test_assert_send
174
+ assert_proc = Proc.new {
175
+ ary = []
176
+ @assert.assert_send ary, :empty?
177
+ }
178
+ sub_assert_pass(assert_proc)
179
+ assert_proc = Proc.new {
180
+ ary = [2,3]
181
+ @assert.assert_send ary, :empty?
182
+ }
183
+ sub_assert_raise_fail(assert_proc)
184
+ assert_proc = Proc.new {
185
+ str = "abc"
186
+ @assert.assert_send str, :sub!, "z", "y"
187
+ }
188
+ sub_assert_raise_fail(assert_proc)
189
+ end
190
+
191
+ def test_assert_kind_of
192
+ assert_proc = Proc.new {
193
+ @assert.assert_kind_of(String, "string")
194
+ }
195
+ sub_assert_pass(assert_proc)
196
+ assert_proc = Proc.new {
197
+ @assert.assert_kind_of(Regexp, "string")
198
+ }
199
+ sub_assert_raise_fail(assert_proc)
200
+ end
201
+
202
+ def test_assert_instance_of
203
+ assert_proc = Proc.new {
204
+ @assert.assert_instance_of(String, "string")
205
+ }
206
+ sub_assert_pass(assert_proc)
207
+ assert_proc = Proc.new {
208
+ @assert.assert_instance_of(Object, "string")
209
+ }
210
+ sub_assert_raise_fail(assert_proc)
211
+ end
212
+
213
+ def test_assert_match
214
+ assert_proc = Proc.new{
215
+ @assert.assert_match('foostring', /foo/)
216
+ }
217
+ sub_assert_pass(assert_proc)
218
+ assert_proc = Proc.new {
219
+ @assert.assert_match('barstring', /foo/)
220
+ }
221
+ sub_assert_raise_fail(assert_proc)
222
+ match = @assert.assert_match('foostring', /foo/)
223
+ assert_instance_of(MatchData, match)
224
+ assert_equal('foo', match[0])
225
+ end
226
+
227
+ def test_assert_matches
228
+ assert_proc = Proc.new{
229
+ @assert.assert_matches('foostring', /foo/)
230
+ }
231
+ sub_assert_pass(assert_proc)
232
+ assert_proc = Proc.new {
233
+ @assert.assert_matches('barstring', /foo/)
234
+ }
235
+ sub_assert_raise_fail(assert_proc)
236
+ end
237
+
238
+ def test_assert_not_match
239
+ assert_proc = Proc.new{
240
+ @assert.assert_not_match('barstring', /foo/)
241
+ }
242
+ sub_assert_pass(assert_proc)
243
+ assert_proc = Proc.new {
244
+ @assert.assert_not_match('foostring', /foo/)
245
+ }
246
+ sub_assert_raise_fail(assert_proc)
247
+ assert_proc = Proc.new {
248
+ @assert.assert_not_match('foobarbaz', /ba.+/)
249
+ }
250
+ sub_assert_raise_fail(assert_proc)
251
+ end
252
+
253
+ def test_assert_same
254
+ flag = false
255
+ e = "foo"
256
+ a = e
257
+ assert_proc = Proc.new {@assert.assert_same(e, a)}
258
+ sub_assert_pass(assert_proc)
259
+
260
+ a = "foo"
261
+ sub_assert_raise_fail(assert_proc)
262
+ end
263
+
264
+ def test_assert_exception
265
+ assert_proc = Proc.new{
266
+ @assert.assert_exception(IOError) {
267
+ raise IOError
268
+ }
269
+ }
270
+ sub_assert_pass(assert_proc)
271
+
272
+ assert_proc = Proc.new{
273
+ @assert.assert_exception(StandardError) {
274
+ raise IOError
275
+ }
276
+ }
277
+ sub_assert_raise_fail(assert_proc)
278
+
279
+ assert_proc = Proc.new{
280
+ @assert.assert_exception(IOError, "Exception") {
281
+ raise StandardError
282
+ }
283
+ }
284
+ sub_assert_raise_fail(assert_proc)
285
+
286
+ assert_proc = Proc.new {
287
+ @assert.assert_exception(StandardError) {
288
+ "No Exception raised in this block"
289
+ }
290
+ }
291
+ sub_assert_raise_fail(assert_proc)
292
+
293
+ assert_proc = Proc.new {
294
+ @assert.assert_exception(StandardError) {
295
+ exit(33)
296
+ }
297
+ }
298
+ sub_assert_raise_fail(assert_proc)
299
+
300
+ t = @assert.assert_exception(IOError) {
301
+ raise IOError
302
+ }
303
+ assert_instance_of(IOError, t)
304
+ t = @assert.assert_exception(NameError) {
305
+ non_existent_method
306
+ }
307
+ assert_instance_of(NameError, t)
308
+ t = @assert.assert_exception(SystemExit) {
309
+ exit(33)
310
+ }
311
+ assert_instance_of(SystemExit, t)
312
+ end
313
+
314
+ def test_assert_no_exception
315
+ assert_proc = Proc.new{
316
+ @assert.assert_no_exception(IOError, ArgumentError) {
317
+ "No Exception raised in this block"
318
+ }
319
+ }
320
+ sub_assert_pass(assert_proc)
321
+
322
+ assert_proc = Proc.new{
323
+ @assert.assert_no_exception(IOError, ArgumentError) {
324
+ raise StandardError, "Standard Error raised"
325
+ }
326
+ }
327
+ sub_assert_raise_error(assert_proc)
328
+
329
+ assert_proc = Proc.new{
330
+ @assert.assert_no_exception(IOError, ArgumentError) {
331
+ raise ArgumentError, "Bad Argument"
332
+ }
333
+ }
334
+ sub_assert_raise_fail(assert_proc)
335
+
336
+ assert_proc = Proc.new{
337
+ @assert.assert_no_exception {
338
+ raise ArgumentError, "Bad Argument"
339
+ }
340
+ }
341
+ sub_assert_raise_fail(assert_proc)
342
+
343
+ assert_proc = Proc.new{
344
+ @assert.assert_no_exception {
345
+ raise NameError, "Bad Name"
346
+ }
347
+ }
348
+ sub_assert_raise_fail(assert_proc)
349
+ assert_proc = Proc.new {
350
+ @assert.assert_no_exception {
351
+ raise NoMemoryError
352
+ }
353
+ }
354
+ sub_assert_raise_fail(assert_proc)
355
+ end
356
+
357
+ def sub_assert_pass(p)
358
+ flag = false
359
+ err = nil
360
+ begin
361
+ p.call
362
+ flag = true
363
+ rescue
364
+ err = $!
365
+ flag = false
366
+ end
367
+ assert(flag, err.to_s)
368
+ end
369
+
370
+ def sub_assert_raise_fail(p)
371
+ flag = false
372
+ err = nil
373
+ begin
374
+ p.call
375
+ flag = false
376
+ rescue RUNIT::AssertionFailedError
377
+ flag = true
378
+ err = $!
379
+ rescue Exception
380
+ flag = false
381
+ err = $!
382
+ end
383
+ assert(flag, err.to_s)
384
+ end
385
+
386
+ def sub_assert_raise_error(p)
387
+ flag = false
388
+ err = nil
389
+ begin
390
+ p.call
391
+ flag = false
392
+ rescue RUNIT::AssertionFailedError
393
+ flag = false
394
+ err = $!
395
+ rescue Exception
396
+ flag = true
397
+ err = $!
398
+ end
399
+ assert(flag, err.to_s)
400
+ end
401
+ end
402
+ end