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.
- data/History.txt +111 -0
- data/MIT-LICENSE +21 -0
- data/Manifest.txt +79 -0
- data/README.txt +40 -0
- data/Rakefile +55 -0
- 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/assets/plastik/blue.png +0 -0
- data/assets/plastik/green.png +0 -0
- data/assets/plastik/red.png +0 -0
- data/init.rb +2 -0
- data/lib/gruff.rb +27 -0
- data/lib/gruff/accumulator_bar.rb +27 -0
- data/lib/gruff/area.rb +58 -0
- data/lib/gruff/bar.rb +84 -0
- data/lib/gruff/bar_conversion.rb +46 -0
- data/lib/gruff/base.rb +1112 -0
- data/lib/gruff/bullet.rb +109 -0
- data/lib/gruff/deprecated.rb +39 -0
- data/lib/gruff/line.rb +105 -0
- data/lib/gruff/mini/bar.rb +32 -0
- data/lib/gruff/mini/legend.rb +77 -0
- data/lib/gruff/mini/pie.rb +36 -0
- data/lib/gruff/mini/side_bar.rb +35 -0
- data/lib/gruff/net.rb +142 -0
- data/lib/gruff/photo_bar.rb +100 -0
- data/lib/gruff/pie.rb +124 -0
- data/lib/gruff/scene.rb +209 -0
- data/lib/gruff/side_bar.rb +115 -0
- data/lib/gruff/side_stacked_bar.rb +74 -0
- data/lib/gruff/spider.rb +130 -0
- data/lib/gruff/stacked_area.rb +67 -0
- data/lib/gruff/stacked_bar.rb +54 -0
- data/lib/gruff/stacked_mixin.rb +23 -0
- data/rails_generators/gruff/gruff_generator.rb +63 -0
- data/rails_generators/gruff/templates/controller.rb +32 -0
- data/rails_generators/gruff/templates/functional_test.rb +24 -0
- data/test/gruff_test_case.rb +123 -0
- data/test/test_accumulator_bar.rb +50 -0
- data/test/test_area.rb +134 -0
- data/test/test_bar.rb +283 -0
- data/test/test_base.rb +8 -0
- data/test/test_bullet.rb +26 -0
- data/test/test_legend.rb +68 -0
- data/test/test_line.rb +513 -0
- data/test/test_mini_bar.rb +32 -0
- data/test/test_mini_pie.rb +20 -0
- data/test/test_mini_side_bar.rb +37 -0
- data/test/test_net.rb +230 -0
- data/test/test_photo.rb +41 -0
- data/test/test_pie.rb +154 -0
- data/test/test_scene.rb +100 -0
- data/test/test_side_bar.rb +12 -0
- data/test/test_sidestacked_bar.rb +89 -0
- data/test/test_spider.rb +216 -0
- data/test/test_stacked_area.rb +52 -0
- data/test/test_stacked_bar.rb +52 -0
- metadata +160 -0
data/test/test_base.rb
ADDED
data/test/test_bullet.rb
ADDED
@@ -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
|
data/test/test_legend.rb
ADDED
@@ -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
|