gruff 0.3.7 → 0.4.0

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 (540) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +2 -1
  3. data/.travis.yml +6 -0
  4. data/Gemfile +2 -8
  5. data/History.txt +76 -0
  6. data/MIT-LICENSE +3 -2
  7. data/README.md +96 -6
  8. data/RELEASE.md +92 -0
  9. data/Rakefile +203 -23
  10. data/gruff.gemspec +13 -10
  11. data/lib/gruff.rb +8 -7
  12. data/lib/gruff/accumulator_bar.rb +4 -13
  13. data/lib/gruff/area.rb +6 -13
  14. data/lib/gruff/bar.rb +24 -3
  15. data/lib/gruff/bar_conversion.rb +31 -31
  16. data/lib/gruff/base.rb +310 -267
  17. data/lib/gruff/bezier.rb +46 -0
  18. data/lib/gruff/bullet.rb +3 -1
  19. data/lib/gruff/dot.rb +56 -44
  20. data/lib/gruff/line.rb +83 -69
  21. data/lib/gruff/net.rb +7 -9
  22. data/lib/gruff/pie.rb +2 -4
  23. data/lib/gruff/scatter.rb +25 -29
  24. data/lib/gruff/side_bar.rb +54 -37
  25. data/lib/gruff/side_stacked_bar.rb +25 -5
  26. data/lib/gruff/spider.rb +22 -21
  27. data/lib/gruff/themes.rb +102 -0
  28. data/lib/gruff/version.rb +1 -1
  29. data/test/gruff_test_case.rb +68 -38
  30. data/test/image_compare.rb +58 -0
  31. data/test/output/accum_bar.png +0 -0
  32. data/test/output/area_keynote.png +0 -0
  33. data/test/output/area_keynote_small.png +0 -0
  34. data/test/output/area_many.png +0 -0
  35. data/test/output/area_many_areas_small.png +0 -0
  36. data/test/output/area_tiny.png +0 -0
  37. data/test/output/area_wide.png +0 -0
  38. data/test/output/bar2_wrapped_legend_16_400.png +0 -0
  39. data/test/output/bar2_wrapped_legend_16_800.png +0 -0
  40. data/test/output/bar2_wrapped_legend_30_400.png +0 -0
  41. data/test/output/bar2_wrapped_legend_30_800.png +0 -0
  42. data/test/output/bar2_wrapped_legend_4_400.png +0 -0
  43. data/test/output/bar2_wrapped_legend_4_800.png +0 -0
  44. data/test/output/bar2_wrapped_legend__400.png +0 -0
  45. data/test/output/bar2_wrapped_legend__800.png +0 -0
  46. data/test/output/bar_background_gradient_bottom_top.png +0 -0
  47. data/test/output/bar_background_gradient_left_right.png +0 -0
  48. data/test/output/bar_background_gradient_right_left.png +0 -0
  49. data/test/output/bar_background_gradient_top_bottom.png +0 -0
  50. data/test/output/bar_background_gradient_topleft_bottomright.png +0 -0
  51. data/test/output/bar_background_gradient_topright_bottomleft.png +0 -0
  52. data/test/output/bar_formatted_numbers.png +0 -0
  53. data/test/output/bar_keynote.png +0 -0
  54. data/test/output/bar_keynote_small.png +0 -0
  55. data/test/output/bar_long_legend_text.png +0 -0
  56. data/test/output/bar_manual_colors.png +0 -0
  57. data/test/output/bar_marker_shadow.png +0 -0
  58. data/test/output/bar_nearly_zero_max_10.png +0 -0
  59. data/test/output/bar_no_legend.png +0 -0
  60. data/test/output/bar_no_line_markers.png +0 -0
  61. data/test/output/bar_no_title.png +0 -0
  62. data/test/output/bar_no_title_or_legend.png +0 -0
  63. data/test/output/bar_odeo.png +0 -0
  64. data/test/output/bar_one_value.png +0 -0
  65. data/test/output/bar_pos_neg.png +0 -0
  66. data/test/output/bar_rails_keynote.png +0 -0
  67. data/test/output/bar_set_absolute_trunc.png +0 -0
  68. data/test/output/bar_set_label_stagger_height.png +0 -0
  69. data/test/output/bar_set_legend_box_size_lg.png +0 -0
  70. data/test/output/bar_set_legend_box_size_sm.png +0 -0
  71. data/test/output/bar_set_marker.png +0 -0
  72. data/test/output/bar_set_trailing_dots_trunc.png +0 -0
  73. data/test/output/bar_spacing_full.png +0 -0
  74. data/test/output/bar_spacing_half.png +0 -0
  75. data/test/output/bar_spacing_none.png +0 -0
  76. data/test/output/bar_tall_graph.png +0 -0
  77. data/test/output/bar_tall_graph_small.png +0 -0
  78. data/test/output/bar_themed.png +0 -0
  79. data/test/output/bar_title_margin.png +0 -0
  80. data/test/output/bar_value_labels.png +0 -0
  81. data/test/output/bar_wide_graph.png +0 -0
  82. data/test/output/bar_wide_graph_small.png +0 -0
  83. data/test/output/bar_wrapped_legend_16_400.png +0 -0
  84. data/test/output/bar_wrapped_legend_16_800.png +0 -0
  85. data/test/output/bar_wrapped_legend_30_400.png +0 -0
  86. data/test/output/bar_wrapped_legend_30_800.png +0 -0
  87. data/test/output/bar_wrapped_legend_4_400.png +0 -0
  88. data/test/output/bar_wrapped_legend_4_800.png +0 -0
  89. data/test/output/bar_wrapped_legend__400.png +0 -0
  90. data/test/output/bar_wrapped_legend__800.png +0 -0
  91. data/test/output/bar_x_y_labels.png +0 -0
  92. data/test/output/bar_y_increment_1.png +0 -0
  93. data/test/output/bar_y_increment_2.0.png +0 -0
  94. data/test/output/bar_y_increment_20.png +0 -0
  95. data/test/output/bar_y_increment_5.png +0 -0
  96. data/test/output/bar_zero_marker_count.png +0 -0
  97. data/test/output/bar_zero_spacing.png +0 -0
  98. data/test/output/bezier.png +0 -0
  99. data/test/output/bezier_2.png +0 -0
  100. data/test/output/bezier_3.png +0 -0
  101. data/test/output/bullet_greyscale.png +0 -0
  102. data/test/output/bullet_no_options.png +0 -0
  103. data/test/output/dot.png +0 -0
  104. data/test/output/dot_manual_colors.png +0 -0
  105. data/test/output/dot_nearly_zero_max_10.png +0 -0
  106. data/test/output/dot_no_legend.png +0 -0
  107. data/test/output/dot_no_line_markers.png +0 -0
  108. data/test/output/dot_no_title.png +0 -0
  109. data/test/output/dot_no_title_or_legend.png +0 -0
  110. data/test/output/dot_one_value.png +0 -0
  111. data/test/output/dot_pos_neg.png +0 -0
  112. data/test/output/dot_set_legend_box_size_lg.png +0 -0
  113. data/test/output/dot_set_legend_box_size_sm.png +0 -0
  114. data/test/output/dot_set_marker.png +0 -0
  115. data/test/output/dot_small.png +0 -0
  116. data/test/output/dot_tall_graph.png +0 -0
  117. data/test/output/dot_tall_graph_small.png +0 -0
  118. data/test/output/dot_themed.png +0 -0
  119. data/test/output/dot_wide_graph.png +0 -0
  120. data/test/output/dot_wide_graph_small.png +0 -0
  121. data/test/output/dot_x_y_labels.png +0 -0
  122. data/test/output/dot_y_increment_1.png +0 -0
  123. data/test/output/dot_y_increment_2.0.png +0 -0
  124. data/test/output/dot_y_increment_20.png +0 -0
  125. data/test/output/dot_y_increment_5.png +0 -0
  126. data/test/output/enhancements-1.png +0 -0
  127. data/test/output/enhancements.png +0 -0
  128. data/test/output/line_all_neg.png +0 -0
  129. data/test/output/line_all_neg_400.png +0 -0
  130. data/test/output/line_all_neg_no_max.png +0 -0
  131. data/test/output/line_baseline.png +0 -0
  132. data/test/output/line_hang_value.png +0 -0
  133. data/test/output/line_hide_dots.png +0 -0
  134. data/test/output/line_hide_lines.png +0 -0
  135. data/test/output/line_jruby_error.png +0 -0
  136. data/test/output/line_large.png +0 -0
  137. data/test/output/line_large_baseline.png +0 -0
  138. data/test/output/line_legend_at_bottom.png +0 -0
  139. data/test/output/line_many.png +0 -0
  140. data/test/output/line_many_lines_small.png +0 -0
  141. data/test/output/line_many_numbers.png +0 -0
  142. data/test/output/line_marker_label_accuracy.png +0 -0
  143. data/test/output/line_more_sets_than_colors.png +0 -0
  144. data/test/output/line_no_data.png +0 -0
  145. data/test/output/line_no_data_msg.png +0 -0
  146. data/test/output/line_no_data_other.png +0 -0
  147. data/test/output/line_no_hide.png +0 -0
  148. data/test/output/line_no_legend.png +0 -0
  149. data/test/output/line_no_line_markers.png +0 -0
  150. data/test/output/line_no_title.png +0 -0
  151. data/test/output/line_nothing_but_the_graph.png +0 -0
  152. data/test/output/line_one_value.png +0 -0
  153. data/test/output/line_one_value_array.png +0 -0
  154. data/test/output/line_pos_neg.png +0 -0
  155. data/test/output/line_pos_neg_400.png +0 -0
  156. data/test/output/line_similar_high_end_values.png +0 -0
  157. data/test/output/line_similar_high_end_values_with_floor.png +0 -0
  158. data/test/output/line_small_small_zero.png +0 -0
  159. data/test/output/line_small_values.png +0 -0
  160. data/test/output/line_small_values_small.png +0 -0
  161. data/test/output/line_small_zero.png +0 -0
  162. data/test/output/line_some_nil_points.png +0 -0
  163. data/test/output/line_theme_37signals_.png +0 -0
  164. data/test/output/line_theme_37signals_400.png +0 -0
  165. data/test/output/line_theme_keynote_.png +0 -0
  166. data/test/output/line_theme_keynote_400.png +0 -0
  167. data/test/output/line_theme_odeo_.png +0 -0
  168. data/test/output/line_theme_odeo_400.png +0 -0
  169. data/test/output/line_theme_rails_keynote_.png +0 -0
  170. data/test/output/line_theme_rails_keynote_400.png +0 -0
  171. data/test/output/line_tiny.png +0 -0
  172. data/test/output/line_transparent.png +0 -0
  173. data/test/output/line_very_small.png +0 -0
  174. data/test/output/line_wide_graph.png +0 -0
  175. data/test/output/line_wide_graph_small.png +0 -0
  176. data/test/output/line_xy.png +0 -0
  177. data/test/output/line_xy_pairs.png +0 -0
  178. data/test/output/line_y_axis_increment.png +0 -0
  179. data/test/output/mini_bar.png +0 -0
  180. data/test/output/mini_pie.png +0 -0
  181. data/test/output/mini_pie_right_legend.png +0 -0
  182. data/test/output/mini_side_bar.png +0 -0
  183. data/test/output/mini_side_bar_multi_color.png +0 -0
  184. data/test/output/net_dots_tiny.png +0 -0
  185. data/test/output/net_large.png +0 -0
  186. data/test/output/net_many.png +0 -0
  187. data/test/output/net_many_nets_small.png +0 -0
  188. data/test/output/net_no_data.png +0 -0
  189. data/test/output/net_no_data_msg.png +0 -0
  190. data/test/output/net_no_data_other.png +0 -0
  191. data/test/output/net_no_legend.png +0 -0
  192. data/test/output/net_no_net_markers.png +0 -0
  193. data/test/output/net_no_title.png +0 -0
  194. data/test/output/net_nothing_but_the_graph.png +0 -0
  195. data/test/output/net_similar_high_end_values.png +0 -0
  196. data/test/output/net_small.png +0 -0
  197. data/test/output/net_small_small.png +0 -0
  198. data/test/output/net_small_small_zero.png +0 -0
  199. data/test/output/net_small_zero.png +0 -0
  200. data/test/output/net_wide_graph.png +0 -0
  201. data/test/output/net_wide_graph_small.png +0 -0
  202. data/test/output/pie_equal.png +0 -0
  203. data/test/output/pie_grey.png +0 -0
  204. data/test/output/pie_keynote.png +0 -0
  205. data/test/output/pie_keynote_small.png +0 -0
  206. data/test/output/pie_legend.png +0 -0
  207. data/test/output/pie_legend_small.png +0 -0
  208. data/test/output/pie_nearly_equal.png +0 -0
  209. data/test/output/pie_one_val.png +0 -0
  210. data/test/output/pie_pastel.png +0 -0
  211. data/test/output/pie_simple.png +0 -0
  212. data/test/output/pie_wide.png +0 -0
  213. data/test/output/pie_wrapped_legend_16_400.png +0 -0
  214. data/test/output/pie_wrapped_legend_16_800.png +0 -0
  215. data/test/output/pie_wrapped_legend_30_400.png +0 -0
  216. data/test/output/pie_wrapped_legend_30_800.png +0 -0
  217. data/test/output/pie_wrapped_legend_4_400.png +0 -0
  218. data/test/output/pie_wrapped_legend_4_800.png +0 -0
  219. data/test/output/pie_wrapped_legend__400.png +0 -0
  220. data/test/output/pie_wrapped_legend__800.png +0 -0
  221. data/test/output/pie_zero.png +0 -0
  222. data/test/output/scatter_all_neg.png +0 -0
  223. data/test/output/scatter_all_neg_400.png +0 -0
  224. data/test/output/scatter_basic.png +0 -0
  225. data/test/output/scatter_many.png +0 -0
  226. data/test/output/scatter_no_data.png +0 -0
  227. data/test/output/scatter_no_data_msg.png +0 -0
  228. data/test/output/scatter_no_data_other.png +0 -0
  229. data/test/output/scatter_no_hide.png +0 -0
  230. data/test/output/scatter_no_labels.png +0 -0
  231. data/test/output/scatter_no_legend.png +0 -0
  232. data/test/output/scatter_no_line_markers.png +0 -0
  233. data/test/output/scatter_no_title.png +0 -0
  234. data/test/output/scatter_nothing_but_the_graph.png +0 -0
  235. data/test/output/scatter_pos_neg.png +0 -0
  236. data/test/output/scatter_pos_neg_400.png +0 -0
  237. data/test/output/scatter_wide_graph.png +0 -0
  238. data/test/output/scatter_wide_graph_small.png +0 -0
  239. data/test/output/scene_hazy_night.png +0 -0
  240. data/test/output/scene_not_hazy_day.png +0 -0
  241. data/test/output/scene_partly_cloudy_day.png +0 -0
  242. data/test/output/scene_stormy_day.png +0 -0
  243. data/test/output/scene_stormy_night.png +0 -0
  244. data/test/output/side_bar.png +0 -0
  245. data/test/output/side_bar_data_range.png +0 -0
  246. data/test/output/side_bar_labels.png +0 -0
  247. data/test/output/side_bar_spacing_full.png +0 -0
  248. data/test/output/side_bar_spacing_half.png +0 -0
  249. data/test/output/side_bar_spacing_none.png +0 -0
  250. data/test/output/side_stacked_bar_keynote.png +0 -0
  251. data/test/output/side_stacked_bar_keynote_small.png +0 -0
  252. data/test/output/side_stacked_bar_labels.png +0 -0
  253. data/test/output/side_stacked_bar_long_label.png +0 -0
  254. data/test/output/side_stacked_bar_wide.png +0 -0
  255. data/test/output/spider_37signals.png +0 -0
  256. data/test/output/spider_equal.png +0 -0
  257. data/test/output/spider_keynote.png +0 -0
  258. data/test/output/spider_legend.png +0 -0
  259. data/test/output/spider_legend_small.png +0 -0
  260. data/test/output/spider_lots_of_data.png +0 -0
  261. data/test/output/spider_lots_of_data_normal_names.png +0 -0
  262. data/test/output/spider_nearly_equal.png +0 -0
  263. data/test/output/spider_no_axes.png +0 -0
  264. data/test/output/spider_no_background.png +0 -0
  265. data/test/output/spider_no_print.png +0 -0
  266. data/test/output/spider_overlay_1.png +0 -0
  267. data/test/output/spider_overlay_2.png +0 -0
  268. data/test/output/spider_rotation.png +0 -0
  269. data/test/output/spider_small.png +0 -0
  270. data/test/output/spider_wide.png +0 -0
  271. data/test/output/spider_zero.png +0 -0
  272. data/test/output/stacked_area_keynote.png +0 -0
  273. data/test/output/stacked_area_keynote_small.png +0 -0
  274. data/test/output/stacked_bar_keynote.png +0 -0
  275. data/test/output/stacked_bar_keynote_small.png +0 -0
  276. data/test/output_java/accum_bar.png +0 -0
  277. data/test/output_java/area_keynote.png +0 -0
  278. data/test/output_java/area_keynote_small.png +0 -0
  279. data/test/output_java/area_many.png +0 -0
  280. data/test/output_java/area_many_areas_small.png +0 -0
  281. data/test/output_java/area_tiny.png +0 -0
  282. data/test/output_java/area_wide.png +0 -0
  283. data/test/output_java/bar2_wrapped_legend_16_400.png +0 -0
  284. data/test/output_java/bar2_wrapped_legend_16_800.png +0 -0
  285. data/test/output_java/bar2_wrapped_legend_30_400.png +0 -0
  286. data/test/output_java/bar2_wrapped_legend_30_800.png +0 -0
  287. data/test/output_java/bar2_wrapped_legend_4_400.png +0 -0
  288. data/test/output_java/bar2_wrapped_legend_4_800.png +0 -0
  289. data/test/output_java/bar2_wrapped_legend__400.png +0 -0
  290. data/test/output_java/bar2_wrapped_legend__800.png +0 -0
  291. data/test/output_java/bar_background_gradient_bottom_top.png +0 -0
  292. data/test/output_java/bar_background_gradient_left_right.png +0 -0
  293. data/test/output_java/bar_background_gradient_right_left.png +0 -0
  294. data/test/output_java/bar_background_gradient_top_bottom.png +0 -0
  295. data/test/output_java/bar_background_gradient_topleft_bottomright.png +0 -0
  296. data/test/output_java/bar_background_gradient_topright_bottomleft.png +0 -0
  297. data/test/output_java/bar_formatted_numbers.png +0 -0
  298. data/test/output_java/bar_keynote.png +0 -0
  299. data/test/output_java/bar_keynote_small.png +0 -0
  300. data/test/output_java/bar_long_legend_text.png +0 -0
  301. data/test/output_java/bar_manual_colors.png +0 -0
  302. data/test/output_java/bar_marker_shadow.png +0 -0
  303. data/test/output_java/bar_nearly_zero_max_10.png +0 -0
  304. data/test/output_java/bar_no_legend.png +0 -0
  305. data/test/output_java/bar_no_line_markers.png +0 -0
  306. data/test/output_java/bar_no_title.png +0 -0
  307. data/test/output_java/bar_no_title_or_legend.png +0 -0
  308. data/test/output_java/bar_odeo.png +0 -0
  309. data/test/output_java/bar_one_value.png +0 -0
  310. data/test/output_java/bar_pos_neg.png +0 -0
  311. data/test/output_java/bar_rails_keynote.png +0 -0
  312. data/test/output_java/bar_set_absolute_trunc.png +0 -0
  313. data/test/output_java/bar_set_label_stagger_height.png +0 -0
  314. data/test/output_java/bar_set_legend_box_size_lg.png +0 -0
  315. data/test/output_java/bar_set_legend_box_size_sm.png +0 -0
  316. data/test/output_java/bar_set_marker.png +0 -0
  317. data/test/output_java/bar_set_trailing_dots_trunc.png +0 -0
  318. data/test/output_java/bar_spacing_full.png +0 -0
  319. data/test/output_java/bar_spacing_half.png +0 -0
  320. data/test/output_java/bar_spacing_none.png +0 -0
  321. data/test/output_java/bar_tall_graph.png +0 -0
  322. data/test/output_java/bar_tall_graph_small.png +0 -0
  323. data/test/output_java/bar_themed.png +0 -0
  324. data/test/output_java/bar_title_margin.png +0 -0
  325. data/test/output_java/bar_value_labels.png +0 -0
  326. data/test/output_java/bar_wide_graph.png +0 -0
  327. data/test/output_java/bar_wide_graph_small.png +0 -0
  328. data/test/output_java/bar_wrapped_legend_16_400.png +0 -0
  329. data/test/output_java/bar_wrapped_legend_16_800.png +0 -0
  330. data/test/output_java/bar_wrapped_legend_30_400.png +0 -0
  331. data/test/output_java/bar_wrapped_legend_30_800.png +0 -0
  332. data/test/output_java/bar_wrapped_legend_4_400.png +0 -0
  333. data/test/output_java/bar_wrapped_legend_4_800.png +0 -0
  334. data/test/output_java/bar_wrapped_legend__400.png +0 -0
  335. data/test/output_java/bar_wrapped_legend__800.png +0 -0
  336. data/test/output_java/bar_x_y_labels.png +0 -0
  337. data/test/output_java/bar_y_increment_1.png +0 -0
  338. data/test/output_java/bar_y_increment_2.0.png +0 -0
  339. data/test/output_java/bar_y_increment_20.png +0 -0
  340. data/test/output_java/bar_y_increment_5.png +0 -0
  341. data/test/output_java/bar_zero_marker_count.png +0 -0
  342. data/test/output_java/bar_zero_spacing.png +0 -0
  343. data/test/output_java/bezier.png +0 -0
  344. data/test/output_java/bezier_2.png +0 -0
  345. data/test/output_java/bezier_3.png +0 -0
  346. data/test/output_java/bullet_greyscale.png +0 -0
  347. data/test/output_java/bullet_no_options.png +0 -0
  348. data/test/output_java/dot.png +0 -0
  349. data/test/output_java/dot_manual_colors.png +0 -0
  350. data/test/output_java/dot_nearly_zero_max_10.png +0 -0
  351. data/test/output_java/dot_no_legend.png +0 -0
  352. data/test/output_java/dot_no_line_markers.png +0 -0
  353. data/test/output_java/dot_no_title.png +0 -0
  354. data/test/output_java/dot_no_title_or_legend.png +0 -0
  355. data/test/output_java/dot_one_value.png +0 -0
  356. data/test/output_java/dot_pos_neg.png +0 -0
  357. data/test/output_java/dot_set_legend_box_size_lg.png +0 -0
  358. data/test/output_java/dot_set_legend_box_size_sm.png +0 -0
  359. data/test/output_java/dot_set_marker.png +0 -0
  360. data/test/output_java/dot_small.png +0 -0
  361. data/test/output_java/dot_tall_graph.png +0 -0
  362. data/test/output_java/dot_tall_graph_small.png +0 -0
  363. data/test/output_java/dot_themed.png +0 -0
  364. data/test/output_java/dot_wide_graph.png +0 -0
  365. data/test/output_java/dot_wide_graph_small.png +0 -0
  366. data/test/output_java/dot_x_y_labels.png +0 -0
  367. data/test/output_java/dot_y_increment_1.png +0 -0
  368. data/test/output_java/dot_y_increment_2.0.png +0 -0
  369. data/test/output_java/dot_y_increment_20.png +0 -0
  370. data/test/output_java/dot_y_increment_5.png +0 -0
  371. data/test/output_java/enhancements-1.png +0 -0
  372. data/test/output_java/enhancements.png +0 -0
  373. data/test/output_java/line_all_neg.png +0 -0
  374. data/test/output_java/line_all_neg_400.png +0 -0
  375. data/test/output_java/line_all_neg_no_max.png +0 -0
  376. data/test/output_java/line_baseline.png +0 -0
  377. data/test/output_java/line_hang_value.png +0 -0
  378. data/test/output_java/line_hide_dots.png +0 -0
  379. data/test/output_java/line_hide_lines.png +0 -0
  380. data/test/output_java/line_jruby_error.png +0 -0
  381. data/test/output_java/line_large.png +0 -0
  382. data/test/output_java/line_large_baseline.png +0 -0
  383. data/test/output_java/line_legend_at_bottom.png +0 -0
  384. data/test/output_java/line_many.png +0 -0
  385. data/test/output_java/line_many_lines_small.png +0 -0
  386. data/test/output_java/line_many_numbers.png +0 -0
  387. data/test/output_java/line_marker_label_accuracy.png +0 -0
  388. data/test/output_java/line_more_sets_than_colors.png +0 -0
  389. data/test/output_java/line_no_data.png +0 -0
  390. data/test/output_java/line_no_data_msg.png +0 -0
  391. data/test/output_java/line_no_data_other.png +0 -0
  392. data/test/output_java/line_no_hide.png +0 -0
  393. data/test/output_java/line_no_legend.png +0 -0
  394. data/test/output_java/line_no_line_markers.png +0 -0
  395. data/test/output_java/line_no_title.png +0 -0
  396. data/test/output_java/line_nothing_but_the_graph.png +0 -0
  397. data/test/output_java/line_one_value.png +0 -0
  398. data/test/output_java/line_one_value_array.png +0 -0
  399. data/test/output_java/line_pos_neg.png +0 -0
  400. data/test/output_java/line_pos_neg_400.png +0 -0
  401. data/test/output_java/line_similar_high_end_values.png +0 -0
  402. data/test/output_java/line_similar_high_end_values_with_floor.png +0 -0
  403. data/test/output_java/line_small_small_zero.png +0 -0
  404. data/test/output_java/line_small_values.png +0 -0
  405. data/test/output_java/line_small_values_small.png +0 -0
  406. data/test/output_java/line_small_zero.png +0 -0
  407. data/test/output_java/line_some_nil_points.png +0 -0
  408. data/test/output_java/line_theme_37signals_.png +0 -0
  409. data/test/output_java/line_theme_37signals_400.png +0 -0
  410. data/test/output_java/line_theme_keynote_.png +0 -0
  411. data/test/output_java/line_theme_keynote_400.png +0 -0
  412. data/test/output_java/line_theme_odeo_.png +0 -0
  413. data/test/output_java/line_theme_odeo_400.png +0 -0
  414. data/test/output_java/line_theme_rails_keynote_.png +0 -0
  415. data/test/output_java/line_theme_rails_keynote_400.png +0 -0
  416. data/test/output_java/line_tiny.png +0 -0
  417. data/test/output_java/line_transparent.png +0 -0
  418. data/test/output_java/line_very_small.png +0 -0
  419. data/test/output_java/line_wide_graph.png +0 -0
  420. data/test/output_java/line_wide_graph_small.png +0 -0
  421. data/test/output_java/line_xy.png +0 -0
  422. data/test/output_java/line_xy_pairs.png +0 -0
  423. data/test/output_java/line_y_axis_increment.png +0 -0
  424. data/test/output_java/mini_bar.png +0 -0
  425. data/test/output_java/mini_pie.png +0 -0
  426. data/test/output_java/mini_pie_right_legend.png +0 -0
  427. data/test/output_java/mini_side_bar.png +0 -0
  428. data/test/output_java/mini_side_bar_multi_color.png +0 -0
  429. data/test/output_java/net_dots_tiny.png +0 -0
  430. data/test/output_java/net_large.png +0 -0
  431. data/test/output_java/net_many.png +0 -0
  432. data/test/output_java/net_many_nets_small.png +0 -0
  433. data/test/output_java/net_no_data.png +0 -0
  434. data/test/output_java/net_no_data_msg.png +0 -0
  435. data/test/output_java/net_no_data_other.png +0 -0
  436. data/test/output_java/net_no_legend.png +0 -0
  437. data/test/output_java/net_no_net_markers.png +0 -0
  438. data/test/output_java/net_no_title.png +0 -0
  439. data/test/output_java/net_nothing_but_the_graph.png +0 -0
  440. data/test/output_java/net_similar_high_end_values.png +0 -0
  441. data/test/output_java/net_small.png +0 -0
  442. data/test/output_java/net_small_small.png +0 -0
  443. data/test/output_java/net_small_small_zero.png +0 -0
  444. data/test/output_java/net_small_zero.png +0 -0
  445. data/test/output_java/net_wide_graph.png +0 -0
  446. data/test/output_java/net_wide_graph_small.png +0 -0
  447. data/test/output_java/pie_equal.png +0 -0
  448. data/test/output_java/pie_grey.png +0 -0
  449. data/test/output_java/pie_keynote.png +0 -0
  450. data/test/output_java/pie_keynote_small.png +0 -0
  451. data/test/output_java/pie_legend.png +0 -0
  452. data/test/output_java/pie_legend_small.png +0 -0
  453. data/test/output_java/pie_nearly_equal.png +0 -0
  454. data/test/output_java/pie_one_val.png +0 -0
  455. data/test/output_java/pie_pastel.png +0 -0
  456. data/test/output_java/pie_simple.png +0 -0
  457. data/test/output_java/pie_wide.png +0 -0
  458. data/test/output_java/pie_wrapped_legend_16_400.png +0 -0
  459. data/test/output_java/pie_wrapped_legend_16_800.png +0 -0
  460. data/test/output_java/pie_wrapped_legend_30_400.png +0 -0
  461. data/test/output_java/pie_wrapped_legend_30_800.png +0 -0
  462. data/test/output_java/pie_wrapped_legend_4_400.png +0 -0
  463. data/test/output_java/pie_wrapped_legend_4_800.png +0 -0
  464. data/test/output_java/pie_wrapped_legend__400.png +0 -0
  465. data/test/output_java/pie_wrapped_legend__800.png +0 -0
  466. data/test/output_java/pie_zero.png +0 -0
  467. data/test/output_java/scatter_all_neg.png +0 -0
  468. data/test/output_java/scatter_all_neg_400.png +0 -0
  469. data/test/output_java/scatter_basic.png +0 -0
  470. data/test/output_java/scatter_many.png +0 -0
  471. data/test/output_java/scatter_no_data.png +0 -0
  472. data/test/output_java/scatter_no_data_msg.png +0 -0
  473. data/test/output_java/scatter_no_data_other.png +0 -0
  474. data/test/output_java/scatter_no_hide.png +0 -0
  475. data/test/output_java/scatter_no_labels.png +0 -0
  476. data/test/output_java/scatter_no_legend.png +0 -0
  477. data/test/output_java/scatter_no_line_markers.png +0 -0
  478. data/test/output_java/scatter_no_title.png +0 -0
  479. data/test/output_java/scatter_nothing_but_the_graph.png +0 -0
  480. data/test/output_java/scatter_pos_neg.png +0 -0
  481. data/test/output_java/scatter_pos_neg_400.png +0 -0
  482. data/test/output_java/scatter_wide_graph.png +0 -0
  483. data/test/output_java/scatter_wide_graph_small.png +0 -0
  484. data/test/output_java/scene_hazy_night.png +0 -0
  485. data/test/output_java/scene_not_hazy_day.png +0 -0
  486. data/test/output_java/scene_partly_cloudy_day.png +0 -0
  487. data/test/output_java/scene_stormy_day.png +0 -0
  488. data/test/output_java/scene_stormy_night.png +0 -0
  489. data/test/output_java/side_bar.png +0 -0
  490. data/test/output_java/side_bar_data_range.png +0 -0
  491. data/test/output_java/side_bar_labels.png +0 -0
  492. data/test/output_java/side_bar_spacing_full.png +0 -0
  493. data/test/output_java/side_bar_spacing_half.png +0 -0
  494. data/test/output_java/side_bar_spacing_none.png +0 -0
  495. data/test/output_java/side_stacked_bar_keynote.png +0 -0
  496. data/test/output_java/side_stacked_bar_keynote_small.png +0 -0
  497. data/test/output_java/side_stacked_bar_labels.png +0 -0
  498. data/test/output_java/side_stacked_bar_long_label.png +0 -0
  499. data/test/output_java/side_stacked_bar_wide.png +0 -0
  500. data/test/output_java/spider_37signals.png +0 -0
  501. data/test/output_java/spider_equal.png +0 -0
  502. data/test/output_java/spider_keynote.png +0 -0
  503. data/test/output_java/spider_legend.png +0 -0
  504. data/test/output_java/spider_legend_small.png +0 -0
  505. data/test/output_java/spider_lots_of_data.png +0 -0
  506. data/test/output_java/spider_lots_of_data_normal_names.png +0 -0
  507. data/test/output_java/spider_nearly_equal.png +0 -0
  508. data/test/output_java/spider_no_axes.png +0 -0
  509. data/test/output_java/spider_no_background.png +0 -0
  510. data/test/output_java/spider_no_print.png +0 -0
  511. data/test/output_java/spider_overlay_1.png +0 -0
  512. data/test/output_java/spider_overlay_2.png +0 -0
  513. data/test/output_java/spider_rotation.png +0 -0
  514. data/test/output_java/spider_small.png +0 -0
  515. data/test/output_java/spider_wide.png +0 -0
  516. data/test/output_java/spider_zero.png +0 -0
  517. data/test/output_java/stacked_area_keynote.png +0 -0
  518. data/test/output_java/stacked_area_keynote_small.png +0 -0
  519. data/test/output_java/stacked_bar_keynote.png +0 -0
  520. data/test/output_java/stacked_bar_keynote_small.png +0 -0
  521. data/test/test_accumulator_bar.rb +7 -6
  522. data/test/test_area.rb +2 -2
  523. data/test/test_bar.rb +296 -112
  524. data/test/test_bezier.rb +33 -0
  525. data/test/test_bullet.rb +26 -26
  526. data/test/test_dot.rb +44 -54
  527. data/test/test_legend.rb +29 -29
  528. data/test/test_line.rb +250 -218
  529. data/test/test_net.rb +2 -1
  530. data/test/test_pie.rb +2 -2
  531. data/test/test_scatter.rb +85 -85
  532. data/test/test_side_bar.rb +13 -0
  533. data/test/test_sidestacked_bar.rb +16 -0
  534. data/test/test_spider.rb +11 -1
  535. data/test/test_stacked_area.rb +5 -5
  536. metadata +1041 -49
  537. data/.rvmrc +0 -5
  538. data/Gemfile.lock +0 -20
  539. data/LICENSE.txt +0 -22
  540. data/README.txt +0 -43
data/test/test_net.rb CHANGED
@@ -5,6 +5,7 @@ require File.dirname(__FILE__) + "/gruff_test_case"
5
5
  class TestGruffNet < GruffTestCase
6
6
 
7
7
  def setup
8
+ super
8
9
  @datasets = [
9
10
  [:Jimmy, [25, 36, 86, 39, 25, 31, 79, 88]],
10
11
  [:Charles, [80, 54, 67, 54, 68, 70, 90, 95]],
@@ -23,7 +24,7 @@ class TestGruffNet < GruffTestCase
23
24
  5 => '6/12',
24
25
  6 => '6/21',
25
26
  7 => '6/28',
26
- }
27
+ }
27
28
  end
28
29
 
29
30
  def test_net_small_values
data/test/test_pie.rb CHANGED
@@ -30,7 +30,7 @@ class TestGruffPie < GruffTestCase
30
30
  def test_pie_graph_greyscale
31
31
  g = Gruff::Pie.new
32
32
  g.title = "Greyscale Pie Graph Test"
33
- g.theme_greyscale
33
+ g.theme = Gruff::Themes::GREYSCALE
34
34
  @datasets.each do |data|
35
35
  g.data(data[0], data[1])
36
36
  end
@@ -41,7 +41,7 @@ class TestGruffPie < GruffTestCase
41
41
 
42
42
  def test_pie_graph_pastel
43
43
  g = Gruff::Pie.new
44
- g.theme_pastel
44
+ g.theme = Gruff::Themes::PASTEL
45
45
  g.title = "Pastel Pie Graph Test"
46
46
  @datasets.each do |data|
47
47
  g.data(data[0], data[1])
data/test/test_scatter.rb CHANGED
@@ -1,68 +1,68 @@
1
1
  #!/usr/bin/ruby
2
2
 
3
- require File.dirname(__FILE__) + "/gruff_test_case"
3
+ require File.dirname(__FILE__) + '/gruff_test_case'
4
4
 
5
5
  class TestGruffScatter < Test::Unit::TestCase
6
-
6
+
7
7
  def setup
8
8
  @datasets = [
9
- [:Chuck, [20,10,5,12,11,6,10,7], [5,10,19,6,9,1,14,8] ],
10
- [:Brown, [5,10,20,6,9,12,14,8], [20,10,5,12,11,6,10,7] ],
11
- [:Lucy, [19,9,6,11,12,7,15,8], [6,11,18,8,12,8,10,6] ]
9
+ [:Chuck, [20, 10, 5, 12, 11, 6, 10, 7], [5, 10, 19, 6, 9, 1, 14, 8]],
10
+ [:Brown, [5, 10, 20, 6, 9, 12, 14, 8], [20, 10, 5, 12, 11, 6, 10, 7]],
11
+ [:Lucy, [19, 9, 6, 11, 12, 7, 15, 8], [6, 11, 18, 8, 12, 8, 10, 6]]
12
12
  ]
13
13
  end
14
-
14
+
15
15
  # Done
16
16
  def test_scatter_graph
17
17
  g = setup_basic_graph
18
- g.title = "Basic Scatter Plot Test"
19
- g.write("test/output/scatter_basic.png")
18
+ g.title = 'Basic Scatter Plot Test'
19
+ g.write('test/output/scatter_basic.png')
20
20
  end
21
-
21
+
22
22
  #~ # Done
23
23
  def test_many_datapoints
24
24
  g = Gruff::Scatter.new
25
- g.title = "Many Datapoint Graph Test"
26
- y_values = (0..50).collect {|i| rand(100) }
27
- x_values = (0..50).collect {|i| rand(100) }
25
+ g.title = 'Many Datapoint Graph Test'
26
+ y_values = (0..50).map { rand(100) }
27
+ x_values = (0..50).map { rand(100) }
28
28
  g.data('many points', y_values, x_values)
29
29
 
30
30
  # Default theme
31
- g.write("test/output/scatter_many.png")
31
+ g.write('test/output/scatter_many.png')
32
32
  end
33
-
33
+
34
34
  # Done
35
35
  def test_no_data
36
36
  g = Gruff::Scatter.new(400)
37
- g.title = "No Data"
37
+ g.title = 'No Data'
38
38
  # Default theme
39
- g.write("test/output/scatter_no_data.png")
40
-
39
+ g.write('test/output/scatter_no_data.png')
40
+
41
41
  g = Gruff::Scatter.new(400)
42
- g.title = "No Data Title"
42
+ g.title = 'No Data Title'
43
43
  g.no_data_message = 'There is no data'
44
- g.write("test/output/scatter_no_data_msg.png")
44
+ g.write('test/output/scatter_no_data_msg.png')
45
45
  end
46
-
46
+
47
47
  # Done
48
48
  def test_all_zeros
49
49
  g = Gruff::Scatter.new(400)
50
- g.title = "All Zeros"
50
+ g.title = 'All Zeros'
51
51
 
52
- g.data(:gus, [0,0,0,0], [0,0,0,0])
52
+ g.data(:gus, [0, 0, 0, 0], [0, 0, 0, 0])
53
53
 
54
54
  # Default theme
55
- g.write("test/output/scatter_no_data_other.png")
55
+ g.write('test/output/scatter_no_data_other.png')
56
56
  end
57
-
57
+
58
58
  # Done
59
59
  def test_some_nil_points
60
60
  g = Gruff::Scatter.new
61
- g.title = "Some Nil Points"
61
+ g.title = 'Some Nil Points'
62
62
 
63
63
  @datasets = [
64
- [:data1, [1, 2, 3, nil, 3, 5, 6], [5, nil, nil, nil, nil, 5, 7] ]
65
- ]
64
+ [:data1, [1, 2, 3, nil, 3, 5, 6], [5, nil, nil, nil, nil, 5, 7]]
65
+ ]
66
66
 
67
67
  @datasets.each do |data|
68
68
  assert_raise ArgumentError do
@@ -70,164 +70,164 @@ class TestGruffScatter < Test::Unit::TestCase
70
70
  end
71
71
  end
72
72
  end
73
-
73
+
74
74
  # Done
75
75
  def test_unequal_number_of_x_and_y_values
76
76
  g = Gruff::Scatter.new
77
- g.title = "Unequal number of X and Y values"
78
-
77
+ g.title = 'Unequal number of X and Y values'
78
+
79
79
  @datasets = [
80
- [:data1, [1,2,3], [1,2]],
81
- [:data2, [1,2,3,4,5], [1,2,3,4,5,6]],
80
+ [:data1, [1, 2, 3], [1, 2]],
81
+ [:data2, [1, 2, 3, 4, 5], [1, 2, 3, 4, 5, 6]],
82
82
  ]
83
-
83
+
84
84
  @datasets.each do |data|
85
85
  assert_raise ArgumentError do
86
86
  g.data(*data)
87
87
  end
88
88
  end
89
89
  end
90
-
90
+
91
91
  # Done
92
92
  def test_empty_set_of_axis_values
93
93
  g = Gruff::Scatter.new
94
- g.title = "Missing Axis Values"
95
-
94
+ g.title = 'Missing Axis Values'
95
+
96
96
  @datasets = [
97
- [:data1, [1,2,3,4,5]]
97
+ [:data1, [1, 2, 3, 4, 5]]
98
98
  ]
99
-
99
+
100
100
  @datasets.each do |data|
101
101
  assert_raise ArgumentError do
102
102
  g.data(*data)
103
103
  end
104
104
  end
105
105
  end
106
-
106
+
107
107
  # Done
108
108
  def test_no_title
109
109
  g = Gruff::Scatter.new(400)
110
- g.data(:data1, [1,2,3,4,5], [1,2,3,4,5])
111
- g.write("test/output/scatter_no_title.png")
110
+ g.data(:data1, [1, 2, 3, 4, 5], [1, 2, 3, 4, 5])
111
+ g.write('test/output/scatter_no_title.png')
112
112
  end
113
113
 
114
114
  # Done
115
115
  def test_no_line_markers
116
116
  g = setup_basic_graph(400)
117
- g.title = "No Line Markers"
117
+ g.title = 'No Line Markers'
118
118
  g.hide_line_markers = true
119
- g.write("test/output/scatter_no_line_markers.png")
119
+ g.write('test/output/scatter_no_line_markers.png')
120
120
  end
121
121
 
122
122
  # Done
123
123
  def test_no_legend
124
124
  g = setup_basic_graph(400)
125
- g.title = "No Legend"
125
+ g.title = 'No Legend'
126
126
  g.hide_legend = true
127
- g.write("test/output/scatter_no_legend.png")
127
+ g.write('test/output/scatter_no_legend.png')
128
128
  end
129
129
 
130
130
  # Done
131
131
  def test_nothing_but_the_graph
132
132
  g = setup_basic_graph(400)
133
- g.title = "THIS TITLE SHOULD NOT DISPLAY!!!"
133
+ g.title = 'THIS TITLE SHOULD NOT DISPLAY!!!'
134
134
  g.hide_line_markers = true
135
135
  g.hide_legend = true
136
136
  g.hide_title = true
137
- g.write("test/output/scatter_nothing_but_the_graph.png")
137
+ g.write('test/output/scatter_nothing_but_the_graph.png')
138
138
  end
139
-
139
+
140
140
  # TODO Implement baselines on x and y axis
141
141
  #~ def test_baseline_larger_than_data
142
- #~ g = setup_basic_graph(400)
143
- #~ g.title = "Baseline Larger Than Data"
144
- #~ g.baseline_value = 150
145
- #~ g.write("test/output/scatter_large_baseline.png")
142
+ #~ g = setup_basic_graph(400)
143
+ #~ g.title = "Baseline Larger Than Data"
144
+ #~ g.baseline_value = 150
145
+ #~ g.write("test/output/scatter_large_baseline.png")
146
146
  #~ end
147
-
147
+
148
148
  # Done
149
149
  def test_wide_graph
150
150
  g = setup_basic_graph('800x400')
151
- g.title = "Wide Graph"
152
- g.write("test/output/scatter_wide_graph.png")
151
+ g.title = 'Wide Graph'
152
+ g.write('test/output/scatter_wide_graph.png')
153
153
 
154
154
  g = setup_basic_graph('400x200')
155
- g.title = "Wide Graph Small"
156
- g.write("test/output/scatter_wide_graph_small.png")
155
+ g.title = 'Wide Graph Small'
156
+ g.write('test/output/scatter_wide_graph_small.png')
157
157
  end
158
-
158
+
159
159
  # Done
160
160
  def test_negative
161
161
  g = setup_pos_neg(800)
162
- g.write("test/output/scatter_pos_neg.png")
163
-
162
+ g.write('test/output/scatter_pos_neg.png')
163
+
164
164
  g = setup_pos_neg(400)
165
165
  g.title = 'Pos/Neg Line Test Small'
166
- g.write("test/output/scatter_pos_neg_400.png")
166
+ g.write('test/output/scatter_pos_neg_400.png')
167
167
  end
168
168
 
169
169
  # Done
170
170
  def test_all_negative
171
171
  g = setup_all_neg(800)
172
- g.write("test/output/scatter_all_neg.png")
173
-
172
+ g.write('test/output/scatter_all_neg.png')
173
+
174
174
  g = setup_all_neg(400)
175
175
  g.title = 'All Neg Line Test Small'
176
- g.write("test/output/scatter_all_neg_400.png")
176
+ g.write('test/output/scatter_all_neg_400.png')
177
177
  end
178
-
178
+
179
179
  # Done
180
180
  def test_no_hide_line_no_labels
181
181
  g = Gruff::Scatter.new
182
- g.title = "No Hide Line No Labels"
182
+ g.title = 'No Hide Line No Labels'
183
183
  @datasets.each do |data|
184
184
  g.data(data[0], data[1], data[2])
185
185
  end
186
186
  g.hide_line_markers = false
187
187
  g.write('test/output/scatter_no_hide.png')
188
188
  end
189
-
189
+
190
190
  def test_no_set_labels
191
191
  g = Gruff::Scatter.new
192
- g.title = "Setting Labels Test"
192
+ g.title = 'Setting Labels Test'
193
193
  g.labels = {
194
- 0 => 'This',
195
- 1 => 'should',
196
- 2 => 'not',
197
- 3 => 'show',
198
- 4 => 'up'
194
+ 0 => 'This',
195
+ 1 => 'should',
196
+ 2 => 'not',
197
+ 3 => 'show',
198
+ 4 => 'up'
199
199
  }
200
200
  @datasets.each do |data|
201
201
  g.data(data[0], data[1], data[2])
202
202
  end
203
203
  g.write('test/output/scatter_no_labels.png')
204
204
  end
205
-
206
- protected
207
-
205
+
206
+ protected
207
+
208
208
  def setup_basic_graph(size=800)
209
209
  g = Gruff::Scatter.new(size)
210
- g.title = "Rad Graph"
210
+ g.title = 'Rad Graph'
211
211
  @datasets.each do |data|
212
212
  g.data(data[0], data[1], data[2])
213
213
  end
214
214
  g
215
215
  end
216
-
216
+
217
217
  def setup_pos_neg(size=800)
218
218
  g = Gruff::Scatter.new(size)
219
- g.title = "Pos/Neg Scatter Graph Test"
219
+ g.title = 'Pos/Neg Scatter Graph Test'
220
220
  g.data(:apples, [-1, 0, 4, -4], [-5, -1, 3, 4])
221
221
  g.data(:peaches, [10, 8, 6, 3], [-1, 1, 3, 3])
222
- return g
222
+ g
223
223
  end
224
-
224
+
225
225
  def setup_all_neg(size=800)
226
226
  g = Gruff::Scatter.new(size)
227
- g.title = "Neg Scatter Graph Test"
227
+ g.title = 'Neg Scatter Graph Test'
228
228
  g.data(:apples, [-1, -1, -4, -4], [-5, -1, -3, -4])
229
229
  g.data(:peaches, [-10, -8, -6, -3], [-1, -1, -3, -3])
230
- return g
230
+ g
231
231
  end
232
-
233
- end # end GruffTestCase
232
+
233
+ end # end GruffTestCase
@@ -38,6 +38,19 @@ class TestGruffSideBar < GruffTestCase
38
38
  g.labels = {0 => '2003', 2 => '2004', 4 => '2005'}
39
39
  g.write("test/output/side_bar_data_range.png")
40
40
  end
41
+
42
+ def test_bar_labels
43
+ g = Gruff::SideBar.new('400x300')
44
+ g.title = 'Should show labels for each bar'
45
+ g.data("Grapes", [8])
46
+ g.data("Apples", [24])
47
+ g.data("Oranges", [32])
48
+ g.data("Watermelon", [8])
49
+ g.data("Peaches", [12])
50
+ g.labels = {0 => '2003', 2 => '2004', 4 => '2005'}
51
+ g.show_labels_for_bar_values = true
52
+ g.write("test/output/side_bar_labels.png")
53
+ end
41
54
 
42
55
  end
43
56
 
@@ -72,6 +72,22 @@ class TestGruffSideStackedBar < GruffTestCase
72
72
  end
73
73
  g.write "test/output/side_stacked_bar_long_label.png"
74
74
  end
75
+
76
+ def test_bar_labels
77
+ g = Gruff::SideStackedBar.new
78
+ g.title = "Stacked Bar Long Label"
79
+ g.labels = {
80
+ 0 => 'September',
81
+ 1 => 'Oct',
82
+ 2 => 'Nov',
83
+ 3 => 'Dec',
84
+ }
85
+ @datasets.each do |data|
86
+ g.data(data[0], data[1])
87
+ end
88
+ g.show_labels_for_bar_values = true
89
+ g.write "test/output/side_stacked_bar_labels.png"
90
+ end
75
91
 
76
92
  protected
77
93
 
data/test/test_spider.rb CHANGED
@@ -106,7 +106,7 @@ class TestGruffSpider < GruffTestCase
106
106
  g.data(data[0], data[1])
107
107
  end
108
108
 
109
- g.theme_37signals
109
+ g.theme = Gruff::Themes::THIRTYSEVEN_SIGNALS
110
110
 
111
111
  # Default theme
112
112
  g.write("test/output/spider_37signals.png")
@@ -201,6 +201,16 @@ class TestGruffSpider < GruffTestCase
201
201
  g.write("test/output/spider_lots_of_data_normal_names.png")
202
202
  end
203
203
 
204
+ def test_rotation
205
+ g = Gruff::Spider.new(20)
206
+ g.title = "Rotation"
207
+ @datasets.each do |data|
208
+ g.data(data[0], data[1])
209
+ end
210
+
211
+ g.rotation = 45 # degrees
212
+ g.write("test/output/spider_rotation.png")
213
+ end
204
214
 
205
215
  protected
206
216
 
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/ruby
2
2
 
3
- require File.dirname(__FILE__) + "/gruff_test_case"
3
+ require File.dirname(__FILE__) + '/gruff_test_case'
4
4
 
5
5
  class TestGruffStackedArea < GruffTestCase
6
6
 
@@ -20,7 +20,7 @@ class TestGruffStackedArea < GruffTestCase
20
20
 
21
21
  def test_area_graph
22
22
  g = Gruff::StackedArea.new
23
- g.title = "Visual Stacked Area Graph Test"
23
+ g.title = 'Visual Stacked Area Graph Test'
24
24
  g.labels = {
25
25
  0 => '5/6',
26
26
  1 => '5/15',
@@ -30,13 +30,13 @@ class TestGruffStackedArea < GruffTestCase
30
30
  @datasets.each do |data|
31
31
  g.data(data[0], data[1])
32
32
  end
33
- g.write "test/output/stacked_area_keynote.png"
33
+ g.write 'test/output/stacked_area_keynote.png'
34
34
  end
35
35
 
36
36
 
37
37
  def test_area_graph_small
38
38
  g = Gruff::StackedArea.new(400)
39
- g.title = "Visual Stacked Area Graph Test"
39
+ g.title = 'Visual Stacked Area Graph Test'
40
40
  g.labels = {
41
41
  0 => '5/6',
42
42
  1 => '5/15',
@@ -46,7 +46,7 @@ class TestGruffStackedArea < GruffTestCase
46
46
  @datasets.each do |data|
47
47
  g.data(data[0], data[1])
48
48
  end
49
- g.write "test/output/stacked_area_keynote_small.png"
49
+ g.write 'test/output/stacked_area_keynote_small.png'
50
50
  end
51
51
 
52
52
  end