lash-sprites 0.3.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.
- data/.gitignore +2 -0
- data/Gemfile +4 -0
- data/LICENSE +165 -0
- data/README +38 -0
- data/Rakefile +38 -0
- data/examples/css/css.rb +17 -0
- data/examples/css/css_cli.rb +29 -0
- data/examples/example_imgs/1.png +0 -0
- data/examples/example_imgs/10.png +0 -0
- data/examples/example_imgs/11.png +0 -0
- data/examples/example_imgs/12.png +0 -0
- data/examples/example_imgs/13.png +0 -0
- data/examples/example_imgs/14.png +0 -0
- data/examples/example_imgs/15.png +0 -0
- data/examples/example_imgs/16.png +0 -0
- data/examples/example_imgs/17.png +0 -0
- data/examples/example_imgs/18.png +0 -0
- data/examples/example_imgs/19.png +0 -0
- data/examples/example_imgs/2.png +0 -0
- data/examples/example_imgs/20.png +0 -0
- data/examples/example_imgs/21.png +0 -0
- data/examples/example_imgs/22.png +0 -0
- data/examples/example_imgs/23.png +0 -0
- data/examples/example_imgs/24.png +0 -0
- data/examples/example_imgs/25.png +0 -0
- data/examples/example_imgs/26.png +0 -0
- data/examples/example_imgs/27.png +0 -0
- data/examples/example_imgs/28.png +0 -0
- data/examples/example_imgs/29.png +0 -0
- data/examples/example_imgs/3.png +0 -0
- data/examples/example_imgs/30.png +0 -0
- data/examples/example_imgs/31.png +0 -0
- data/examples/example_imgs/32.png +0 -0
- data/examples/example_imgs/33.png +0 -0
- data/examples/example_imgs/34.png +0 -0
- data/examples/example_imgs/35.png +0 -0
- data/examples/example_imgs/36.png +0 -0
- data/examples/example_imgs/37.png +0 -0
- data/examples/example_imgs/38.png +0 -0
- data/examples/example_imgs/39.png +0 -0
- data/examples/example_imgs/4.png +0 -0
- data/examples/example_imgs/40.png +0 -0
- data/examples/example_imgs/41.png +0 -0
- data/examples/example_imgs/42.png +0 -0
- data/examples/example_imgs/43.png +0 -0
- data/examples/example_imgs/44.png +0 -0
- data/examples/example_imgs/45.png +0 -0
- data/examples/example_imgs/46.png +0 -0
- data/examples/example_imgs/47.png +0 -0
- data/examples/example_imgs/48.png +0 -0
- data/examples/example_imgs/49.png +0 -0
- data/examples/example_imgs/5.png +0 -0
- data/examples/example_imgs/50.png +0 -0
- data/examples/example_imgs/51.png +0 -0
- data/examples/example_imgs/52.png +0 -0
- data/examples/example_imgs/53.png +0 -0
- data/examples/example_imgs/54.png +0 -0
- data/examples/example_imgs/55.png +0 -0
- data/examples/example_imgs/56.png +0 -0
- data/examples/example_imgs/57.png +0 -0
- data/examples/example_imgs/58.png +0 -0
- data/examples/example_imgs/59.png +0 -0
- data/examples/example_imgs/6.png +0 -0
- data/examples/example_imgs/60.png +0 -0
- data/examples/example_imgs/7.png +0 -0
- data/examples/example_imgs/8.png +0 -0
- data/examples/example_imgs/9.png +0 -0
- data/examples/packing/packing.rb +19 -0
- data/lash-sprites.gemspec +21 -0
- data/lib/.DS_Store +0 -0
- data/lib/lash-sprites/.DS_Store +0 -0
- data/lib/lash-sprites/block.rb +34 -0
- data/lib/lash-sprites/css.rb +27 -0
- data/lib/lash-sprites/graphics_manager/gd2.rb +43 -0
- data/lib/lash-sprites/graphics_manager/graphics_manager.rb +22 -0
- data/lib/lash-sprites/graphics_manager/rmagick.rb +45 -0
- data/lib/lash-sprites/image.rb +46 -0
- data/lib/lash-sprites/packer/both_smart.rb +90 -0
- data/lib/lash-sprites/packer/both_split.rb +171 -0
- data/lib/lash-sprites/packer/even.rb +78 -0
- data/lib/lash-sprites/packer/horizontal_smart.rb +72 -0
- data/lib/lash-sprites/packer/horizontal_split.rb +156 -0
- data/lib/lash-sprites/packer/horizontal_stack.rb +22 -0
- data/lib/lash-sprites/packer/ratio.rb +94 -0
- data/lib/lash-sprites/packer/vertical_smart.rb +72 -0
- data/lib/lash-sprites/packer/vertical_split.rb +164 -0
- data/lib/lash-sprites/packer/vertical_stack.rb +23 -0
- data/lib/lash-sprites/sprite.rb +272 -0
- data/lib/lash-sprites/version.rb +5 -0
- data/test/b_graphics.rb +37 -0
- data/test/b_packers.rb +53 -0
- data/test/imgs/1.png +0 -0
- data/test/imgs/10.png +0 -0
- data/test/imgs/11.png +0 -0
- data/test/imgs/12.png +0 -0
- data/test/imgs/13.png +0 -0
- data/test/imgs/14.png +0 -0
- data/test/imgs/15.png +0 -0
- data/test/imgs/16.png +0 -0
- data/test/imgs/17.png +0 -0
- data/test/imgs/18.png +0 -0
- data/test/imgs/19.png +0 -0
- data/test/imgs/2.png +0 -0
- data/test/imgs/20.png +0 -0
- data/test/imgs/21.png +0 -0
- data/test/imgs/22.png +0 -0
- data/test/imgs/23.png +0 -0
- data/test/imgs/24.png +0 -0
- data/test/imgs/25.png +0 -0
- data/test/imgs/26.png +0 -0
- data/test/imgs/27.png +0 -0
- data/test/imgs/28.png +0 -0
- data/test/imgs/29.png +0 -0
- data/test/imgs/3.png +0 -0
- data/test/imgs/30.png +0 -0
- data/test/imgs/31.png +0 -0
- data/test/imgs/32.png +0 -0
- data/test/imgs/33.png +0 -0
- data/test/imgs/34.png +0 -0
- data/test/imgs/35.png +0 -0
- data/test/imgs/36.png +0 -0
- data/test/imgs/37.png +0 -0
- data/test/imgs/38.png +0 -0
- data/test/imgs/39.png +0 -0
- data/test/imgs/4.png +0 -0
- data/test/imgs/40.png +0 -0
- data/test/imgs/41.png +0 -0
- data/test/imgs/42.png +0 -0
- data/test/imgs/43.png +0 -0
- data/test/imgs/44.png +0 -0
- data/test/imgs/45.png +0 -0
- data/test/imgs/46.png +0 -0
- data/test/imgs/47.png +0 -0
- data/test/imgs/48.png +0 -0
- data/test/imgs/49.png +0 -0
- data/test/imgs/5.png +0 -0
- data/test/imgs/50.png +0 -0
- data/test/imgs/51.png +0 -0
- data/test/imgs/52.png +0 -0
- data/test/imgs/53.png +0 -0
- data/test/imgs/54.png +0 -0
- data/test/imgs/55.png +0 -0
- data/test/imgs/56.png +0 -0
- data/test/imgs/57.png +0 -0
- data/test/imgs/58.png +0 -0
- data/test/imgs/59.png +0 -0
- data/test/imgs/6.png +0 -0
- data/test/imgs/60.png +0 -0
- data/test/imgs/7.png +0 -0
- data/test/imgs/8.png +0 -0
- data/test/imgs/9.png +0 -0
- data/test/t_gd2.rb +28 -0
- data/test/t_generic.rb +183 -0
- data/test/t_rmagick.rb +29 -0
- metadata +269 -0
data/test/b_packers.rb
ADDED
@@ -0,0 +1,53 @@
|
|
1
|
+
#!/usr/bin/ruby
|
2
|
+
|
3
|
+
test_dir = File.dirname(__FILE__)
|
4
|
+
|
5
|
+
$:.unshift File.join(test_dir, '../lib')
|
6
|
+
|
7
|
+
require 'ruby_sprites/sprite'
|
8
|
+
require 'benchmark'
|
9
|
+
|
10
|
+
n = 50
|
11
|
+
puts "#{n} Iterations"
|
12
|
+
|
13
|
+
file_data = []
|
14
|
+
|
15
|
+
Benchmark.bmbm(17) do |r|
|
16
|
+
Dir.entries(File.join(test_dir, '../lib/ruby_sprites/packer')).sort.each do |f|
|
17
|
+
next unless f.match(/\.rb$/)
|
18
|
+
|
19
|
+
class_name = f.gsub('.rb', '').capitalize.gsub(/_([a-z]+)/) {|x| $1.capitalize}
|
20
|
+
file_name = f.gsub('.rb', '')
|
21
|
+
|
22
|
+
require "ruby_sprites/packer/#{file_name}"
|
23
|
+
|
24
|
+
sprite = RubySprites::Sprite.new("#{class_name}.png", test_dir, {:force_update => true, :pack_type => file_name})
|
25
|
+
|
26
|
+
(1..60).each do |x|
|
27
|
+
sprite.add_image("imgs/#{x}.png")
|
28
|
+
end
|
29
|
+
|
30
|
+
sprite.update
|
31
|
+
|
32
|
+
file_data.push [class_name, sprite.width, sprite.height, File.size(File.join(test_dir, "#{class_name}.png"))]
|
33
|
+
|
34
|
+
r.report(class_name) {
|
35
|
+
n.times {
|
36
|
+
sprite = RubySprites::Sprite.new("#{class_name}.png", test_dir, {:force_update => true, :write_files => false, :pack_type => file_name})
|
37
|
+
(1..60).each do |x|
|
38
|
+
sprite.add_image("imgs/#{x}.png")
|
39
|
+
end
|
40
|
+
|
41
|
+
sprite.update
|
42
|
+
}
|
43
|
+
}
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
puts ""
|
48
|
+
puts "File size Results"
|
49
|
+
|
50
|
+
file_data.each do |data|
|
51
|
+
printf("%17s %8d x %5d (%d bytes)\n", data[0], data[1], data[2], data[3])
|
52
|
+
end
|
53
|
+
|
data/test/imgs/1.png
ADDED
Binary file
|
data/test/imgs/10.png
ADDED
Binary file
|
data/test/imgs/11.png
ADDED
Binary file
|
data/test/imgs/12.png
ADDED
Binary file
|
data/test/imgs/13.png
ADDED
Binary file
|
data/test/imgs/14.png
ADDED
Binary file
|
data/test/imgs/15.png
ADDED
Binary file
|
data/test/imgs/16.png
ADDED
Binary file
|
data/test/imgs/17.png
ADDED
Binary file
|
data/test/imgs/18.png
ADDED
Binary file
|
data/test/imgs/19.png
ADDED
Binary file
|
data/test/imgs/2.png
ADDED
Binary file
|
data/test/imgs/20.png
ADDED
Binary file
|
data/test/imgs/21.png
ADDED
Binary file
|
data/test/imgs/22.png
ADDED
Binary file
|
data/test/imgs/23.png
ADDED
Binary file
|
data/test/imgs/24.png
ADDED
Binary file
|
data/test/imgs/25.png
ADDED
Binary file
|
data/test/imgs/26.png
ADDED
Binary file
|
data/test/imgs/27.png
ADDED
Binary file
|
data/test/imgs/28.png
ADDED
Binary file
|
data/test/imgs/29.png
ADDED
Binary file
|
data/test/imgs/3.png
ADDED
Binary file
|
data/test/imgs/30.png
ADDED
Binary file
|
data/test/imgs/31.png
ADDED
Binary file
|
data/test/imgs/32.png
ADDED
Binary file
|
data/test/imgs/33.png
ADDED
Binary file
|
data/test/imgs/34.png
ADDED
Binary file
|
data/test/imgs/35.png
ADDED
Binary file
|
data/test/imgs/36.png
ADDED
Binary file
|
data/test/imgs/37.png
ADDED
Binary file
|
data/test/imgs/38.png
ADDED
Binary file
|
data/test/imgs/39.png
ADDED
Binary file
|
data/test/imgs/4.png
ADDED
Binary file
|
data/test/imgs/40.png
ADDED
Binary file
|
data/test/imgs/41.png
ADDED
Binary file
|
data/test/imgs/42.png
ADDED
Binary file
|
data/test/imgs/43.png
ADDED
Binary file
|
data/test/imgs/44.png
ADDED
Binary file
|
data/test/imgs/45.png
ADDED
Binary file
|
data/test/imgs/46.png
ADDED
Binary file
|
data/test/imgs/47.png
ADDED
Binary file
|
data/test/imgs/48.png
ADDED
Binary file
|
data/test/imgs/49.png
ADDED
Binary file
|
data/test/imgs/5.png
ADDED
Binary file
|
data/test/imgs/50.png
ADDED
Binary file
|
data/test/imgs/51.png
ADDED
Binary file
|
data/test/imgs/52.png
ADDED
Binary file
|
data/test/imgs/53.png
ADDED
Binary file
|
data/test/imgs/54.png
ADDED
Binary file
|
data/test/imgs/55.png
ADDED
Binary file
|
data/test/imgs/56.png
ADDED
Binary file
|
data/test/imgs/57.png
ADDED
Binary file
|
data/test/imgs/58.png
ADDED
Binary file
|
data/test/imgs/59.png
ADDED
Binary file
|
data/test/imgs/6.png
ADDED
Binary file
|
data/test/imgs/60.png
ADDED
Binary file
|
data/test/imgs/7.png
ADDED
Binary file
|
data/test/imgs/8.png
ADDED
Binary file
|
data/test/imgs/9.png
ADDED
Binary file
|
data/test/t_gd2.rb
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
#!/usr/bin/ruby
|
2
|
+
|
3
|
+
$test_dir = File.dirname(__FILE__)
|
4
|
+
$:.unshift File.join($test_dir, '../lib')
|
5
|
+
|
6
|
+
require 'test/unit'
|
7
|
+
require 'test/unit/ui/console/testrunner'
|
8
|
+
require 'ruby_sprites/sprite'
|
9
|
+
require 'test/t_generic'
|
10
|
+
|
11
|
+
unless RubySprites::Sprite.graphics_managers[:gd2].nil?
|
12
|
+
|
13
|
+
class TestGD2 < Test::Unit::TestCase
|
14
|
+
include TestGeneric
|
15
|
+
|
16
|
+
def initialize(test_suite)
|
17
|
+
super test_suite
|
18
|
+
end
|
19
|
+
|
20
|
+
def setup
|
21
|
+
File.unlink($test_dir + '/test.png') if File.exists?($test_dir + '/test.png')
|
22
|
+
File.unlink($test_dir + '/test.png.sprite') if File.exists?($test_dir + '/test.png.sprite')
|
23
|
+
|
24
|
+
@sprite = RubySprites::Sprite.new('test.png', $test_dir, {:graphics_manager => :gd2})
|
25
|
+
end
|
26
|
+
end
|
27
|
+
Test::Unit::UI::Console::TestRunner.run(TestGD2)
|
28
|
+
end
|
data/test/t_generic.rb
ADDED
@@ -0,0 +1,183 @@
|
|
1
|
+
#!/usr/bin/ruby
|
2
|
+
|
3
|
+
require 'ruby_sprites/sprite'
|
4
|
+
|
5
|
+
module TestGeneric
|
6
|
+
|
7
|
+
def setup
|
8
|
+
File.unlink($test_dir + '/test.png') if File.exists?($test_dir + '/test.png')
|
9
|
+
File.unlink($test_dir + '/test.png.sprite') if File.exists?($test_dir + '/test.png.sprite')
|
10
|
+
|
11
|
+
@sprite = RubySprites::Sprite.new('test.png', $test_dir)
|
12
|
+
end
|
13
|
+
|
14
|
+
def teardown
|
15
|
+
File.unlink($test_dir + 'test.png') if File.exists?($test_dir + 'test.png')
|
16
|
+
File.unlink($test_dir + 'test.png.sprite') if File.exists?($test_dir + 'test.png.sprite')
|
17
|
+
@sprite.destroy!
|
18
|
+
end
|
19
|
+
|
20
|
+
def test_add_image
|
21
|
+
@sprite.add_image('imgs/1.png')
|
22
|
+
assert_equal(0, @sprite.images.length)
|
23
|
+
@sprite.update
|
24
|
+
assert_equal(1, @sprite.images.length)
|
25
|
+
@sprite.add_image('imgs/2.png')
|
26
|
+
assert_equal(1, @sprite.images.length)
|
27
|
+
@sprite.update
|
28
|
+
assert_equal(2, @sprite.images.length)
|
29
|
+
@sprite.add_image('imgs/2.png')
|
30
|
+
assert_equal(2, @sprite.images.length)
|
31
|
+
@sprite.update
|
32
|
+
assert_equal(2, @sprite.images.length)
|
33
|
+
end
|
34
|
+
|
35
|
+
def test_add_images
|
36
|
+
imgs = []
|
37
|
+
(1..20).each do |n|
|
38
|
+
imgs.push "imgs/#{n}.png"
|
39
|
+
end
|
40
|
+
|
41
|
+
@sprite.add_images(imgs)
|
42
|
+
assert_equal(0, @sprite.images.length)
|
43
|
+
|
44
|
+
@sprite.update
|
45
|
+
assert_equal(20, @sprite.images.length)
|
46
|
+
|
47
|
+
imgs = []
|
48
|
+
(11..30).each do |n|
|
49
|
+
imgs.push "imgs/#{n}.png"
|
50
|
+
end
|
51
|
+
|
52
|
+
@sprite.add_images(imgs)
|
53
|
+
assert_equal(20, @sprite.images.length)
|
54
|
+
|
55
|
+
@sprite.update
|
56
|
+
assert_equal(30, @sprite.images.length)
|
57
|
+
end
|
58
|
+
|
59
|
+
def test_image_info
|
60
|
+
assert_equal(nil, @sprite.image_info('imgs/1.png'))
|
61
|
+
|
62
|
+
@sprite.add_image('imgs/1.png')
|
63
|
+
assert_equal(nil, @sprite.image_info('imgs/1.png'))
|
64
|
+
|
65
|
+
@sprite.update
|
66
|
+
|
67
|
+
info = @sprite.image_info('imgs/1.png')
|
68
|
+
assert_equal(0, info[:x])
|
69
|
+
assert_equal(0, info[:y])
|
70
|
+
assert_equal(11, info[:width])
|
71
|
+
assert_equal(51, info[:height])
|
72
|
+
assert_equal('imgs/1.png', info[:path])
|
73
|
+
assert_equal(File.mtime($test_dir + '/imgs/1.png'), info[:mtime])
|
74
|
+
end
|
75
|
+
|
76
|
+
def test_image_current?
|
77
|
+
@sprite.add_image('imgs/1.png')
|
78
|
+
|
79
|
+
orig_ctime = File.ctime($test_dir + '/imgs/1.png').to_i
|
80
|
+
File.utime(orig_ctime, Time.now.to_i - 1000, $test_dir + '/imgs/1.png')
|
81
|
+
|
82
|
+
assert_equal(false, @sprite.image_current?('imgs/1.png'))
|
83
|
+
|
84
|
+
@sprite.update
|
85
|
+
assert_equal(true, @sprite.image_current?('imgs/1.png'))
|
86
|
+
|
87
|
+
File.utime(orig_ctime, Time.now.to_i + 1000, $test_dir + '/imgs/1.png')
|
88
|
+
|
89
|
+
assert_equal(false, @sprite.image_current?('imgs/1.png'))
|
90
|
+
|
91
|
+
@sprite.update
|
92
|
+
|
93
|
+
File.utime(orig_ctime, Time.now.to_i, $test_dir + '/imgs/1.png')
|
94
|
+
|
95
|
+
|
96
|
+
assert_equal(true, @sprite.image_current?('imgs/1.png'))
|
97
|
+
|
98
|
+
end
|
99
|
+
|
100
|
+
def test_pack_vertical
|
101
|
+
@sprite.set_option(:pack_type, :vertical_stack)
|
102
|
+
|
103
|
+
(1..20).each do |n|
|
104
|
+
@sprite.add_image("imgs/#{n}.png")
|
105
|
+
end
|
106
|
+
|
107
|
+
@sprite.update
|
108
|
+
end
|
109
|
+
|
110
|
+
def test_pack_horizontal
|
111
|
+
@sprite.set_option(:pack_type, :horizontal_stack)
|
112
|
+
|
113
|
+
(1..20).each do |n|
|
114
|
+
@sprite.add_image("imgs/#{n}.png")
|
115
|
+
end
|
116
|
+
|
117
|
+
@sprite.update
|
118
|
+
end
|
119
|
+
|
120
|
+
def test_pack_vertical_smart
|
121
|
+
@sprite.set_option(:pack_type, :vertical_smart)
|
122
|
+
|
123
|
+
(1..20).each do |n|
|
124
|
+
@sprite.add_image("imgs/#{n}.png")
|
125
|
+
end
|
126
|
+
|
127
|
+
@sprite.update
|
128
|
+
end
|
129
|
+
|
130
|
+
def test_pack_horizontal_smart
|
131
|
+
@sprite.set_option(:pack_type, :horizontal_smart)
|
132
|
+
|
133
|
+
(1..20).each do |n|
|
134
|
+
@sprite.add_image("imgs/#{n}.png")
|
135
|
+
end
|
136
|
+
|
137
|
+
@sprite.update
|
138
|
+
end
|
139
|
+
|
140
|
+
def test_pack_vertical_split
|
141
|
+
@sprite.set_option(:pack_type, :vertical_split)
|
142
|
+
|
143
|
+
(1..20).each do |n|
|
144
|
+
@sprite.add_image("imgs/#{n}.png")
|
145
|
+
end
|
146
|
+
|
147
|
+
@sprite.update
|
148
|
+
end
|
149
|
+
|
150
|
+
def test_pack_horizontal_split
|
151
|
+
@sprite.set_option(:pack_type, :horizontal_split)
|
152
|
+
|
153
|
+
(1..20).each do |n|
|
154
|
+
@sprite.add_image("imgs/#{n}.png")
|
155
|
+
end
|
156
|
+
|
157
|
+
@sprite.update
|
158
|
+
end
|
159
|
+
|
160
|
+
def test_vertical_repeat
|
161
|
+
@sprite.set_option(:repeat, :vertical)
|
162
|
+
|
163
|
+
(1..20).each do |n|
|
164
|
+
@sprite.add_image("imgs/#{n}.png")
|
165
|
+
end
|
166
|
+
|
167
|
+
@sprite.update
|
168
|
+
|
169
|
+
assert_equal(1, @sprite.height)
|
170
|
+
end
|
171
|
+
|
172
|
+
def test_horizontal_repeat
|
173
|
+
@sprite.set_option(:repeat, :horizontal)
|
174
|
+
|
175
|
+
(1..20).each do |n|
|
176
|
+
@sprite.add_image("imgs/#{n}.png")
|
177
|
+
end
|
178
|
+
|
179
|
+
@sprite.update
|
180
|
+
|
181
|
+
assert_equal(1, @sprite.width)
|
182
|
+
end
|
183
|
+
end
|
data/test/t_rmagick.rb
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
#!/usr/bin/ruby
|
2
|
+
|
3
|
+
$test_dir = File.dirname(__FILE__)
|
4
|
+
$:.unshift File.join($test_dir, '../lib')
|
5
|
+
|
6
|
+
require 'test/unit'
|
7
|
+
require 'test/unit/ui/console/testrunner'
|
8
|
+
require 'ruby_sprites/sprite'
|
9
|
+
require 'test/t_generic'
|
10
|
+
|
11
|
+
unless RubySprites::Sprite.graphics_managers[:rmagick].nil?
|
12
|
+
|
13
|
+
class TestRMagick < Test::Unit::TestCase
|
14
|
+
include TestGeneric
|
15
|
+
|
16
|
+
def initialize(test_suite)
|
17
|
+
super test_suite
|
18
|
+
end
|
19
|
+
|
20
|
+
def setup
|
21
|
+
File.unlink($test_dir + '/test.png') if File.exists?($test_dir + '/test.png')
|
22
|
+
File.unlink($test_dir + '/test.png.sprite') if File.exists?($test_dir + '/test.png.sprite')
|
23
|
+
|
24
|
+
@sprite = RubySprites::Sprite.new('test.png', $test_dir, {:graphics_manager => :rmagick})
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
Test::Unit::UI::Console::TestRunner.run(TestRMagick)
|
29
|
+
end
|