schapht-gruff 0.3.5

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 (80) hide show
  1. data/History.txt +111 -0
  2. data/MIT-LICENSE +21 -0
  3. data/Manifest.txt +79 -0
  4. data/README.txt +40 -0
  5. data/Rakefile +55 -0
  6. data/assets/bubble.png +0 -0
  7. data/assets/city_scene/background/0000.png +0 -0
  8. data/assets/city_scene/background/0600.png +0 -0
  9. data/assets/city_scene/background/2000.png +0 -0
  10. data/assets/city_scene/clouds/cloudy.png +0 -0
  11. data/assets/city_scene/clouds/partly_cloudy.png +0 -0
  12. data/assets/city_scene/clouds/stormy.png +0 -0
  13. data/assets/city_scene/grass/default.png +0 -0
  14. data/assets/city_scene/haze/true.png +0 -0
  15. data/assets/city_scene/number_sample/1.png +0 -0
  16. data/assets/city_scene/number_sample/2.png +0 -0
  17. data/assets/city_scene/number_sample/default.png +0 -0
  18. data/assets/city_scene/sky/0000.png +0 -0
  19. data/assets/city_scene/sky/0200.png +0 -0
  20. data/assets/city_scene/sky/0400.png +0 -0
  21. data/assets/city_scene/sky/0600.png +0 -0
  22. data/assets/city_scene/sky/0800.png +0 -0
  23. data/assets/city_scene/sky/1000.png +0 -0
  24. data/assets/city_scene/sky/1200.png +0 -0
  25. data/assets/city_scene/sky/1400.png +0 -0
  26. data/assets/city_scene/sky/1500.png +0 -0
  27. data/assets/city_scene/sky/1700.png +0 -0
  28. data/assets/city_scene/sky/2000.png +0 -0
  29. data/assets/pc306715.jpg +0 -0
  30. data/assets/plastik/blue.png +0 -0
  31. data/assets/plastik/green.png +0 -0
  32. data/assets/plastik/red.png +0 -0
  33. data/init.rb +2 -0
  34. data/lib/gruff.rb +27 -0
  35. data/lib/gruff/accumulator_bar.rb +27 -0
  36. data/lib/gruff/area.rb +58 -0
  37. data/lib/gruff/bar.rb +84 -0
  38. data/lib/gruff/bar_conversion.rb +46 -0
  39. data/lib/gruff/base.rb +1112 -0
  40. data/lib/gruff/bullet.rb +109 -0
  41. data/lib/gruff/deprecated.rb +39 -0
  42. data/lib/gruff/line.rb +105 -0
  43. data/lib/gruff/mini/bar.rb +32 -0
  44. data/lib/gruff/mini/legend.rb +77 -0
  45. data/lib/gruff/mini/pie.rb +36 -0
  46. data/lib/gruff/mini/side_bar.rb +35 -0
  47. data/lib/gruff/net.rb +142 -0
  48. data/lib/gruff/photo_bar.rb +100 -0
  49. data/lib/gruff/pie.rb +124 -0
  50. data/lib/gruff/scene.rb +209 -0
  51. data/lib/gruff/side_bar.rb +115 -0
  52. data/lib/gruff/side_stacked_bar.rb +74 -0
  53. data/lib/gruff/spider.rb +130 -0
  54. data/lib/gruff/stacked_area.rb +67 -0
  55. data/lib/gruff/stacked_bar.rb +54 -0
  56. data/lib/gruff/stacked_mixin.rb +23 -0
  57. data/rails_generators/gruff/gruff_generator.rb +63 -0
  58. data/rails_generators/gruff/templates/controller.rb +32 -0
  59. data/rails_generators/gruff/templates/functional_test.rb +24 -0
  60. data/test/gruff_test_case.rb +123 -0
  61. data/test/test_accumulator_bar.rb +50 -0
  62. data/test/test_area.rb +134 -0
  63. data/test/test_bar.rb +283 -0
  64. data/test/test_base.rb +8 -0
  65. data/test/test_bullet.rb +26 -0
  66. data/test/test_legend.rb +68 -0
  67. data/test/test_line.rb +513 -0
  68. data/test/test_mini_bar.rb +32 -0
  69. data/test/test_mini_pie.rb +20 -0
  70. data/test/test_mini_side_bar.rb +37 -0
  71. data/test/test_net.rb +230 -0
  72. data/test/test_photo.rb +41 -0
  73. data/test/test_pie.rb +154 -0
  74. data/test/test_scene.rb +100 -0
  75. data/test/test_side_bar.rb +12 -0
  76. data/test/test_sidestacked_bar.rb +89 -0
  77. data/test/test_spider.rb +216 -0
  78. data/test/test_stacked_area.rb +52 -0
  79. data/test/test_stacked_bar.rb +52 -0
  80. metadata +160 -0
data/test/test_base.rb ADDED
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/ruby
2
+
3
+ require File.dirname(__FILE__) + "/gruff_test_case"
4
+
5
+ class TestGruffBase < GruffTestCase
6
+
7
+
8
+ end
@@ -0,0 +1,26 @@
1
+ # require File.dirname(__FILE__) + "/gruff_test_case"
2
+ #
3
+ # class TestGruffBullet < GruffTestCase
4
+ #
5
+ # def setup
6
+ # @data_args = [75, 100, {
7
+ # :target => 80,
8
+ # :low => 50,
9
+ # :high => 90
10
+ # }]
11
+ # end
12
+ #
13
+ # def test_bullet_graph
14
+ # g = Gruff::Bullet.new
15
+ # g.title = "Monthly Revenue"
16
+ # g.data *@data_args
17
+ # g.write("test/output/bullet_greyscale.png")
18
+ # end
19
+ #
20
+ # def test_no_options
21
+ # g = Gruff::Bullet.new
22
+ # g.data 127, 150
23
+ # g.write("test/output/bullet_no_options.png")
24
+ # end
25
+ #
26
+ # end
@@ -0,0 +1,68 @@
1
+ require File.dirname(__FILE__) + "/gruff_test_case"
2
+
3
+ class TestGruffLegend < GruffTestCase
4
+
5
+ def setup
6
+ @datasets = [
7
+ [:Jimmy, [25, 36, 86, 39, 25, 31, 79, 88]],
8
+ [:Charles, [80, 54, 67, 54, 68, 70, 90, 95]],
9
+ [:Julie, [22, 29, 35, 38, 36, 40, 46, 57]],
10
+ [:Jane, [95, 95, 95, 90, 85, 80, 88, 100]],
11
+ [:Philip, [90, 34, 23, 12, 78, 89, 98, 88]],
12
+ ["Arthur", [5, 10, 13, 11, 6, 16, 22, 32]],
13
+ ["Vincent", [5, 10, 13, 11, 6, 16, 22, 32]],
14
+ ["Jake", [5, 10, 13, 11, 6, 16, 22, 32]],
15
+ ["Stephen", [5, 10, 13, 11, 6, 16, 22, 32]],
16
+ ]
17
+
18
+ @sample_labels = {
19
+ 0 => '5/6',
20
+ 1 => '5/15',
21
+ 2 => '5/24',
22
+ 3 => '5/30',
23
+ 4 => '6/4',
24
+ 5 => '6/12',
25
+ 6 => '6/21',
26
+ 7 => '6/28',
27
+ }
28
+ end
29
+
30
+ def full_suite_for(name, type)
31
+ [800, 400].each do |width|
32
+ [nil, 4, 16, 30].each do |font_size|
33
+ g = type.new(width)
34
+ g.title = "Wrapped Legend Bar Test #{font_size}pts #{width}px"
35
+ g.labels = @sample_labels
36
+ 0xEFD250.step(0xFF0000, 60) do |num|
37
+ g.colors << "#%x" % num
38
+ end
39
+
40
+ @datasets.each do |data|
41
+ g.data(data[0], data[1])
42
+ end
43
+
44
+ g.legend_font_size = font_size unless font_size.nil?
45
+ g.write("test/output/#{name}_wrapped_legend_#{font_size}_#{width}.png")
46
+ end
47
+ end
48
+ end
49
+
50
+ def test_bar_legend_wrap
51
+ full_suite_for(:bar, Gruff::Bar)
52
+ end
53
+
54
+ def test_pie_legend_wrap
55
+ full_suite_for(:pie, Gruff::Pie)
56
+ end
57
+
58
+ def test_more_than_two_lines_of_legends
59
+ @datasets = @datasets + [[:Julie2, [22, 29, 35, 38, 36, 40, 46, 57]],
60
+ [:Jane2, [95, 95, 95, 90, 85, 80, 88, 100]],
61
+ [:Philip2, [90, 34, 23, 12, 78, 89, 98, 88]],
62
+ ["Arthur2", [5, 10, 13, 11, 6, 16, 22, 32]],
63
+ ["Vincent2", [5, 10, 13, 11, 6, 16, 22, 32]],
64
+ ["Jake2", [5, 10, 13, 11, 6, 16, 22, 32]],
65
+ ["Stephen2", [5, 10, 13, 11, 6, 16, 22, 32]]]
66
+ full_suite_for(:bar2, Gruff::Bar)
67
+ end
68
+ end
data/test/test_line.rb ADDED
@@ -0,0 +1,513 @@
1
+ #!/usr/bin/ruby
2
+
3
+ require File.dirname(__FILE__) + "/gruff_test_case"
4
+
5
+ class TestGruffLine < GruffTestCase
6
+
7
+ # TODO Delete old output files once when starting tests
8
+
9
+ def test_should_render_with_transparent_theme
10
+ g = Gruff::Line.new(400)
11
+ g.title = "Transparent Background"
12
+ g.theme = {
13
+ :colors => ['black', 'grey'],
14
+ :marker_color => 'grey',
15
+ :font_color => 'black',
16
+ :background_colors => 'transparent'
17
+ }
18
+
19
+ g.labels = {
20
+ 0 => '5/6',
21
+ 1 => '5/15',
22
+ 2 => '5/24',
23
+ 3 => '5/30',
24
+ }
25
+ g.data(:apples, [-1, 0, 4, -4])
26
+ g.data(:peaches, [10, 8, 6, 3])
27
+ g.write("test/output/line_transparent.png")
28
+ end
29
+
30
+ def test_line_graph_with_themes
31
+ line_graph_with_themes()
32
+ line_graph_with_themes(400)
33
+ end
34
+
35
+ def test_one_value
36
+ g = Gruff::Line.new
37
+ g.title = "One Value"
38
+ g.labels = {
39
+ 0 => '1',
40
+ 1 => '2'
41
+ }
42
+ g.data('one', 1)
43
+
44
+ g.write("test/output/line_one_value.png")
45
+ end
46
+
47
+ def test_one_value_array
48
+ g = Gruff::Line.new
49
+ g.title = "One Value in an Array"
50
+ g.labels = {
51
+ 0 => '1',
52
+ 1 => '2'
53
+ }
54
+ g.data('one', [1])
55
+
56
+ g.write("test/output/line_one_value_array.png")
57
+ end
58
+
59
+
60
+ def test_should_not_hang_with_0_0_100
61
+ g = Gruff::Line.new(320)
62
+ g.title = "Hang Value Graph Test"
63
+ g.data('test', [0,0,100])
64
+
65
+ g.write("test/output/line_hang_value.png")
66
+ end
67
+
68
+ # TODO
69
+ # def test_fix_crash
70
+ # g = Gruff::Line.new(370)
71
+ # g.title = "Crash Test"
72
+ # g.data "ichi", [5]
73
+ # g.data "ni", [0]
74
+ # g.data "san", [0]
75
+ # g.data "shi", [0]
76
+ # g.write("test/output/line_crash_fix_test.png")
77
+ # end
78
+
79
+
80
+ def test_line_small_values
81
+ @datasets = [
82
+ [:small, [0.1, 0.14356, 0.0, 0.5674839, 0.456]],
83
+ [:small2, [0.2, 0.3, 0.1, 0.05, 0.9]]
84
+ ]
85
+
86
+ g = Gruff::Line.new
87
+ g.title = "Small Values Line Graph Test"
88
+ @datasets.each do |data|
89
+ g.data(data[0], data[1])
90
+ end
91
+ g.write("test/output/line_small.png")
92
+
93
+ g = Gruff::Line.new(400)
94
+ g.title = "Small Values Line Graph Test 400px"
95
+ @datasets.each do |data|
96
+ g.data(data[0], data[1])
97
+ end
98
+ g.write("test/output/line_small_small.png")
99
+ end
100
+
101
+ def test_line_starts_with_zero
102
+ @datasets = [
103
+ [:first0, [0, 5, 10, 8, 18]],
104
+ [:normal, [1, 2, 3, 4, 5]]
105
+ ]
106
+
107
+ g = Gruff::Line.new
108
+ g.title = "Small Values Line Graph Test"
109
+ @datasets.each do |data|
110
+ g.data(data[0], data[1])
111
+ end
112
+ g.write("test/output/line_small_zero.png")
113
+
114
+ g = Gruff::Line.new(400)
115
+ g.title = "Small Values Line Graph Test 400px"
116
+ @datasets.each do |data|
117
+ g.data(data[0], data[1])
118
+ end
119
+ g.write("test/output/line_small_small_zero.png")
120
+ end
121
+
122
+
123
+ def test_line_large_values
124
+ @datasets = [
125
+ [:large, [100_005, 35_000, 28_000, 27_000]],
126
+ [:large2, [35_000, 28_000, 27_000, 100_005]],
127
+ [:large3, [28_000, 27_000, 100_005, 35_000]],
128
+ [:large4, [1_238, 39_092, 27_938, 48_876]]
129
+ ]
130
+
131
+ g = Gruff::Line.new
132
+ g.title = "Very Large Values Line Graph Test"
133
+ g.baseline_value = 50_000
134
+ g.baseline_color = 'green'
135
+ @datasets.each do |data|
136
+ g.data(data[0], data[1])
137
+ end
138
+
139
+ g.write("test/output/line_large.png")
140
+ end
141
+
142
+ # def test_long_title
143
+ #
144
+ # end
145
+ #
146
+ # def test_add_colors
147
+ #
148
+ # end
149
+ #
150
+ # def test_request_too_many_colors
151
+ #
152
+ # end
153
+ #
154
+ # def test_add_data
155
+ #
156
+ # end
157
+
158
+ def test_many_datapoints
159
+ g = Gruff::Line.new
160
+ g.title = "Many Multi-Line Graph Test"
161
+ g.labels = {
162
+ 0 => 'June',
163
+ 10 => 'July',
164
+ 30 => 'August',
165
+ 50 => 'September',
166
+ }
167
+ g.data('many points', (0..50).collect {|i| rand(100) })
168
+ g.x_axis_label = "Months"
169
+
170
+ # Default theme
171
+ g.write("test/output/line_many.png")
172
+ end
173
+
174
+
175
+ def test_similar_high_end_values
176
+ @dataset = %w(29.43 29.459 29.498 29.53 29.548 29.589 29.619 29.66 29.689 29.849 29.878 29.74 29.769 29.79 29.808 29.828).collect {|i| i.to_f}
177
+
178
+ g = Gruff::Line.new
179
+ g.title = "Similar High End Values Test"
180
+ g.data('similar points', @dataset )
181
+ g.write("test/output/line_similar_high_end_values.png")
182
+
183
+ g = Gruff::Line.new
184
+ g.title = "Similar High End Values With Floor"
185
+ g.data('similar points', @dataset )
186
+ g.minimum_value = 0
187
+ g.y_axis_label = "Barometric Pressure"
188
+ g.write("test/output/line_similar_high_end_values_with_floor.png")
189
+ end
190
+
191
+ def test_many_lines_graph_small
192
+ g = Gruff::Line.new(400)
193
+ g.title = "Many Values Line Test 400px"
194
+ g.labels = {
195
+ 0 => '5/6',
196
+ 10 => '5/15',
197
+ 20 => '5/24',
198
+ 30 => '5/30',
199
+ 40 => '6/4',
200
+ 50 => '6/16'
201
+ }
202
+ %w{jimmy jane philip arthur julie bert}.each do |student_name|
203
+ g.data(student_name, (0..50).collect { |i| rand 100 })
204
+ end
205
+
206
+ # Default theme
207
+ g.write("test/output/line_many_lines_small.png")
208
+ end
209
+
210
+ def test_graph_tiny
211
+ g = Gruff::Line.new(300)
212
+ g.title = "Tiny Test 300px"
213
+ g.labels = {
214
+ 0 => '5/6',
215
+ 10 => '5/15',
216
+ 20 => '5/24',
217
+ 30 => '5/30',
218
+ 40 => '6/4',
219
+ 50 => '6/16'
220
+ }
221
+ %w{jimmy jane philip arthur julie bert}.each do |student_name|
222
+ g.data(student_name, (0..50).collect { |i| rand 100 })
223
+ end
224
+
225
+ # Default theme
226
+ g.write("test/output/line_tiny.png")
227
+ end
228
+
229
+ def test_no_data
230
+ g = Gruff::Line.new(400)
231
+ g.title = "No Data"
232
+ # Default theme
233
+ g.write("test/output/line_no_data.png")
234
+
235
+ g = Gruff::Line.new(400)
236
+ g.title = "No Data Title"
237
+ g.no_data_message = 'There is no data'
238
+ g.write("test/output/line_no_data_msg.png")
239
+ end
240
+
241
+
242
+ def test_all_zeros
243
+ g = Gruff::Line.new(400)
244
+ g.title = "All Zeros"
245
+
246
+ g.data(:gus, [0,0,0,0])
247
+
248
+ # Default theme
249
+ g.write("test/output/line_no_data_other.png")
250
+ end
251
+
252
+
253
+ def test_some_nil_points
254
+ g = Gruff::Line.new
255
+ g.title = "Some Nil Points"
256
+
257
+ @datasets = [
258
+ [:data1, [1, 2, 3, nil, 3, 5, 6]],
259
+ [:data2, [5, nil, nil, nil, nil, nil, 5]],
260
+ [:data3, [4, nil, 2, 1, 0]],
261
+ [:data4, [nil, nil, 3, 1, 2]]
262
+ ]
263
+
264
+ @datasets.each do |data|
265
+ g.data(*data)
266
+ end
267
+
268
+ # Default theme
269
+ g.write("test/output/line_some_nil_points.png")
270
+ end
271
+
272
+ def test_no_title
273
+ g = Gruff::Line.new(400)
274
+ g.labels = @labels
275
+ @datasets.each do |data|
276
+ g.data(data[0], data[1])
277
+ end
278
+
279
+ g.write("test/output/line_no_title.png")
280
+ end
281
+
282
+ def test_no_line_markers
283
+ g = setup_basic_graph(400)
284
+ g.title = "No Line Markers"
285
+ g.hide_line_markers = true
286
+ g.write("test/output/line_no_line_markers.png")
287
+ end
288
+
289
+ def test_no_legend
290
+ g = setup_basic_graph(400)
291
+ g.title = "No Legend"
292
+ g.hide_legend = true
293
+ g.write("test/output/line_no_legend.png")
294
+ end
295
+
296
+ def test_nothing_but_the_graph
297
+ g = setup_basic_graph(400)
298
+ g.title = "THIS TITLE SHOULD NOT DISPLAY!!!"
299
+ g.hide_line_markers = true
300
+ g.hide_legend = true
301
+ g.hide_title = true
302
+ g.write("test/output/line_nothing_but_the_graph.png")
303
+ end
304
+
305
+ def test_baseline_larger_than_data
306
+ g = setup_basic_graph(400)
307
+ g.title = "Baseline Larger Than Data"
308
+ g.baseline_value = 150
309
+ g.write("test/output/line_large_baseline.png")
310
+ end
311
+
312
+
313
+ def test_hide_dots
314
+ g = setup_basic_graph(400)
315
+ g.title = "Hide Dots"
316
+ g.hide_dots = true
317
+ g.write("test/output/line_hide_dots.png")
318
+ end
319
+
320
+ def test_hide_lines
321
+ g = setup_basic_graph(400)
322
+ g.title = "Hide Lines"
323
+ g.hide_lines = true
324
+ g.write("test/output/line_hide_lines.png")
325
+ end
326
+
327
+ def test_wide_graph
328
+ g = setup_basic_graph('800x400')
329
+ g.title = "Wide Graph"
330
+ g.write("test/output/line_wide_graph.png")
331
+
332
+ g = setup_basic_graph('400x200')
333
+ g.title = "Wide Graph Small"
334
+ g.write("test/output/line_wide_graph_small.png")
335
+ end
336
+
337
+ def test_negative
338
+ g = setup_pos_neg(800)
339
+ g.write("test/output/line_pos_neg.png")
340
+
341
+ g = setup_pos_neg(400)
342
+ g.title = 'Pos/Neg Line Test Small'
343
+ g.write("test/output/line_pos_neg_400.png")
344
+ end
345
+
346
+ def test_all_negative
347
+ g = setup_all_neg(800)
348
+ g.write("test/output/line_all_neg.png")
349
+
350
+ g = setup_all_neg(400)
351
+ g.title = 'All Neg Line Test Small'
352
+ g.write("test/output/line_all_neg_400.png")
353
+ end
354
+
355
+ def test_many_numbers
356
+ g = Gruff::Line.new('400x170')
357
+ g.title = "Line Test, Many Numbers"
358
+
359
+ data = [
360
+ { :date => '01',
361
+ :wpm => 0,
362
+ :errors => 0,
363
+ :accuracy => 0 },
364
+ { :date => '02',
365
+ :wpm => 10,
366
+ :errors => 2,
367
+ :accuracy => 80 },
368
+ { :date => '03',
369
+ :wpm => 15,
370
+ :errors => 0,
371
+ :accuracy => 100 },
372
+ { :date => '04',
373
+ :wpm => 16,
374
+ :errors => 2,
375
+ :accuracy => 87 },
376
+ { :date => '05',
377
+ :wpm => nil,
378
+ :errors => nil,
379
+ :accuracy => nil },
380
+ { :date => '06',
381
+ :wpm => 18,
382
+ :errors => 1,
383
+ :accuracy => 94 },
384
+ { :date => '07'},
385
+ { :date => '08' },
386
+ { :date => '09',
387
+ :wpm => 21,
388
+ :errors => 1,
389
+ :accuracy => 95 },
390
+ { :date => '10'},
391
+ { :date => '11'},
392
+ { :date => '12'},
393
+ { :date => '13'},
394
+ { :date => '14'},
395
+ { :date => '15'},
396
+ { :date => '16'},
397
+ { :date => '17'},
398
+ { :date => '18'},
399
+ { :date => '19',
400
+ :wpm => 28,
401
+ :errors => 5,
402
+ :accuracy => 82 },
403
+ { :date => '20'},
404
+ { :date => '21'},
405
+ { :date => '22'},
406
+ { :date => '23'},
407
+ { :date => '24'},
408
+ { :date => '25'},
409
+ { :date => '26'},
410
+ { :date => '27',
411
+ :wpm => 37,
412
+ :errors => 3,
413
+ :accuracy => 92 },
414
+ ]
415
+
416
+ [:wpm, :errors, :accuracy].each do |field|
417
+ g.data(field.to_s, data.collect {|d| d[field] })
418
+ end
419
+
420
+ labels = Hash.new
421
+ data.each_with_index do |d, i|
422
+ labels[i] = d[:date]
423
+ end
424
+ g.labels = labels
425
+
426
+ g.write('test/output/line_many_numbers.png')
427
+ end
428
+
429
+ def test_no_hide_line_no_labels
430
+ g = Gruff::Line.new
431
+ g.title = "No Hide Line No Labels"
432
+ @datasets.each do |data|
433
+ g.data(data[0], data[1])
434
+ end
435
+ g.hide_line_markers = false
436
+ g.write('test/output/line_no_hide.png')
437
+ end
438
+
439
+ protected
440
+
441
+ # TODO Reset data after each theme
442
+ def line_graph_with_themes(size=nil)
443
+ g = Gruff::Line.new(size)
444
+ g.title = "Multi-Line Graph Test #{size}"
445
+ g.labels = @labels
446
+ g.baseline_value = 90
447
+ @datasets.each do |data|
448
+ g.data(data[0], data[1])
449
+ end
450
+ # Default theme
451
+ g.write("test/output/line_theme_keynote_#{size}.png")
452
+
453
+ g = Gruff::Line.new(size)
454
+ g.title = "Multi-Line Graph Test #{size}"
455
+ g.labels = @labels
456
+ g.baseline_value = 90
457
+ g.theme_37signals
458
+ @datasets.each do |data|
459
+ g.data(data[0], data[1])
460
+ end
461
+ g.write("test/output/line_theme_37signals_#{size}.png")
462
+
463
+ g = Gruff::Line.new(size)
464
+ g.title = "Multi-Line Graph Test #{size}"
465
+ g.labels = @labels
466
+ g.baseline_value = 90
467
+ g.theme_rails_keynote
468
+ @datasets.each do |data|
469
+ g.data(data[0], data[1])
470
+ end
471
+ g.write("test/output/line_theme_rails_keynote_#{size}.png")
472
+
473
+ g = Gruff::Line.new(size)
474
+ g.title = "Multi-Line Graph Test #{size}"
475
+ g.labels = @labels
476
+ g.baseline_value = 90
477
+ g.theme_odeo
478
+ @datasets.each do |data|
479
+ g.data(data[0], data[1])
480
+ end
481
+ g.write("test/output/line_theme_odeo_#{size}.png")
482
+ end
483
+
484
+ def setup_pos_neg(size=800)
485
+ g = Gruff::Line.new(size)
486
+ g.title = "Pos/Neg Line Graph Test"
487
+ g.labels = {
488
+ 0 => '5/6',
489
+ 1 => '5/15',
490
+ 2 => '5/24',
491
+ 3 => '5/30',
492
+ }
493
+ g.data(:apples, [-1, 0, 4, -4])
494
+ g.data(:peaches, [10, 8, 6, 3])
495
+ return g
496
+ end
497
+
498
+
499
+ def setup_all_neg(size=800)
500
+ g = Gruff::Line.new(size)
501
+ g.title = "All Neg Line Graph Test"
502
+ g.labels = {
503
+ 0 => '5/6',
504
+ 1 => '5/15',
505
+ 2 => '5/24',
506
+ 3 => '5/30',
507
+ }
508
+ g.data(:apples, [-1, -5, -20, -4])
509
+ g.data(:peaches, [-10, -8, -6, -3])
510
+ g
511
+ end
512
+
513
+ end