cairo 1.8.5 → 1.10.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of cairo might be problematic. Click here for more details.

Files changed (106) hide show
  1. data/NEWS +2 -2
  2. data/Rakefile +44 -7
  3. data/ext/cairo/cairo.def +28 -1
  4. data/ext/cairo/extconf.rb +14 -16
  5. data/ext/cairo/rb_cairo.c +4 -1
  6. data/ext/cairo/rb_cairo.h +65 -1
  7. data/ext/cairo/rb_cairo_constants.c +150 -3
  8. data/ext/cairo/rb_cairo_context.c +17 -0
  9. data/ext/cairo/rb_cairo_device.c +406 -0
  10. data/ext/cairo/rb_cairo_exception.c +83 -32
  11. data/ext/cairo/rb_cairo_io.c +166 -0
  12. data/ext/cairo/rb_cairo_io.h +44 -0
  13. data/ext/cairo/rb_cairo_matrix.c +1 -1
  14. data/ext/cairo/rb_cairo_private.h +3 -0
  15. data/ext/cairo/rb_cairo_region.c +385 -0
  16. data/ext/cairo/rb_cairo_surface.c +674 -199
  17. data/samples/blur.rb +2 -3
  18. data/samples/{pac2.rb → pac-nomralize.rb} +5 -6
  19. data/samples/pac-tee.rb +170 -0
  20. data/samples/pac.rb +2 -3
  21. data/samples/png.rb +2 -3
  22. data/samples/scalable.rb +2 -3
  23. data/samples/text-on-path.rb +2 -3
  24. data/samples/text2.rb +2 -3
  25. data/test/cairo-test-utils.rb +15 -0
  26. data/test/run-test.rb +5 -4
  27. data/test/test_context.rb +4 -4
  28. data/test/test_font_face.rb +34 -21
  29. data/test/test_recording_surface.rb +18 -0
  30. data/test/test_region.rb +102 -0
  31. data/test/test_script_device.rb +46 -0
  32. data/test/test_script_surface.rb +13 -0
  33. data/test/test_surface.rb +14 -4
  34. data/test/test_tee_surface.rb +32 -0
  35. data/test/test_xml_device.rb +22 -0
  36. data/test/test_xml_surface.rb +32 -0
  37. metadata +49 -77
  38. data/pkg-config.rb +0 -313
  39. data/test-unit/Rakefile +0 -30
  40. data/test-unit/bin/testrb +0 -5
  41. data/test-unit/lib/test/unit.rb +0 -280
  42. data/test-unit/lib/test/unit/assertionfailederror.rb +0 -14
  43. data/test-unit/lib/test/unit/assertions.rb +0 -722
  44. data/test-unit/lib/test/unit/attribute.rb +0 -125
  45. data/test-unit/lib/test/unit/autorunner.rb +0 -254
  46. data/test-unit/lib/test/unit/collector.rb +0 -43
  47. data/test-unit/lib/test/unit/collector/descendant.rb +0 -23
  48. data/test-unit/lib/test/unit/collector/dir.rb +0 -108
  49. data/test-unit/lib/test/unit/collector/load.rb +0 -135
  50. data/test-unit/lib/test/unit/collector/objectspace.rb +0 -34
  51. data/test-unit/lib/test/unit/color.rb +0 -61
  52. data/test-unit/lib/test/unit/diff.rb +0 -524
  53. data/test-unit/lib/test/unit/error.rb +0 -124
  54. data/test-unit/lib/test/unit/exceptionhandler.rb +0 -39
  55. data/test-unit/lib/test/unit/failure.rb +0 -110
  56. data/test-unit/lib/test/unit/fixture.rb +0 -185
  57. data/test-unit/lib/test/unit/notification.rb +0 -125
  58. data/test-unit/lib/test/unit/omission.rb +0 -143
  59. data/test-unit/lib/test/unit/pending.rb +0 -146
  60. data/test-unit/lib/test/unit/priority.rb +0 -146
  61. data/test-unit/lib/test/unit/runner/console.rb +0 -46
  62. data/test-unit/lib/test/unit/runner/emacs.rb +0 -8
  63. data/test-unit/lib/test/unit/testcase.rb +0 -281
  64. data/test-unit/lib/test/unit/testresult.rb +0 -89
  65. data/test-unit/lib/test/unit/testsuite.rb +0 -110
  66. data/test-unit/lib/test/unit/ui/console/outputlevel.rb +0 -14
  67. data/test-unit/lib/test/unit/ui/console/testrunner.rb +0 -195
  68. data/test-unit/lib/test/unit/ui/emacs/testrunner.rb +0 -49
  69. data/test-unit/lib/test/unit/ui/testrunner.rb +0 -20
  70. data/test-unit/lib/test/unit/ui/testrunnermediator.rb +0 -77
  71. data/test-unit/lib/test/unit/ui/testrunnerutilities.rb +0 -41
  72. data/test-unit/lib/test/unit/util/backtracefilter.rb +0 -41
  73. data/test-unit/lib/test/unit/util/observable.rb +0 -90
  74. data/test-unit/lib/test/unit/util/procwrapper.rb +0 -48
  75. data/test-unit/lib/test/unit/version.rb +0 -7
  76. data/test-unit/sample/adder.rb +0 -13
  77. data/test-unit/sample/subtracter.rb +0 -12
  78. data/test-unit/sample/tc_adder.rb +0 -18
  79. data/test-unit/sample/tc_subtracter.rb +0 -18
  80. data/test-unit/sample/ts_examples.rb +0 -7
  81. data/test-unit/test/collector/test_descendant.rb +0 -135
  82. data/test-unit/test/collector/test_dir.rb +0 -406
  83. data/test-unit/test/collector/test_load.rb +0 -333
  84. data/test-unit/test/collector/test_objectspace.rb +0 -98
  85. data/test-unit/test/run-test.rb +0 -13
  86. data/test-unit/test/test_assertions.rb +0 -693
  87. data/test-unit/test/test_attribute.rb +0 -86
  88. data/test-unit/test/test_color.rb +0 -37
  89. data/test-unit/test/test_diff.rb +0 -477
  90. data/test-unit/test/test_emacs_runner.rb +0 -60
  91. data/test-unit/test/test_error.rb +0 -26
  92. data/test-unit/test/test_failure.rb +0 -33
  93. data/test-unit/test/test_fixture.rb +0 -252
  94. data/test-unit/test/test_notification.rb +0 -33
  95. data/test-unit/test/test_omission.rb +0 -81
  96. data/test-unit/test/test_pending.rb +0 -70
  97. data/test-unit/test/test_priority.rb +0 -89
  98. data/test-unit/test/test_testcase.rb +0 -430
  99. data/test-unit/test/test_testresult.rb +0 -113
  100. data/test-unit/test/test_testsuite.rb +0 -129
  101. data/test-unit/test/testunit_test_util.rb +0 -14
  102. data/test-unit/test/ui/test_testrunmediator.rb +0 -20
  103. data/test-unit/test/util/test_backtracefilter.rb +0 -41
  104. data/test-unit/test/util/test_observable.rb +0 -102
  105. data/test-unit/test/util/test_procwrapper.rb +0 -36
  106. data/test/test_pkg_config.rb +0 -123
@@ -1,48 +0,0 @@
1
- #--
2
- #
3
- # Author:: Nathaniel Talbott.
4
- # Copyright:: Copyright (c) 2000-2002 Nathaniel Talbott. All rights reserved.
5
- # License:: Ruby license.
6
-
7
- module Test
8
- module Unit
9
- module Util
10
-
11
- # Allows the storage of a Proc passed through '&' in a
12
- # hash.
13
- #
14
- # Note: this may be inefficient, since the hash being
15
- # used is not necessarily very good. In Observable,
16
- # efficiency is not too important, since the hash is
17
- # only accessed when adding and removing listeners,
18
- # not when notifying.
19
-
20
- class ProcWrapper
21
-
22
- # Creates a new wrapper for a_proc.
23
- def initialize(a_proc)
24
- @a_proc = a_proc
25
- @hash = a_proc.inspect.sub(/^(#<#{a_proc.class}:)/){''}.sub(/(>)$/){''}.hex
26
- end
27
-
28
- def hash
29
- return @hash
30
- end
31
-
32
- def ==(other)
33
- case(other)
34
- when ProcWrapper
35
- return @a_proc == other.to_proc
36
- else
37
- return super
38
- end
39
- end
40
- alias :eql? :==
41
-
42
- def to_proc
43
- return @a_proc
44
- end
45
- end
46
- end
47
- end
48
- end
@@ -1,7 +0,0 @@
1
-
2
- # HACK: quick and dirty to get integrated into the new project - ryan
3
- module Test
4
- module Unit
5
- VERSION = '2.0.1'
6
- end
7
- end
@@ -1,13 +0,0 @@
1
- # Author:: Nathaniel Talbott.
2
- # Copyright:: Copyright (c) 2000-2002 Nathaniel Talbott. All rights reserved.
3
- # License:: Ruby license.
4
-
5
- class Adder
6
- def initialize(number)
7
- @number = number
8
- end
9
- def add(number)
10
- return @number + number
11
- end
12
- end
13
-
@@ -1,12 +0,0 @@
1
- # Author:: Nathaniel Talbott.
2
- # Copyright:: Copyright (c) 2000-2002 Nathaniel Talbott. All rights reserved.
3
- # License:: Ruby license.
4
-
5
- class Subtracter
6
- def initialize(number)
7
- @number = number
8
- end
9
- def subtract(number)
10
- return @number - number
11
- end
12
- end
@@ -1,18 +0,0 @@
1
- # Author:: Nathaniel Talbott.
2
- # Copyright:: Copyright (c) 2000-2002 Nathaniel Talbott. All rights reserved.
3
- # License:: Ruby license.
4
-
5
- require 'test/unit'
6
- require 'adder'
7
-
8
- class TC_Adder < Test::Unit::TestCase
9
- def setup
10
- @adder = Adder.new(5)
11
- end
12
- def test_add
13
- assert_equal(7, @adder.add(2), "Should have added correctly")
14
- end
15
- def teardown
16
- @adder = nil
17
- end
18
- end
@@ -1,18 +0,0 @@
1
- # Author:: Nathaniel Talbott.
2
- # Copyright:: Copyright (c) 2000-2002 Nathaniel Talbott. All rights reserved.
3
- # License:: Ruby license.
4
-
5
- require 'test/unit'
6
- require 'subtracter'
7
-
8
- class TC_Subtracter < Test::Unit::TestCase
9
- def setup
10
- @subtracter = Subtracter.new(5)
11
- end
12
- def test_subtract
13
- assert_equal(3, @subtracter.subtract(2), "Should have subtracted correctly")
14
- end
15
- def teardown
16
- @subtracter = nil
17
- end
18
- end
@@ -1,7 +0,0 @@
1
- # Author:: Nathaniel Talbott.
2
- # Copyright:: Copyright (c) 2000-2002 Nathaniel Talbott. All rights reserved.
3
- # License:: Ruby license.
4
-
5
- require 'test/unit'
6
- require 'tc_adder'
7
- require 'tc_subtracter'
@@ -1,135 +0,0 @@
1
- require 'test/unit'
2
- require 'test/unit/collector/descendant'
3
-
4
- class TestUnitCollectorDescendant < Test::Unit::TestCase
5
- def setup
6
- @previous_descendants = Test::Unit::TestCase::DESCENDANTS.dup
7
- Test::Unit::TestCase::DESCENDANTS.clear
8
-
9
- @test_case1 = Class.new(Test::Unit::TestCase) do
10
- def self.name
11
- "test-case1"
12
- end
13
-
14
- def test_1
15
- end
16
-
17
- def test_2
18
- end
19
- end
20
-
21
- @test_case2 = Class.new(Test::Unit::TestCase) do
22
- def self.name
23
- "test-case2"
24
- end
25
-
26
- def test_0
27
- end
28
- end
29
-
30
- @no_test_case = Class.new do
31
- def self.name
32
- "no-test-case"
33
- end
34
-
35
- def test_4
36
- end
37
- end
38
- end
39
-
40
- def teardown
41
- Test::Unit::TestCase::DESCENDANTS.replace(@previous_descendants)
42
- end
43
-
44
- def test_basic_collection
45
- assert_collect(full_suite("name"), "name")
46
-
47
- assert_collect(full_suite("name"), "name") do |collector|
48
- collector.filter = []
49
- end
50
- end
51
-
52
- def test_filtered_collection
53
- assert_collect(empty_suite) do |collector|
54
- collector.filter = Proc.new {false}
55
- end
56
-
57
- assert_collect(full_suite) do |collector|
58
- collector.filter = Proc.new {true}
59
- end
60
-
61
- assert_collect(full_suite) do |collector|
62
- collector.filter = Proc.new {nil}
63
- end
64
-
65
- assert_collect(empty_suite) do |collector|
66
- collector.filter = [Proc.new {false}, Proc.new {true}]
67
- end
68
-
69
- assert_collect(full_suite) do |collector|
70
- collector.filter = [Proc.new {true}, Proc.new {false}]
71
- end
72
-
73
- assert_collect(empty_suite) do |collector|
74
- collector.filter = [Proc.new {nil}, Proc.new {false}]
75
- end
76
-
77
- assert_collect(full_suite) do |collector|
78
- collector.filter = [Proc.new {nil}, Proc.new {true}]
79
- end
80
-
81
- expected = empty_suite
82
- suite1 = Test::Unit::TestSuite.new(@test_case1.name)
83
- suite1 << @test_case1.new("test_1")
84
- suite2 = Test::Unit::TestSuite.new(@test_case2.name)
85
- suite2 << @test_case2.new("test_0")
86
- expected << suite1 << suite2
87
- assert_collect(expected) do |collector|
88
- collector.filter = Proc.new do |test|
89
- ['test_1', 'test_0'].include?(test.method_name)
90
- end
91
- end
92
-
93
- expected = empty_suite
94
- suite1 = Test::Unit::TestSuite.new(@test_case1.name)
95
- suite1 << @test_case1.new("test_1")
96
- suite2 = Test::Unit::TestSuite.new(@test_case2.name)
97
- suite2 << @test_case2.new("test_0")
98
- expected << suite1 << suite2
99
- assert_collect(expected) do |collector|
100
- filters = [Proc.new {|test| test.method_name == 'test_1' ? true : nil},
101
- Proc.new {|test| test.method_name == 'test_0' ? true : nil},
102
- Proc.new {false}]
103
- collector.filter = filters
104
- end
105
- end
106
-
107
- private
108
- def assert_collect(expected, *collect_args)
109
- collector = Test::Unit::Collector::Descendant.new
110
- yield(collector) if block_given?
111
- assert_equal(expected, collector.send(:collect, *collect_args))
112
- end
113
-
114
- def default_name
115
- Test::Unit::Collector::Descendant::NAME
116
- end
117
-
118
- def empty_suite(name=nil)
119
- Test::Unit::TestSuite.new(name || default_name)
120
- end
121
-
122
- def full_suite(name=nil)
123
- sub_suite1 = Test::Unit::TestSuite.new(@test_case1.name)
124
- sub_suite1 << @test_case1.new('test_1')
125
- sub_suite1 << @test_case1.new('test_2')
126
-
127
- sub_suite2 = Test::Unit::TestSuite.new(@test_case2.name)
128
- sub_suite2 << @test_case2.new('test_0')
129
-
130
- suite = empty_suite(name)
131
- suite << sub_suite1
132
- suite << sub_suite2
133
- suite
134
- end
135
- end
@@ -1,406 +0,0 @@
1
- require 'test/unit'
2
- require 'test/unit/collector/dir'
3
- require 'pp'
4
-
5
- module Test
6
- module Unit
7
- module Collector
8
- class TestDir < TestCase
9
- class FileSystem
10
- class Directory
11
- def initialize(name, fs, parent=self, &block)
12
- @name = name
13
- @fs = fs
14
- @parent = parent
15
- @contents = {'.' => self, '..' => parent}
16
- instance_eval(&block) if(block)
17
- end
18
-
19
- def file(name, contents)
20
- @contents[name] = contents
21
- end
22
-
23
- def dir(name, &block)
24
- @contents[name] = self.class.new(name, @fs, self, &block)
25
- end
26
-
27
- def entries
28
- @contents.keys
29
- end
30
-
31
- def directory?(name)
32
- return true if(name.nil? || name.empty?)
33
- return false unless(@contents.include?(name))
34
- @contents[name].kind_of?(self.class)
35
- end
36
-
37
- def file?(name)
38
- return false unless(@contents.include?(name))
39
- !directory?(name)
40
- end
41
-
42
- def exist?(name)
43
- @contents.include?(name)
44
- end
45
-
46
- def [](name)
47
- raise Errno::ENOENT, name unless(@contents.include?(name))
48
- @contents[name]
49
- end
50
-
51
- def path_to(name=nil)
52
- if(!name)
53
- @parent.path_to(@name)
54
- elsif(@parent == self)
55
- @fs.join('/', name)
56
- else
57
- @fs.join(@parent.path_to(@name), name)
58
- end
59
- end
60
- end
61
-
62
- class ObjectSpace
63
- def initialize
64
- @objects = []
65
- end
66
-
67
- def each_object(klass, &block)
68
- @objects.find_all{|o| o.kind_of?(klass)}.each(&block)
69
- end
70
-
71
- def <<(object)
72
- @objects << object
73
- end
74
- end
75
-
76
- attr_reader :object_space
77
-
78
- def initialize(&block)
79
- @root = Directory.new('/', self, &block)
80
- @pwd = @root
81
- @object_space = ObjectSpace.new
82
- @required = []
83
- end
84
-
85
- def entries(dir)
86
- e = find(dir)
87
- require_directory(dir)
88
- e.entries
89
- end
90
-
91
- def directory?(name)
92
- return true if (base = basename(name)) == '/'
93
- e = find(dirname(name))
94
- return false unless(e)
95
- e.directory?(base)
96
- end
97
-
98
- def find(path)
99
- if(/\A\// =~ path)
100
- thing = @root
101
- else
102
- thing = @pwd
103
- end
104
- path.scan(/[^\/]+/) do |e|
105
- break thing = false unless(thing.kind_of?(Directory))
106
- thing = thing[e]
107
- end
108
- thing
109
- end
110
-
111
- def dirname(name)
112
- if (name = name.tr_s('/', '/')) == '/'
113
- name
114
- else
115
- name[%r"\A.+(?=/[^/]+/?\z)|\A/"] || "."
116
- end
117
- end
118
-
119
- def basename(name)
120
- name[%r"(\A/|[^/]+)/*\z", 1]
121
- end
122
-
123
- def split(name)
124
- [dirname(name), basename(name)]
125
- end
126
-
127
- def join(*parts)
128
- parts.join('/').gsub(%r{/+}, '/')
129
- end
130
-
131
- def file?(name)
132
- e = find(dirname(name))
133
- return false unless(e)
134
- e.file?(basename(name))
135
- end
136
-
137
- def pwd
138
- @pwd.path_to
139
- end
140
-
141
- def chdir(to)
142
- e = find(to)
143
- require_directory(to)
144
- @pwd = e
145
- end
146
-
147
- def expand_path(path, base = nil)
148
- until /\A\// =~ path
149
- base ||= pwd
150
- path = join(base, path)
151
- base = nil
152
- end
153
- path.gsub!(%r"(?:/\.)+(?=/)", '')
154
- nil while path.sub!(%r"/(?!\.\./)[^/]+/\.\.(?=/)", '')
155
- path.sub!(%r"\A(?:/\.\.)+(?=/)", '')
156
- path.sub!(%r"(?:\A(/)|/)\.\.?\z", '\1')
157
- path
158
- end
159
-
160
- def require_directory(path)
161
- raise Errno::ENOTDIR, path unless(directory?(path))
162
- end
163
-
164
- def require(file)
165
- return false if(@required.include?(file))
166
- begin
167
- e = find(file)
168
- rescue Errno::ENOENT => e
169
- if(/\.rb\Z/ =~ file)
170
- raise LoadError, file
171
- end
172
- e = find(file + '.rb')
173
- end
174
- @required << file
175
- @object_space << e
176
- true
177
- rescue Errno::ENOENT
178
- raise LoadError, file
179
- end
180
- end
181
-
182
- def test_dir
183
- inner_dir = nil
184
- dirs = FileSystem::Directory.new('/', nil) do
185
- file 'a', nil
186
- inner_dir = dir 'b'
187
- end
188
- assert_equal(inner_dir, dirs['b'])
189
- end
190
-
191
- def test_fs
192
- fs = FileSystem.new do
193
- file 'a', nil
194
- dir 'b'
195
- end
196
- assert_equal(['.', '..', 'a', 'b'].sort, fs.entries('/').sort)
197
- assert(fs.directory?('/'))
198
- assert(!fs.directory?('/a'))
199
- assert(!fs.directory?('/bogus'))
200
- assert(fs.file?('/a'))
201
- assert(!fs.file?('/'))
202
- assert(!fs.file?('/bogus'))
203
- assert(fs.directory?('/b'))
204
- assert(fs.file?('a'))
205
- assert(fs.directory?('b'))
206
- end
207
-
208
- def test_fs_sub
209
- fs = FileSystem.new do
210
- dir 'a' do
211
- file 'b', nil
212
- dir 'c' do
213
- file 'd', nil
214
- end
215
- end
216
- end
217
- assert(fs.file?('/a/b'))
218
- assert(!fs.file?('/a/b/c/d'))
219
- assert(fs.file?('/a/c/d'))
220
- end
221
-
222
- def test_fs_pwd
223
- fs = FileSystem.new do
224
- file 'a', nil
225
- dir 'b' do
226
- file 'c', nil
227
- dir 'd' do
228
- file 'e', nil
229
- end
230
- end
231
- end
232
- assert_equal('/', fs.pwd)
233
- assert_raises(Errno::ENOENT) do
234
- fs.chdir('bogus')
235
- end
236
- assert_raises(Errno::ENOTDIR) do
237
- fs.chdir('a')
238
- end
239
- fs.chdir('b')
240
- assert_equal('/b', fs.pwd)
241
- fs.chdir('d')
242
- assert_equal('/b/d', fs.pwd)
243
- fs.chdir('..')
244
- assert_equal('/b', fs.pwd)
245
- fs.chdir('..')
246
- assert_equal('/', fs.pwd)
247
- end
248
-
249
- def test_fs_entries
250
- fs = FileSystem.new do
251
- file 'a', nil
252
- dir 'b' do
253
- file 'c', nil
254
- file 'd', nil
255
- end
256
- file 'e', nil
257
- dir 'f' do
258
- file 'g', nil
259
- dir 'h' do
260
- file 'i', nil
261
- end
262
- end
263
- end
264
- assert_equal(['.', '..', 'a', 'b', 'e', 'f'], fs.entries('/').sort)
265
- assert_equal(['.', '..', 'a', 'b', 'e', 'f'], fs.entries('.').sort)
266
- assert_equal(['.', '..', 'a', 'b', 'e', 'f'], fs.entries('b/..').sort)
267
- assert_equal(['.', '..', 'c', 'd'], fs.entries('b').sort)
268
- assert_raises(Errno::ENOENT) do
269
- fs.entries('z')
270
- end
271
- assert_raises(Errno::ENOTDIR) do
272
- fs.entries('a')
273
- end
274
- fs.chdir('f')
275
- assert_equal(['.', '..', 'i'], fs.entries('h').sort)
276
- end
277
-
278
- class TestClass1
279
- end
280
- class TestClass2
281
- end
282
- def test_fs_require
283
- fs = FileSystem.new do
284
- file 'test_class1.rb', TestClass1
285
- dir 'dir' do
286
- file 'test_class2.rb', TestClass2
287
- end
288
- end
289
- c = []
290
- fs.object_space.each_object(Class) do |o|
291
- c << o
292
- end
293
- assert_equal([], c)
294
-
295
- assert_raises(LoadError) do
296
- fs.require('bogus')
297
- end
298
-
299
- assert(fs.require('test_class1.rb'))
300
- assert(!fs.require('test_class1.rb'))
301
- c = []
302
- fs.object_space.each_object(Class) do |o|
303
- c << o
304
- end
305
- assert_equal([TestClass1], c)
306
-
307
- fs.require('dir/test_class2')
308
- c = []
309
- fs.object_space.each_object(Class) do |o|
310
- c << o
311
- end
312
- assert_equal([TestClass1, TestClass2], c)
313
-
314
- c = []
315
- fs.object_space.each_object(Time) do |o|
316
- c << o
317
- end
318
- assert_equal([], c)
319
- end
320
-
321
- def setup
322
- @t1 = t1 = create_test(1)
323
- @t2 = t2 = create_test(2)
324
- @t3 = t3 = create_test(3)
325
- @t4 = t4 = create_test(4)
326
- @t5 = t5 = create_test(5)
327
- @t6 = t6 = create_test(6)
328
- fs = FileSystem.new do
329
- file 'test_1.rb', t1
330
- file 'test_2.rb', t2
331
- dir 'd1' do
332
- file 'test_3.rb', t3
333
- end
334
- file 't4.rb', t4
335
- dir 'd2' do
336
- file 'test_5', t5
337
- file 'test_6.rb', Time
338
- end
339
- file 't6.rb', t6
340
- end
341
- fs.require('t6')
342
- @c = Dir.new(fs, fs, fs.object_space, fs)
343
- end
344
-
345
- def create_test(name)
346
- t = Class.new(TestCase)
347
- t.class_eval <<-EOC
348
- def self.name
349
- "T\#{#{name}}"
350
- end
351
- def test_#{name}a
352
- end
353
- def test_#{name}b
354
- end
355
- EOC
356
- t
357
- end
358
-
359
- def test_simple_collect
360
- expected = TestSuite.new('d1')
361
- expected << (@t3.suite)
362
- assert_equal(expected, @c.collect('d1'))
363
- end
364
-
365
- def test_multilevel_collect
366
- expected = TestSuite.new('.')
367
- expected << @t1.suite << @t2.suite
368
- expected << (TestSuite.new('d1') << @t3.suite)
369
- assert_equal(expected, @c.collect)
370
- end
371
-
372
- def test_collect_file
373
- expected = TestSuite.new('test_1.rb')
374
- expected << @t1.suite
375
- assert_equal(expected, @c.collect('test_1.rb'))
376
-
377
- expected = TestSuite.new('t4.rb')
378
- expected << @t4.suite
379
- assert_equal(expected, @c.collect('t4.rb'))
380
- end
381
-
382
- def test_nil_pattern
383
- expected = TestSuite.new('d2')
384
- expected << @t5.suite
385
- @c.pattern.clear
386
- assert_equal(expected, @c.collect('d2'))
387
- end
388
-
389
- def test_filtering
390
- expected = TestSuite.new('.')
391
- expected << @t1.suite
392
- @c.filter = proc{|t| t.method_name == 'test_1a' || t.method_name == 'test_1b'}
393
- assert_equal(expected, @c.collect)
394
- end
395
-
396
- def test_collect_multi
397
- expected = TestSuite.new('[d1, d2]')
398
- expected << (TestSuite.new('d1') << @t3.suite)
399
- expected << (TestSuite.new('d2') << @t5.suite)
400
- @c.pattern.replace([/\btest_/])
401
- assert_equal(expected, @c.collect('d1', 'd2'))
402
- end
403
- end
404
- end
405
- end
406
- end