woodhull-gruff 0.3.5

Sign up to get free protection for your applications and to get access to all the features.
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 +1116 -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
@@ -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
@@ -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