gruff 0.7.0-java → 0.12.0-java
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.
- checksums.yaml +5 -5
- data/{History.txt → CHANGELOG.md} +81 -25
- data/Gemfile +3 -1
- data/README.md +51 -23
- data/assets/plastik/blue.png +0 -0
- data/assets/plastik/green.png +0 -0
- data/assets/plastik/red.png +0 -0
- data/gruff.gemspec +23 -13
- data/init.rb +2 -0
- data/lib/gruff.rb +33 -4
- data/lib/gruff/accumulator_bar.rb +17 -9
- data/lib/gruff/area.rb +31 -21
- data/lib/gruff/bar.rb +90 -46
- data/lib/gruff/base.rb +476 -710
- data/lib/gruff/bezier.rb +29 -18
- data/lib/gruff/bullet.rb +58 -71
- data/lib/gruff/dot.rb +35 -83
- data/lib/gruff/helper/bar_conversion.rb +47 -0
- data/lib/gruff/helper/bar_value_label_mixin.rb +33 -0
- data/lib/gruff/helper/stacked_mixin.rb +23 -0
- data/lib/gruff/histogram.rb +59 -0
- data/lib/gruff/line.rb +121 -199
- data/lib/gruff/mini/bar.rb +17 -10
- data/lib/gruff/mini/legend.rb +26 -38
- data/lib/gruff/mini/pie.rb +18 -13
- data/lib/gruff/mini/side_bar.rb +25 -12
- data/lib/gruff/net.rb +69 -83
- data/lib/gruff/patch/rmagick.rb +31 -0
- data/lib/gruff/patch/string.rb +13 -0
- data/lib/gruff/photo_bar.rb +36 -43
- data/lib/gruff/pie.rb +42 -103
- data/lib/gruff/renderer/bezier.rb +22 -0
- data/lib/gruff/renderer/circle.rb +22 -0
- data/lib/gruff/renderer/dash_line.rb +23 -0
- data/lib/gruff/renderer/dot.rb +40 -0
- data/lib/gruff/renderer/ellipse.rb +22 -0
- data/lib/gruff/renderer/line.rb +43 -0
- data/lib/gruff/renderer/polygon.rb +24 -0
- data/lib/gruff/renderer/polyline.rb +22 -0
- data/lib/gruff/renderer/rectangle.rb +20 -0
- data/lib/gruff/renderer/renderer.rb +120 -0
- data/lib/gruff/renderer/text.rb +57 -0
- data/lib/gruff/scatter.rb +128 -201
- data/lib/gruff/scene.rb +30 -41
- data/lib/gruff/side_bar.rb +100 -68
- data/lib/gruff/side_stacked_bar.rb +92 -63
- data/lib/gruff/spider.rb +47 -53
- data/lib/gruff/stacked_area.rb +37 -34
- data/lib/gruff/stacked_bar.rb +99 -54
- data/lib/gruff/store/basic_data.rb +36 -0
- data/lib/gruff/store/custom_data.rb +36 -0
- data/lib/gruff/store/store.rb +81 -0
- data/lib/gruff/store/xy_data.rb +58 -0
- data/lib/gruff/themes.rb +32 -33
- data/lib/gruff/version.rb +3 -1
- metadata +74 -102
- data/.gitignore +0 -7
- data/.travis.yml +0 -19
- data/Manifest.txt +0 -81
- data/RELEASE.md +0 -30
- data/Rakefile +0 -218
- data/assets/bubble.png +0 -0
- data/assets/city_scene/background/0000.png +0 -0
- data/assets/city_scene/background/0600.png +0 -0
- data/assets/city_scene/background/2000.png +0 -0
- data/assets/city_scene/clouds/cloudy.png +0 -0
- data/assets/city_scene/clouds/partly_cloudy.png +0 -0
- data/assets/city_scene/clouds/stormy.png +0 -0
- data/assets/city_scene/grass/default.png +0 -0
- data/assets/city_scene/haze/true.png +0 -0
- data/assets/city_scene/number_sample/1.png +0 -0
- data/assets/city_scene/number_sample/2.png +0 -0
- data/assets/city_scene/number_sample/default.png +0 -0
- data/assets/city_scene/sky/0000.png +0 -0
- data/assets/city_scene/sky/0200.png +0 -0
- data/assets/city_scene/sky/0400.png +0 -0
- data/assets/city_scene/sky/0600.png +0 -0
- data/assets/city_scene/sky/0800.png +0 -0
- data/assets/city_scene/sky/1000.png +0 -0
- data/assets/city_scene/sky/1200.png +0 -0
- data/assets/city_scene/sky/1400.png +0 -0
- data/assets/city_scene/sky/1500.png +0 -0
- data/assets/city_scene/sky/1700.png +0 -0
- data/assets/city_scene/sky/2000.png +0 -0
- data/assets/pc306715.jpg +0 -0
- data/lib/gruff/bar_conversion.rb +0 -46
- data/lib/gruff/deprecated.rb +0 -39
- data/lib/gruff/stacked_mixin.rb +0 -23
- data/test/gruff_test_case.rb +0 -152
- data/test/image_compare.rb +0 -58
- data/test/test_accumulator_bar.rb +0 -51
- data/test/test_area.rb +0 -134
- data/test/test_bar.rb +0 -505
- data/test/test_base.rb +0 -33
- data/test/test_bezier.rb +0 -33
- data/test/test_bullet.rb +0 -26
- data/test/test_dot.rb +0 -263
- data/test/test_labels_for_null_data.rb +0 -27
- data/test/test_legend.rb +0 -68
- data/test/test_line.rb +0 -674
- data/test/test_mini_bar.rb +0 -33
- data/test/test_mini_pie.rb +0 -25
- data/test/test_mini_side_bar.rb +0 -36
- data/test/test_net.rb +0 -231
- data/test/test_photo.rb +0 -41
- data/test/test_pie.rb +0 -194
- data/test/test_scatter.rb +0 -270
- data/test/test_scene.rb +0 -100
- data/test/test_side_bar.rb +0 -56
- data/test/test_sidestacked_bar.rb +0 -105
- data/test/test_spider.rb +0 -226
- data/test/test_stacked_area.rb +0 -52
- data/test/test_stacked_bar.rb +0 -68
data/test/test_bar.rb
DELETED
@@ -1,505 +0,0 @@
|
|
1
|
-
#!/usr/bin/ruby
|
2
|
-
|
3
|
-
require File.dirname(__FILE__) + '/gruff_test_case'
|
4
|
-
|
5
|
-
class TestGruffBar < GruffTestCase
|
6
|
-
|
7
|
-
# TODO Delete old output files once when starting tests
|
8
|
-
|
9
|
-
def setup
|
10
|
-
super
|
11
|
-
@datasets = [
|
12
|
-
[:Jimmy, [25, 36, 86, 39]],
|
13
|
-
[:Charles, [80, 54, 67, 54]],
|
14
|
-
[:Julie, [22, 29, 35, 38]],
|
15
|
-
#[:Jane, [95, 95, 95, 90, 85, 80, 88, 100]],
|
16
|
-
#[:Philip, [90, 34, 23, 12, 78, 89, 98, 88]],
|
17
|
-
#["Arthur", [5, 10, 13, 11, 6, 16, 22, 32]],
|
18
|
-
]
|
19
|
-
end
|
20
|
-
|
21
|
-
def test_bar_graph
|
22
|
-
g = setup_basic_graph
|
23
|
-
g.title = 'Bar Chart'
|
24
|
-
g.write('test/output/bar_keynote.png')
|
25
|
-
|
26
|
-
g = setup_basic_graph
|
27
|
-
g.title = 'Visual Multi-Line Bar Graph Test'
|
28
|
-
g.theme = Gruff::Themes::RAILS_KEYNOTE
|
29
|
-
g.write('test/output/bar_rails_keynote.png')
|
30
|
-
|
31
|
-
g = setup_basic_graph
|
32
|
-
g.title = 'Visual Multi-Line Bar Graph Test'
|
33
|
-
g.theme = Gruff::Themes::ODEO
|
34
|
-
g.write('test/output/bar_odeo.png')
|
35
|
-
end
|
36
|
-
|
37
|
-
def test_title_margin
|
38
|
-
g = setup_basic_graph
|
39
|
-
g.title = 'Bar Graph with Title Margin = 100'
|
40
|
-
g.title_margin = 100
|
41
|
-
g.write('test/output/bar_title_margin.png')
|
42
|
-
end
|
43
|
-
|
44
|
-
def test_thousand_separators
|
45
|
-
g = Gruff::Bar.new(600)
|
46
|
-
g.title = 'Formatted numbers'
|
47
|
-
g.marker_count = 8
|
48
|
-
g.data('data', [4025, 1024, 50257, 703672, 1580456])
|
49
|
-
g.write('test/output/bar_formatted_numbers.png')
|
50
|
-
end
|
51
|
-
|
52
|
-
def test_bar_graph_set_colors
|
53
|
-
g = Gruff::Bar.new
|
54
|
-
g.title = 'Bar Graph With Manual Colors'
|
55
|
-
g.legend_margin = 50
|
56
|
-
g.labels = {
|
57
|
-
0 => '5/6',
|
58
|
-
1 => '5/15',
|
59
|
-
2 => '5/24',
|
60
|
-
3 => '5/30',
|
61
|
-
}
|
62
|
-
g.data(:Art, [0, 5, 8, 15], '#990000')
|
63
|
-
g.data(:Philosophy, [10, 3, 2, 8], '#009900')
|
64
|
-
g.data(:Science, [2, 15, 8, 11], '#990099')
|
65
|
-
|
66
|
-
g.minimum_value = 0
|
67
|
-
|
68
|
-
g.write('test/output/bar_manual_colors.png')
|
69
|
-
end
|
70
|
-
|
71
|
-
def test_bar_graph_small
|
72
|
-
g = Gruff::Bar.new(400)
|
73
|
-
g.title = 'Visual Multi-Line Bar Graph Test'
|
74
|
-
g.labels = {
|
75
|
-
0 => '5/6',
|
76
|
-
1 => '5/15',
|
77
|
-
2 => '5/24',
|
78
|
-
3 => '5/30',
|
79
|
-
}
|
80
|
-
@datasets.each do |data|
|
81
|
-
g.data(data[0], data[1])
|
82
|
-
end
|
83
|
-
|
84
|
-
g.write('test/output/bar_keynote_small.png')
|
85
|
-
end
|
86
|
-
|
87
|
-
# Somewhat worthless test. Should an error be thrown?
|
88
|
-
# def test_nil_font
|
89
|
-
# g = setup_basic_graph 400
|
90
|
-
# g.title = "Nil Font"
|
91
|
-
# g.font = nil
|
92
|
-
# g.write "test/output/bar_nil_font.png"
|
93
|
-
# end
|
94
|
-
|
95
|
-
|
96
|
-
def test_no_line_markers
|
97
|
-
g = setup_basic_graph(400)
|
98
|
-
g.title = 'No Line Markers'
|
99
|
-
g.hide_line_markers = true
|
100
|
-
g.write('test/output/bar_no_line_markers.png')
|
101
|
-
end
|
102
|
-
|
103
|
-
def test_no_legend
|
104
|
-
g = setup_basic_graph(400)
|
105
|
-
g.title = 'No Legend'
|
106
|
-
g.hide_legend = true
|
107
|
-
g.write('test/output/bar_no_legend.png')
|
108
|
-
end
|
109
|
-
|
110
|
-
def test_no_title
|
111
|
-
g = setup_basic_graph(400)
|
112
|
-
g.title = 'No Title'
|
113
|
-
g.hide_title = true
|
114
|
-
g.write('test/output/bar_no_title.png')
|
115
|
-
end
|
116
|
-
|
117
|
-
def test_no_title_or_legend
|
118
|
-
g = setup_basic_graph(400)
|
119
|
-
g.title = 'No Title or Legend'
|
120
|
-
g.hide_legend = true
|
121
|
-
g.hide_title = true
|
122
|
-
g.write('test/output/bar_no_title_or_legend.png')
|
123
|
-
end
|
124
|
-
|
125
|
-
def test_set_marker_count
|
126
|
-
g = setup_basic_graph(400)
|
127
|
-
g.title = 'Set marker'
|
128
|
-
g.marker_count = 10
|
129
|
-
g.write('test/output/bar_set_marker.png')
|
130
|
-
end
|
131
|
-
|
132
|
-
def test_set_legend_box_size
|
133
|
-
g = setup_basic_graph(400)
|
134
|
-
g.title = 'Set Small Legend Box Size'
|
135
|
-
g.legend_box_size = 10.0
|
136
|
-
g.write('test/output/bar_set_legend_box_size_sm.png')
|
137
|
-
|
138
|
-
g = setup_basic_graph(400)
|
139
|
-
g.title = 'Set Large Legend Box Size'
|
140
|
-
g.legend_box_size = 50.0
|
141
|
-
g.write('test/output/bar_set_legend_box_size_lg.png')
|
142
|
-
end
|
143
|
-
|
144
|
-
def test_x_y_labels
|
145
|
-
g = setup_basic_graph(400)
|
146
|
-
g.title = 'X Y Labels'
|
147
|
-
g.x_axis_label = 'Score (%)'
|
148
|
-
g.y_axis_label = 'Students'
|
149
|
-
g.write('test/output/bar_x_y_labels.png')
|
150
|
-
end
|
151
|
-
|
152
|
-
def test_wide_graph
|
153
|
-
g = setup_basic_graph('800x400')
|
154
|
-
g.title = 'Wide Graph'
|
155
|
-
g.write('test/output/bar_wide_graph.png')
|
156
|
-
|
157
|
-
g = setup_basic_graph('400x200')
|
158
|
-
g.title = 'Wide Graph Small'
|
159
|
-
g.write('test/output/bar_wide_graph_small.png')
|
160
|
-
end
|
161
|
-
|
162
|
-
|
163
|
-
def test_tall_graph
|
164
|
-
g = setup_basic_graph('400x600')
|
165
|
-
g.title = 'Tall Graph'
|
166
|
-
g.write('test/output/bar_tall_graph.png')
|
167
|
-
|
168
|
-
g = setup_basic_graph('200x400')
|
169
|
-
g.title = 'Tall Graph Small'
|
170
|
-
g.write('test/output/bar_tall_graph_small.png')
|
171
|
-
end
|
172
|
-
|
173
|
-
|
174
|
-
def test_one_value
|
175
|
-
g = Gruff::Bar.new
|
176
|
-
g.title = 'One Value Graph Test'
|
177
|
-
g.labels = {
|
178
|
-
0 => '1',
|
179
|
-
1 => '2'
|
180
|
-
}
|
181
|
-
g.data('one', [1, 1])
|
182
|
-
|
183
|
-
g.write('test/output/bar_one_value.png')
|
184
|
-
end
|
185
|
-
|
186
|
-
|
187
|
-
def test_negative
|
188
|
-
g = Gruff::Bar.new
|
189
|
-
g.title = 'Pos/Neg Bar Graph Test'
|
190
|
-
g.labels = {
|
191
|
-
0 => '5/6',
|
192
|
-
1 => '5/15',
|
193
|
-
2 => '5/24',
|
194
|
-
3 => '5/30',
|
195
|
-
}
|
196
|
-
g.data(:apples, [-1, 0, 4, -4])
|
197
|
-
g.data(:peaches, [10, 8, 6, 3])
|
198
|
-
|
199
|
-
g.write('test/output/bar_pos_neg.png')
|
200
|
-
end
|
201
|
-
|
202
|
-
|
203
|
-
def test_nearly_zero
|
204
|
-
g = Gruff::Bar.new
|
205
|
-
g.title = 'Nearly Zero Graph'
|
206
|
-
g.labels = {
|
207
|
-
0 => '5/6',
|
208
|
-
1 => '5/15',
|
209
|
-
2 => '5/24',
|
210
|
-
3 => '5/30',
|
211
|
-
}
|
212
|
-
g.data(:apples, [1, 2, 3, 4])
|
213
|
-
g.data(:peaches, [4, 3, 2, 1])
|
214
|
-
g.minimum_value = 0
|
215
|
-
g.maximum_value = 10
|
216
|
-
g.write('test/output/bar_nearly_zero_max_10.png')
|
217
|
-
end
|
218
|
-
|
219
|
-
def test_y_axis_increment
|
220
|
-
generate_with_y_axis_increment 2.0
|
221
|
-
generate_with_y_axis_increment 1
|
222
|
-
generate_with_y_axis_increment 5
|
223
|
-
generate_with_y_axis_increment 20
|
224
|
-
end
|
225
|
-
|
226
|
-
def generate_with_y_axis_increment(increment)
|
227
|
-
g = Gruff::Bar.new
|
228
|
-
g.title = "Y Axis Set to #{increment}"
|
229
|
-
g.labels = {
|
230
|
-
0 => '5/6',
|
231
|
-
1 => '5/15',
|
232
|
-
2 => '5/24',
|
233
|
-
3 => '5/30',
|
234
|
-
}
|
235
|
-
g.y_axis_increment = increment
|
236
|
-
g.data(:apples, [1, 0.2, 0.5, 0.7])
|
237
|
-
g.data(:peaches, [2.5, 2.3, 2, 6.1])
|
238
|
-
g.write("test/output/bar_y_increment_#{increment}.png")
|
239
|
-
end
|
240
|
-
|
241
|
-
def test_custom_spacing
|
242
|
-
g = Gruff::Bar.new
|
243
|
-
g.spacing_factor = 0
|
244
|
-
g.title = 'Zero spacing graff'
|
245
|
-
g.labels = {
|
246
|
-
0 => '5/6',
|
247
|
-
1 => '5/15',
|
248
|
-
2 => '5/24',
|
249
|
-
3 => '5/30',
|
250
|
-
}
|
251
|
-
|
252
|
-
g.data(:apples, [1, 5, 8, 4])
|
253
|
-
g.data(:peaches, [4, 1, 2, 10])
|
254
|
-
g.minimum_value = 0
|
255
|
-
g.maximum_value = 10
|
256
|
-
g.write('test/output/bar_zero_spacing.png')
|
257
|
-
end
|
258
|
-
|
259
|
-
def test_spacing_factor_does_not_accept_values_lt_0_and_gt_1
|
260
|
-
g = Gruff::Bar.new
|
261
|
-
|
262
|
-
assert_raises ArgumentError do
|
263
|
-
g.spacing_factor = 1.01
|
264
|
-
end
|
265
|
-
|
266
|
-
assert_raises ArgumentError do
|
267
|
-
g.spacing_factor = -0.01
|
268
|
-
end
|
269
|
-
end
|
270
|
-
|
271
|
-
def test_custom_theme
|
272
|
-
g = Gruff::Bar.new
|
273
|
-
g.title = 'Custom Theme'
|
274
|
-
g.font = File.expand_path('CREABBRG.TTF', ENV['MAGICK_FONT_PATH'])
|
275
|
-
g.title_font_size = 60
|
276
|
-
g.legend_font_size = 32
|
277
|
-
g.marker_font_size = 32
|
278
|
-
g.theme = {
|
279
|
-
:colors => %w(#efd250 #666699 #e5573f #9595e2),
|
280
|
-
:marker_color => 'white',
|
281
|
-
:font_color => 'blue',
|
282
|
-
:background_image => 'assets/pc306715.jpg'
|
283
|
-
}
|
284
|
-
g.labels = {
|
285
|
-
0 => '5/6',
|
286
|
-
1 => '5/15',
|
287
|
-
2 => '5/24',
|
288
|
-
3 => '5/30',
|
289
|
-
}
|
290
|
-
g.data(:vancouver, [1, 2, 3, 4])
|
291
|
-
g.data(:seattle, [2, 4, 6, 8])
|
292
|
-
g.data(:portland, [3, 1, 7, 3])
|
293
|
-
g.data(:victoria, [4, 3, 5, 7])
|
294
|
-
g.minimum_value = 0
|
295
|
-
g.write('test/output/bar_themed.png')
|
296
|
-
end
|
297
|
-
|
298
|
-
def test_background_gradient_top_bottom
|
299
|
-
g = Gruff::Bar.new
|
300
|
-
g.title = 'Background gradient top to bottom'
|
301
|
-
g.theme = {
|
302
|
-
:background_colors => %w(#ff0000 #00ff00),
|
303
|
-
:background_direction => :top_bottom,
|
304
|
-
}
|
305
|
-
g.labels = @labels
|
306
|
-
@datasets.each do |name, values|
|
307
|
-
g.data(name, values)
|
308
|
-
end
|
309
|
-
g.minimum_value = 0
|
310
|
-
write_test_file(g, 'bar_background_gradient_top_bottom.png')
|
311
|
-
end
|
312
|
-
|
313
|
-
def test_background_gradient_bottom_top
|
314
|
-
g = Gruff::Bar.new
|
315
|
-
g.title = 'Background gradient top to bottom'
|
316
|
-
g.theme = {
|
317
|
-
:background_colors => %w(#ff0000 #00ff00),
|
318
|
-
:background_direction => :bottom_top,
|
319
|
-
}
|
320
|
-
g.labels = @labels
|
321
|
-
@datasets.each do |name, values|
|
322
|
-
g.data(name, values)
|
323
|
-
end
|
324
|
-
g.minimum_value = 0
|
325
|
-
write_test_file(g, 'bar_background_gradient_bottom_top.png')
|
326
|
-
end
|
327
|
-
|
328
|
-
def test_background_gradient_left_right
|
329
|
-
g = Gruff::Bar.new
|
330
|
-
g.title = 'Background gradient left to right'
|
331
|
-
g.theme = {
|
332
|
-
:background_colors => %w(#ff0000 #00ff00),
|
333
|
-
:background_direction => :left_right,
|
334
|
-
}
|
335
|
-
g.labels = @labels
|
336
|
-
@datasets.each do |name, values|
|
337
|
-
g.data(name, values)
|
338
|
-
end
|
339
|
-
g.minimum_value = 0
|
340
|
-
write_test_file(g, 'bar_background_gradient_left_right.png')
|
341
|
-
end
|
342
|
-
|
343
|
-
def test_background_gradient_right_left
|
344
|
-
g = Gruff::Bar.new
|
345
|
-
g.title = 'Background gradient right to left'
|
346
|
-
g.theme = {
|
347
|
-
:background_colors => %w(#ff0000 #00ff00),
|
348
|
-
:background_direction => :right_left,
|
349
|
-
}
|
350
|
-
g.labels = @labels
|
351
|
-
@datasets.each do |name, values|
|
352
|
-
g.data(name, values)
|
353
|
-
end
|
354
|
-
g.minimum_value = 0
|
355
|
-
write_test_file(g, 'bar_background_gradient_right_left.png')
|
356
|
-
end
|
357
|
-
|
358
|
-
def test_background_gradient_topleft_bottomright
|
359
|
-
g = Gruff::Bar.new
|
360
|
-
g.title = 'Background gradient top left to bottom right'
|
361
|
-
g.theme = {
|
362
|
-
:background_colors => %w(#ff0000 #00ff00),
|
363
|
-
:background_direction => :topleft_bottomright,
|
364
|
-
}
|
365
|
-
g.labels = @labels
|
366
|
-
@datasets.each do |name, values|
|
367
|
-
g.data(name, values)
|
368
|
-
end
|
369
|
-
g.minimum_value = 0
|
370
|
-
write_test_file(g, 'bar_background_gradient_topleft_bottomright.png')
|
371
|
-
end
|
372
|
-
|
373
|
-
def test_background_gradient_topright_bottomleft
|
374
|
-
g = Gruff::Bar.new
|
375
|
-
g.title = 'Background gradient top right to bottom left'
|
376
|
-
g.title_font_size = 30
|
377
|
-
g.theme = {
|
378
|
-
:background_colors => %w(#ff0000 #00ff00),
|
379
|
-
:background_direction => :topright_bottomleft,
|
380
|
-
}
|
381
|
-
g.labels = @labels
|
382
|
-
@datasets.each do |name, values|
|
383
|
-
g.data(name, values)
|
384
|
-
end
|
385
|
-
g.minimum_value = 0
|
386
|
-
write_test_file(g, 'bar_background_gradient_topright_bottomleft.png')
|
387
|
-
end
|
388
|
-
|
389
|
-
def test_legend_should_not_overlap
|
390
|
-
g = Gruff::Bar.new(400)
|
391
|
-
g.theme_37signals()
|
392
|
-
g.title = 'My Graph'
|
393
|
-
g.data('Apples Oranges Watermelon Apples Oranges', [1, 2, 3, 4, 4, 3])
|
394
|
-
g.data('Oranges', [4, 8, 7, 9, 8, 9])
|
395
|
-
g.data('Watermelon', [2, 3, 1, 5, 6, 8])
|
396
|
-
g.data('Peaches', [9, 9, 10, 8, 7, 9])
|
397
|
-
g.labels = {0 => '2003', 2 => '2004', 4 => '2005'}
|
398
|
-
g.write('test/output/bar_long_legend_text.png')
|
399
|
-
end
|
400
|
-
|
401
|
-
def test_july_enhancements
|
402
|
-
g = Gruff::Bar.new(600)
|
403
|
-
g.hide_legend = true
|
404
|
-
g.title = 'Full speed ahead'
|
405
|
-
g.labels = (0..10).inject({}) { |memo, i| memo.merge({i => (i*10).to_s}) }
|
406
|
-
g.data(:apples, (0..9).map { rand(20)/10.0 })
|
407
|
-
g.y_axis_increment = 1.0
|
408
|
-
g.x_axis_label = 'Score (%)'
|
409
|
-
g.y_axis_label = 'Students'
|
410
|
-
write_test_file g, 'enhancements.png'
|
411
|
-
end
|
412
|
-
|
413
|
-
def test_bar_spacing
|
414
|
-
g = setup_basic_graph
|
415
|
-
g.bar_spacing = 0
|
416
|
-
g.title = '100% spacing between bars'
|
417
|
-
g.write('test/output/bar_spacing_full.png')
|
418
|
-
|
419
|
-
g = setup_basic_graph
|
420
|
-
g.bar_spacing = 0.5
|
421
|
-
g.title = '50% spacing between bars'
|
422
|
-
g.write('test/output/bar_spacing_half.png')
|
423
|
-
|
424
|
-
g = setup_basic_graph
|
425
|
-
g.bar_spacing = 1
|
426
|
-
g.title = '0% spacing between bars'
|
427
|
-
g.write('test/output/bar_spacing_none.png')
|
428
|
-
end
|
429
|
-
|
430
|
-
def test_set_label_stagger_height
|
431
|
-
g = setup_long_labelled_graph
|
432
|
-
g.title = 'Staggered labels'
|
433
|
-
g.label_stagger_height = 30
|
434
|
-
g.write('test/output/bar_set_label_stagger_height.png')
|
435
|
-
end
|
436
|
-
|
437
|
-
def test_set_label_max_size_and_label_truncation_style
|
438
|
-
# Absolute trunc
|
439
|
-
g = setup_long_labelled_graph
|
440
|
-
g.title = 'Absolute truncation (13 chars)'
|
441
|
-
g.label_max_size = 13
|
442
|
-
g.label_truncation_style = :absolute
|
443
|
-
g.write('test/output/bar_set_absolute_trunc.png')
|
444
|
-
|
445
|
-
# Trailing Dots trunc
|
446
|
-
g = setup_long_labelled_graph
|
447
|
-
g.title = 'Trailing dots truncation (6 chars inc dots)'
|
448
|
-
g.label_max_size = 6
|
449
|
-
g.label_truncation_style = :trailing_dots
|
450
|
-
g.write('test/output/bar_set_trailing_dots_trunc.png')
|
451
|
-
end
|
452
|
-
|
453
|
-
def test_bar_value_labels
|
454
|
-
g = setup_basic_graph
|
455
|
-
g.show_labels_for_bar_values = true
|
456
|
-
g.write('test/output/bar_value_labels.png')
|
457
|
-
end
|
458
|
-
|
459
|
-
def test_zero_marker_count
|
460
|
-
g = setup_basic_graph
|
461
|
-
g.marker_count = 0
|
462
|
-
g.write('test/output/bar_zero_marker_count.png')
|
463
|
-
end
|
464
|
-
|
465
|
-
def test_zero_marker_shadow
|
466
|
-
g = setup_basic_graph
|
467
|
-
g.title = 'Bar Chart with Marker Shadow'
|
468
|
-
g.marker_shadow_color = '#888888'
|
469
|
-
g.write('test/output/bar_marker_shadow.png')
|
470
|
-
end
|
471
|
-
|
472
|
-
protected
|
473
|
-
|
474
|
-
def setup_basic_graph(size=800)
|
475
|
-
g = Gruff::Bar.new(size)
|
476
|
-
g.title = 'My Bar Graph'
|
477
|
-
g.labels = {
|
478
|
-
0 => '5/6',
|
479
|
-
1 => '5/15',
|
480
|
-
2 => '5/24',
|
481
|
-
3 => '5/30',
|
482
|
-
}
|
483
|
-
@datasets.each do |data|
|
484
|
-
g.data(data[0], data[1])
|
485
|
-
end
|
486
|
-
g
|
487
|
-
end
|
488
|
-
|
489
|
-
def setup_long_labelled_graph(size=500)
|
490
|
-
g = Gruff::Bar.new(size)
|
491
|
-
g.title = 'A Graph for All Seasons'
|
492
|
-
g.labels = {
|
493
|
-
0 => 'January was a cold one',
|
494
|
-
1 => 'February is little better',
|
495
|
-
2 => 'March will bring me hares',
|
496
|
-
3 => 'April and I\'m a fool'
|
497
|
-
}
|
498
|
-
|
499
|
-
@datasets.each do |data|
|
500
|
-
g.data(data[0], data[1])
|
501
|
-
end
|
502
|
-
g
|
503
|
-
end
|
504
|
-
end
|
505
|
-
|