Added the Gruff library to the lib/ directory of the the rails folder, and the
[selectricity] / lib / gruff-0.2.8 / test / test_spider.rb
1 #!/usr/bin/ruby
2
3 require File.dirname(__FILE__) + "/gruff_test_case"
4
5 class TestGruffSpider < GruffTestCase
6
7   def setup
8     @datasets = [
9       [:Strength, [10]],
10       [:Dexterity, [16]],
11       [:Constitution, [12]],
12       [:Intelligence, [12]],
13       [:Wisdom, [10]],
14       ["Charisma", [16]],
15       ]
16
17 #     @datasets = [
18 #       [:Darren, [25]],
19 #       [:Chris, [80]],
20 #       [:Egbert, [22]],
21 #       [:Adam, [95]],
22 #       [:Bill, [90]],
23 #       ["Frank", [5]],
24 #       ["Zero", [0]],
25 #       ]
26   end
27   
28   def test_spider_graph
29     g = Gruff::Spider.new(20)
30     g.title = "Spider Graph Test"
31     @datasets.each do |data|
32       g.data(data[0], data[1])
33     end
34
35     # Default theme
36     g.write("test/output/spider_keynote.png")
37   end
38
39   def test_pie_graph_small
40     g = Gruff::Spider.new(20, 400)
41     g.title = "Visual Spider Graph Test Small"
42     @datasets.each do |data|
43       g.data(data[0], data[1])
44     end
45
46     # Default theme
47     g.write("test/output/spider_small.png")
48   end
49
50   def test_spider_graph_nearly_equal
51     g = Gruff::Spider.new(50)
52     g.title = "Spider Graph Nearly Equal"
53     
54     g.data(:Blake, [41])
55     g.data(:Aaron, [42])
56     g.data(:Grouch, [40])
57 #    g.data(:Snuffleupagus, [43])
58
59     g.write("test/output/spider_nearly_equal.png")
60   end
61
62   def test_pie_graph_equal
63     g = Gruff::Spider.new(50)
64     g.title = "Spider Graph Equal"
65         
66     g.data(:Bert, [41])
67     g.data(:Adam, [41])
68     g.data(:Joe, [41])
69
70     g.write("test/output/spider_equal.png")
71   end
72
73   def test_pie_graph_zero
74     g = Gruff::Spider.new(2)
75     g.title = "Pie Graph Two One Zero"
76         
77     g.data(:Bert, [0])
78     g.data(:Adam, [1])
79     g.data(:Sam,  [2])
80
81     g.write("test/output/spider_zero.png")
82   end
83
84   def test_wide
85     g = setup_basic_graph('800x400')
86     g.title = "Wide spider"
87     g.write("test/output/spider_wide.png")
88   end
89
90   def test_label_size
91     g = setup_basic_graph()
92     g.title = "Spider With Small Legend"
93     g.legend_font_size = 10
94     g.write("test/output/spider_legend.png")
95     
96     g = setup_basic_graph(400)
97     g.title = "Small spider With Small Legend"
98     g.legend_font_size = 10
99     g.write("test/output/spider_legend_small.png")
100   end
101  
102   def test_theme_37signals
103     g = Gruff::Spider.new(20)
104     g.title = "Spider Graph Test"
105     @datasets.each do |data|
106      g.data(data[0], data[1])
107     end
108
109     g.theme_37signals
110
111     # Default theme
112     g.write("test/output/spider_37signals.png")
113   end
114  
115   def test_no_axes
116     g = Gruff::Spider.new(20)
117     g.title = "Look ma, no axes"
118     g.hide_axes = true
119     @datasets.each do |data|
120      g.data(data[0], data[1])
121     end
122     g.write("test/output/spider_no_axes.png")
123
124   end
125  
126   def test_no_print
127     g = Gruff::Spider.new(20)
128     g.title = "Should not print"
129     g.hide_text = true
130     @datasets.each do |data|
131       g.data(data[0], data[1])
132     end
133     g.write("test/output/spider_no_print.png")
134   end
135  
136   def test_transparency
137     g = Gruff::Spider.new(20)
138     g.title = "Transparent background"
139     g.hide_text = true
140     g.transparent_background = true
141     g.hide_axes = true
142     @datasets.each do |data|
143       g.data(data[0], data[1])
144     end
145     g.write("test/output/spider_no_background.png")
146   end
147   
148   def test_overlay
149     g = Gruff::Spider.new(20)
150     g.title = "George (blue) vs Sarah (white)"
151     @datasets.each do |data|
152       g.data(data[0], data[1])
153     end
154     g.write("test/output/spider_overlay_1.png")
155     
156     g = Gruff::Spider.new(20)
157     g.title = "Transparent background"
158     g.hide_text = true
159     g.hide_axes = true
160     g.transparent_background = true
161     @datasets = [
162       [:Strength, [18]],
163       [:Dexterity, [10]],
164       [:Constitution, [18]],
165       [:Intelligence, [8]],
166       [:Wisdom, [14]],
167       ["Charisma", [4]],
168       ]   
169     @datasets.each do |data|
170       g.data(data[0], data[1])
171     end
172     g.marker_color = "#4F6EFF"
173     g.write("test/output/spider_overlay_2.png")
174   end  
175  
176   def test_lots_of_data
177     g = Gruff::Spider.new(10)
178     @datasets = [[:a, [1]], [:b, [5]], [:c, [3]], [:d, [9]], [:e, [4]],
179                  [:f, [7]], [:g, [0]], [:h, [4]], [:i, [6]], [:j, [0]],
180                  [:k, [4]], [:l, [8]]]
181    
182     @datasets.each do |data|
183       g.data(data[0], data[1])
184     end
185                  
186     g.title = "Sample Data"
187     g.write("test/output/spider_lots_of_data.png")
188   end
189   
190   def test_lots_of_data_with_large_names
191     g = Gruff::Spider.new(10)
192     @datasets = [[:anteaters, [1]], [:bulls, [5]], [:cats, [3]], [:dogs, [9]], [:elephants, [4]],
193                  [:frogs, [7]], [:giraffes, [0]], [:hamsters, [4]], [:iguanas, [6]], 
194                  [:jaguar, [0]], [:kangaroo, [4]], [:locust, [8]]]
195    
196     @datasets.each do |data|
197       g.data(data[0], data[1])
198     end
199                  
200     g.title = "Zoo Inventory"
201     g.write("test/output/spider_lots_of_data_normal_names.png")
202   end
203   
204
205 protected
206
207   def setup_basic_graph(size=800, max = 20)
208     g = Gruff::Spider.new(max, size)
209     g.title = "My Graph Title"
210     @datasets.each do |data|
211       g.data(data[0], data[1])
212     end
213     return g
214   end
215   
216 end

Benjamin Mako Hill || Want to submit a patch?