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.
- checksums.yaml +7 -0
- data/.gitignore +2 -1
- data/.travis.yml +6 -0
- data/Gemfile +2 -8
- data/History.txt +76 -0
- data/MIT-LICENSE +3 -2
- data/README.md +96 -6
- data/RELEASE.md +92 -0
- data/Rakefile +203 -23
- data/gruff.gemspec +13 -10
- data/lib/gruff.rb +8 -7
- data/lib/gruff/accumulator_bar.rb +4 -13
- data/lib/gruff/area.rb +6 -13
- data/lib/gruff/bar.rb +24 -3
- data/lib/gruff/bar_conversion.rb +31 -31
- data/lib/gruff/base.rb +310 -267
- data/lib/gruff/bezier.rb +46 -0
- data/lib/gruff/bullet.rb +3 -1
- data/lib/gruff/dot.rb +56 -44
- data/lib/gruff/line.rb +83 -69
- data/lib/gruff/net.rb +7 -9
- data/lib/gruff/pie.rb +2 -4
- data/lib/gruff/scatter.rb +25 -29
- data/lib/gruff/side_bar.rb +54 -37
- data/lib/gruff/side_stacked_bar.rb +25 -5
- data/lib/gruff/spider.rb +22 -21
- data/lib/gruff/themes.rb +102 -0
- data/lib/gruff/version.rb +1 -1
- data/test/gruff_test_case.rb +68 -38
- data/test/image_compare.rb +58 -0
- data/test/output/accum_bar.png +0 -0
- data/test/output/area_keynote.png +0 -0
- data/test/output/area_keynote_small.png +0 -0
- data/test/output/area_many.png +0 -0
- data/test/output/area_many_areas_small.png +0 -0
- data/test/output/area_tiny.png +0 -0
- data/test/output/area_wide.png +0 -0
- data/test/output/bar2_wrapped_legend_16_400.png +0 -0
- data/test/output/bar2_wrapped_legend_16_800.png +0 -0
- data/test/output/bar2_wrapped_legend_30_400.png +0 -0
- data/test/output/bar2_wrapped_legend_30_800.png +0 -0
- data/test/output/bar2_wrapped_legend_4_400.png +0 -0
- data/test/output/bar2_wrapped_legend_4_800.png +0 -0
- data/test/output/bar2_wrapped_legend__400.png +0 -0
- data/test/output/bar2_wrapped_legend__800.png +0 -0
- data/test/output/bar_background_gradient_bottom_top.png +0 -0
- data/test/output/bar_background_gradient_left_right.png +0 -0
- data/test/output/bar_background_gradient_right_left.png +0 -0
- data/test/output/bar_background_gradient_top_bottom.png +0 -0
- data/test/output/bar_background_gradient_topleft_bottomright.png +0 -0
- data/test/output/bar_background_gradient_topright_bottomleft.png +0 -0
- data/test/output/bar_formatted_numbers.png +0 -0
- data/test/output/bar_keynote.png +0 -0
- data/test/output/bar_keynote_small.png +0 -0
- data/test/output/bar_long_legend_text.png +0 -0
- data/test/output/bar_manual_colors.png +0 -0
- data/test/output/bar_marker_shadow.png +0 -0
- data/test/output/bar_nearly_zero_max_10.png +0 -0
- data/test/output/bar_no_legend.png +0 -0
- data/test/output/bar_no_line_markers.png +0 -0
- data/test/output/bar_no_title.png +0 -0
- data/test/output/bar_no_title_or_legend.png +0 -0
- data/test/output/bar_odeo.png +0 -0
- data/test/output/bar_one_value.png +0 -0
- data/test/output/bar_pos_neg.png +0 -0
- data/test/output/bar_rails_keynote.png +0 -0
- data/test/output/bar_set_absolute_trunc.png +0 -0
- data/test/output/bar_set_label_stagger_height.png +0 -0
- data/test/output/bar_set_legend_box_size_lg.png +0 -0
- data/test/output/bar_set_legend_box_size_sm.png +0 -0
- data/test/output/bar_set_marker.png +0 -0
- data/test/output/bar_set_trailing_dots_trunc.png +0 -0
- data/test/output/bar_spacing_full.png +0 -0
- data/test/output/bar_spacing_half.png +0 -0
- data/test/output/bar_spacing_none.png +0 -0
- data/test/output/bar_tall_graph.png +0 -0
- data/test/output/bar_tall_graph_small.png +0 -0
- data/test/output/bar_themed.png +0 -0
- data/test/output/bar_title_margin.png +0 -0
- data/test/output/bar_value_labels.png +0 -0
- data/test/output/bar_wide_graph.png +0 -0
- data/test/output/bar_wide_graph_small.png +0 -0
- data/test/output/bar_wrapped_legend_16_400.png +0 -0
- data/test/output/bar_wrapped_legend_16_800.png +0 -0
- data/test/output/bar_wrapped_legend_30_400.png +0 -0
- data/test/output/bar_wrapped_legend_30_800.png +0 -0
- data/test/output/bar_wrapped_legend_4_400.png +0 -0
- data/test/output/bar_wrapped_legend_4_800.png +0 -0
- data/test/output/bar_wrapped_legend__400.png +0 -0
- data/test/output/bar_wrapped_legend__800.png +0 -0
- data/test/output/bar_x_y_labels.png +0 -0
- data/test/output/bar_y_increment_1.png +0 -0
- data/test/output/bar_y_increment_2.0.png +0 -0
- data/test/output/bar_y_increment_20.png +0 -0
- data/test/output/bar_y_increment_5.png +0 -0
- data/test/output/bar_zero_marker_count.png +0 -0
- data/test/output/bar_zero_spacing.png +0 -0
- data/test/output/bezier.png +0 -0
- data/test/output/bezier_2.png +0 -0
- data/test/output/bezier_3.png +0 -0
- data/test/output/bullet_greyscale.png +0 -0
- data/test/output/bullet_no_options.png +0 -0
- data/test/output/dot.png +0 -0
- data/test/output/dot_manual_colors.png +0 -0
- data/test/output/dot_nearly_zero_max_10.png +0 -0
- data/test/output/dot_no_legend.png +0 -0
- data/test/output/dot_no_line_markers.png +0 -0
- data/test/output/dot_no_title.png +0 -0
- data/test/output/dot_no_title_or_legend.png +0 -0
- data/test/output/dot_one_value.png +0 -0
- data/test/output/dot_pos_neg.png +0 -0
- data/test/output/dot_set_legend_box_size_lg.png +0 -0
- data/test/output/dot_set_legend_box_size_sm.png +0 -0
- data/test/output/dot_set_marker.png +0 -0
- data/test/output/dot_small.png +0 -0
- data/test/output/dot_tall_graph.png +0 -0
- data/test/output/dot_tall_graph_small.png +0 -0
- data/test/output/dot_themed.png +0 -0
- data/test/output/dot_wide_graph.png +0 -0
- data/test/output/dot_wide_graph_small.png +0 -0
- data/test/output/dot_x_y_labels.png +0 -0
- data/test/output/dot_y_increment_1.png +0 -0
- data/test/output/dot_y_increment_2.0.png +0 -0
- data/test/output/dot_y_increment_20.png +0 -0
- data/test/output/dot_y_increment_5.png +0 -0
- data/test/output/enhancements-1.png +0 -0
- data/test/output/enhancements.png +0 -0
- data/test/output/line_all_neg.png +0 -0
- data/test/output/line_all_neg_400.png +0 -0
- data/test/output/line_all_neg_no_max.png +0 -0
- data/test/output/line_baseline.png +0 -0
- data/test/output/line_hang_value.png +0 -0
- data/test/output/line_hide_dots.png +0 -0
- data/test/output/line_hide_lines.png +0 -0
- data/test/output/line_jruby_error.png +0 -0
- data/test/output/line_large.png +0 -0
- data/test/output/line_large_baseline.png +0 -0
- data/test/output/line_legend_at_bottom.png +0 -0
- data/test/output/line_many.png +0 -0
- data/test/output/line_many_lines_small.png +0 -0
- data/test/output/line_many_numbers.png +0 -0
- data/test/output/line_marker_label_accuracy.png +0 -0
- data/test/output/line_more_sets_than_colors.png +0 -0
- data/test/output/line_no_data.png +0 -0
- data/test/output/line_no_data_msg.png +0 -0
- data/test/output/line_no_data_other.png +0 -0
- data/test/output/line_no_hide.png +0 -0
- data/test/output/line_no_legend.png +0 -0
- data/test/output/line_no_line_markers.png +0 -0
- data/test/output/line_no_title.png +0 -0
- data/test/output/line_nothing_but_the_graph.png +0 -0
- data/test/output/line_one_value.png +0 -0
- data/test/output/line_one_value_array.png +0 -0
- data/test/output/line_pos_neg.png +0 -0
- data/test/output/line_pos_neg_400.png +0 -0
- data/test/output/line_similar_high_end_values.png +0 -0
- data/test/output/line_similar_high_end_values_with_floor.png +0 -0
- data/test/output/line_small_small_zero.png +0 -0
- data/test/output/line_small_values.png +0 -0
- data/test/output/line_small_values_small.png +0 -0
- data/test/output/line_small_zero.png +0 -0
- data/test/output/line_some_nil_points.png +0 -0
- data/test/output/line_theme_37signals_.png +0 -0
- data/test/output/line_theme_37signals_400.png +0 -0
- data/test/output/line_theme_keynote_.png +0 -0
- data/test/output/line_theme_keynote_400.png +0 -0
- data/test/output/line_theme_odeo_.png +0 -0
- data/test/output/line_theme_odeo_400.png +0 -0
- data/test/output/line_theme_rails_keynote_.png +0 -0
- data/test/output/line_theme_rails_keynote_400.png +0 -0
- data/test/output/line_tiny.png +0 -0
- data/test/output/line_transparent.png +0 -0
- data/test/output/line_very_small.png +0 -0
- data/test/output/line_wide_graph.png +0 -0
- data/test/output/line_wide_graph_small.png +0 -0
- data/test/output/line_xy.png +0 -0
- data/test/output/line_xy_pairs.png +0 -0
- data/test/output/line_y_axis_increment.png +0 -0
- data/test/output/mini_bar.png +0 -0
- data/test/output/mini_pie.png +0 -0
- data/test/output/mini_pie_right_legend.png +0 -0
- data/test/output/mini_side_bar.png +0 -0
- data/test/output/mini_side_bar_multi_color.png +0 -0
- data/test/output/net_dots_tiny.png +0 -0
- data/test/output/net_large.png +0 -0
- data/test/output/net_many.png +0 -0
- data/test/output/net_many_nets_small.png +0 -0
- data/test/output/net_no_data.png +0 -0
- data/test/output/net_no_data_msg.png +0 -0
- data/test/output/net_no_data_other.png +0 -0
- data/test/output/net_no_legend.png +0 -0
- data/test/output/net_no_net_markers.png +0 -0
- data/test/output/net_no_title.png +0 -0
- data/test/output/net_nothing_but_the_graph.png +0 -0
- data/test/output/net_similar_high_end_values.png +0 -0
- data/test/output/net_small.png +0 -0
- data/test/output/net_small_small.png +0 -0
- data/test/output/net_small_small_zero.png +0 -0
- data/test/output/net_small_zero.png +0 -0
- data/test/output/net_wide_graph.png +0 -0
- data/test/output/net_wide_graph_small.png +0 -0
- data/test/output/pie_equal.png +0 -0
- data/test/output/pie_grey.png +0 -0
- data/test/output/pie_keynote.png +0 -0
- data/test/output/pie_keynote_small.png +0 -0
- data/test/output/pie_legend.png +0 -0
- data/test/output/pie_legend_small.png +0 -0
- data/test/output/pie_nearly_equal.png +0 -0
- data/test/output/pie_one_val.png +0 -0
- data/test/output/pie_pastel.png +0 -0
- data/test/output/pie_simple.png +0 -0
- data/test/output/pie_wide.png +0 -0
- data/test/output/pie_wrapped_legend_16_400.png +0 -0
- data/test/output/pie_wrapped_legend_16_800.png +0 -0
- data/test/output/pie_wrapped_legend_30_400.png +0 -0
- data/test/output/pie_wrapped_legend_30_800.png +0 -0
- data/test/output/pie_wrapped_legend_4_400.png +0 -0
- data/test/output/pie_wrapped_legend_4_800.png +0 -0
- data/test/output/pie_wrapped_legend__400.png +0 -0
- data/test/output/pie_wrapped_legend__800.png +0 -0
- data/test/output/pie_zero.png +0 -0
- data/test/output/scatter_all_neg.png +0 -0
- data/test/output/scatter_all_neg_400.png +0 -0
- data/test/output/scatter_basic.png +0 -0
- data/test/output/scatter_many.png +0 -0
- data/test/output/scatter_no_data.png +0 -0
- data/test/output/scatter_no_data_msg.png +0 -0
- data/test/output/scatter_no_data_other.png +0 -0
- data/test/output/scatter_no_hide.png +0 -0
- data/test/output/scatter_no_labels.png +0 -0
- data/test/output/scatter_no_legend.png +0 -0
- data/test/output/scatter_no_line_markers.png +0 -0
- data/test/output/scatter_no_title.png +0 -0
- data/test/output/scatter_nothing_but_the_graph.png +0 -0
- data/test/output/scatter_pos_neg.png +0 -0
- data/test/output/scatter_pos_neg_400.png +0 -0
- data/test/output/scatter_wide_graph.png +0 -0
- data/test/output/scatter_wide_graph_small.png +0 -0
- data/test/output/scene_hazy_night.png +0 -0
- data/test/output/scene_not_hazy_day.png +0 -0
- data/test/output/scene_partly_cloudy_day.png +0 -0
- data/test/output/scene_stormy_day.png +0 -0
- data/test/output/scene_stormy_night.png +0 -0
- data/test/output/side_bar.png +0 -0
- data/test/output/side_bar_data_range.png +0 -0
- data/test/output/side_bar_labels.png +0 -0
- data/test/output/side_bar_spacing_full.png +0 -0
- data/test/output/side_bar_spacing_half.png +0 -0
- data/test/output/side_bar_spacing_none.png +0 -0
- data/test/output/side_stacked_bar_keynote.png +0 -0
- data/test/output/side_stacked_bar_keynote_small.png +0 -0
- data/test/output/side_stacked_bar_labels.png +0 -0
- data/test/output/side_stacked_bar_long_label.png +0 -0
- data/test/output/side_stacked_bar_wide.png +0 -0
- data/test/output/spider_37signals.png +0 -0
- data/test/output/spider_equal.png +0 -0
- data/test/output/spider_keynote.png +0 -0
- data/test/output/spider_legend.png +0 -0
- data/test/output/spider_legend_small.png +0 -0
- data/test/output/spider_lots_of_data.png +0 -0
- data/test/output/spider_lots_of_data_normal_names.png +0 -0
- data/test/output/spider_nearly_equal.png +0 -0
- data/test/output/spider_no_axes.png +0 -0
- data/test/output/spider_no_background.png +0 -0
- data/test/output/spider_no_print.png +0 -0
- data/test/output/spider_overlay_1.png +0 -0
- data/test/output/spider_overlay_2.png +0 -0
- data/test/output/spider_rotation.png +0 -0
- data/test/output/spider_small.png +0 -0
- data/test/output/spider_wide.png +0 -0
- data/test/output/spider_zero.png +0 -0
- data/test/output/stacked_area_keynote.png +0 -0
- data/test/output/stacked_area_keynote_small.png +0 -0
- data/test/output/stacked_bar_keynote.png +0 -0
- data/test/output/stacked_bar_keynote_small.png +0 -0
- data/test/output_java/accum_bar.png +0 -0
- data/test/output_java/area_keynote.png +0 -0
- data/test/output_java/area_keynote_small.png +0 -0
- data/test/output_java/area_many.png +0 -0
- data/test/output_java/area_many_areas_small.png +0 -0
- data/test/output_java/area_tiny.png +0 -0
- data/test/output_java/area_wide.png +0 -0
- data/test/output_java/bar2_wrapped_legend_16_400.png +0 -0
- data/test/output_java/bar2_wrapped_legend_16_800.png +0 -0
- data/test/output_java/bar2_wrapped_legend_30_400.png +0 -0
- data/test/output_java/bar2_wrapped_legend_30_800.png +0 -0
- data/test/output_java/bar2_wrapped_legend_4_400.png +0 -0
- data/test/output_java/bar2_wrapped_legend_4_800.png +0 -0
- data/test/output_java/bar2_wrapped_legend__400.png +0 -0
- data/test/output_java/bar2_wrapped_legend__800.png +0 -0
- data/test/output_java/bar_background_gradient_bottom_top.png +0 -0
- data/test/output_java/bar_background_gradient_left_right.png +0 -0
- data/test/output_java/bar_background_gradient_right_left.png +0 -0
- data/test/output_java/bar_background_gradient_top_bottom.png +0 -0
- data/test/output_java/bar_background_gradient_topleft_bottomright.png +0 -0
- data/test/output_java/bar_background_gradient_topright_bottomleft.png +0 -0
- data/test/output_java/bar_formatted_numbers.png +0 -0
- data/test/output_java/bar_keynote.png +0 -0
- data/test/output_java/bar_keynote_small.png +0 -0
- data/test/output_java/bar_long_legend_text.png +0 -0
- data/test/output_java/bar_manual_colors.png +0 -0
- data/test/output_java/bar_marker_shadow.png +0 -0
- data/test/output_java/bar_nearly_zero_max_10.png +0 -0
- data/test/output_java/bar_no_legend.png +0 -0
- data/test/output_java/bar_no_line_markers.png +0 -0
- data/test/output_java/bar_no_title.png +0 -0
- data/test/output_java/bar_no_title_or_legend.png +0 -0
- data/test/output_java/bar_odeo.png +0 -0
- data/test/output_java/bar_one_value.png +0 -0
- data/test/output_java/bar_pos_neg.png +0 -0
- data/test/output_java/bar_rails_keynote.png +0 -0
- data/test/output_java/bar_set_absolute_trunc.png +0 -0
- data/test/output_java/bar_set_label_stagger_height.png +0 -0
- data/test/output_java/bar_set_legend_box_size_lg.png +0 -0
- data/test/output_java/bar_set_legend_box_size_sm.png +0 -0
- data/test/output_java/bar_set_marker.png +0 -0
- data/test/output_java/bar_set_trailing_dots_trunc.png +0 -0
- data/test/output_java/bar_spacing_full.png +0 -0
- data/test/output_java/bar_spacing_half.png +0 -0
- data/test/output_java/bar_spacing_none.png +0 -0
- data/test/output_java/bar_tall_graph.png +0 -0
- data/test/output_java/bar_tall_graph_small.png +0 -0
- data/test/output_java/bar_themed.png +0 -0
- data/test/output_java/bar_title_margin.png +0 -0
- data/test/output_java/bar_value_labels.png +0 -0
- data/test/output_java/bar_wide_graph.png +0 -0
- data/test/output_java/bar_wide_graph_small.png +0 -0
- data/test/output_java/bar_wrapped_legend_16_400.png +0 -0
- data/test/output_java/bar_wrapped_legend_16_800.png +0 -0
- data/test/output_java/bar_wrapped_legend_30_400.png +0 -0
- data/test/output_java/bar_wrapped_legend_30_800.png +0 -0
- data/test/output_java/bar_wrapped_legend_4_400.png +0 -0
- data/test/output_java/bar_wrapped_legend_4_800.png +0 -0
- data/test/output_java/bar_wrapped_legend__400.png +0 -0
- data/test/output_java/bar_wrapped_legend__800.png +0 -0
- data/test/output_java/bar_x_y_labels.png +0 -0
- data/test/output_java/bar_y_increment_1.png +0 -0
- data/test/output_java/bar_y_increment_2.0.png +0 -0
- data/test/output_java/bar_y_increment_20.png +0 -0
- data/test/output_java/bar_y_increment_5.png +0 -0
- data/test/output_java/bar_zero_marker_count.png +0 -0
- data/test/output_java/bar_zero_spacing.png +0 -0
- data/test/output_java/bezier.png +0 -0
- data/test/output_java/bezier_2.png +0 -0
- data/test/output_java/bezier_3.png +0 -0
- data/test/output_java/bullet_greyscale.png +0 -0
- data/test/output_java/bullet_no_options.png +0 -0
- data/test/output_java/dot.png +0 -0
- data/test/output_java/dot_manual_colors.png +0 -0
- data/test/output_java/dot_nearly_zero_max_10.png +0 -0
- data/test/output_java/dot_no_legend.png +0 -0
- data/test/output_java/dot_no_line_markers.png +0 -0
- data/test/output_java/dot_no_title.png +0 -0
- data/test/output_java/dot_no_title_or_legend.png +0 -0
- data/test/output_java/dot_one_value.png +0 -0
- data/test/output_java/dot_pos_neg.png +0 -0
- data/test/output_java/dot_set_legend_box_size_lg.png +0 -0
- data/test/output_java/dot_set_legend_box_size_sm.png +0 -0
- data/test/output_java/dot_set_marker.png +0 -0
- data/test/output_java/dot_small.png +0 -0
- data/test/output_java/dot_tall_graph.png +0 -0
- data/test/output_java/dot_tall_graph_small.png +0 -0
- data/test/output_java/dot_themed.png +0 -0
- data/test/output_java/dot_wide_graph.png +0 -0
- data/test/output_java/dot_wide_graph_small.png +0 -0
- data/test/output_java/dot_x_y_labels.png +0 -0
- data/test/output_java/dot_y_increment_1.png +0 -0
- data/test/output_java/dot_y_increment_2.0.png +0 -0
- data/test/output_java/dot_y_increment_20.png +0 -0
- data/test/output_java/dot_y_increment_5.png +0 -0
- data/test/output_java/enhancements-1.png +0 -0
- data/test/output_java/enhancements.png +0 -0
- data/test/output_java/line_all_neg.png +0 -0
- data/test/output_java/line_all_neg_400.png +0 -0
- data/test/output_java/line_all_neg_no_max.png +0 -0
- data/test/output_java/line_baseline.png +0 -0
- data/test/output_java/line_hang_value.png +0 -0
- data/test/output_java/line_hide_dots.png +0 -0
- data/test/output_java/line_hide_lines.png +0 -0
- data/test/output_java/line_jruby_error.png +0 -0
- data/test/output_java/line_large.png +0 -0
- data/test/output_java/line_large_baseline.png +0 -0
- data/test/output_java/line_legend_at_bottom.png +0 -0
- data/test/output_java/line_many.png +0 -0
- data/test/output_java/line_many_lines_small.png +0 -0
- data/test/output_java/line_many_numbers.png +0 -0
- data/test/output_java/line_marker_label_accuracy.png +0 -0
- data/test/output_java/line_more_sets_than_colors.png +0 -0
- data/test/output_java/line_no_data.png +0 -0
- data/test/output_java/line_no_data_msg.png +0 -0
- data/test/output_java/line_no_data_other.png +0 -0
- data/test/output_java/line_no_hide.png +0 -0
- data/test/output_java/line_no_legend.png +0 -0
- data/test/output_java/line_no_line_markers.png +0 -0
- data/test/output_java/line_no_title.png +0 -0
- data/test/output_java/line_nothing_but_the_graph.png +0 -0
- data/test/output_java/line_one_value.png +0 -0
- data/test/output_java/line_one_value_array.png +0 -0
- data/test/output_java/line_pos_neg.png +0 -0
- data/test/output_java/line_pos_neg_400.png +0 -0
- data/test/output_java/line_similar_high_end_values.png +0 -0
- data/test/output_java/line_similar_high_end_values_with_floor.png +0 -0
- data/test/output_java/line_small_small_zero.png +0 -0
- data/test/output_java/line_small_values.png +0 -0
- data/test/output_java/line_small_values_small.png +0 -0
- data/test/output_java/line_small_zero.png +0 -0
- data/test/output_java/line_some_nil_points.png +0 -0
- data/test/output_java/line_theme_37signals_.png +0 -0
- data/test/output_java/line_theme_37signals_400.png +0 -0
- data/test/output_java/line_theme_keynote_.png +0 -0
- data/test/output_java/line_theme_keynote_400.png +0 -0
- data/test/output_java/line_theme_odeo_.png +0 -0
- data/test/output_java/line_theme_odeo_400.png +0 -0
- data/test/output_java/line_theme_rails_keynote_.png +0 -0
- data/test/output_java/line_theme_rails_keynote_400.png +0 -0
- data/test/output_java/line_tiny.png +0 -0
- data/test/output_java/line_transparent.png +0 -0
- data/test/output_java/line_very_small.png +0 -0
- data/test/output_java/line_wide_graph.png +0 -0
- data/test/output_java/line_wide_graph_small.png +0 -0
- data/test/output_java/line_xy.png +0 -0
- data/test/output_java/line_xy_pairs.png +0 -0
- data/test/output_java/line_y_axis_increment.png +0 -0
- data/test/output_java/mini_bar.png +0 -0
- data/test/output_java/mini_pie.png +0 -0
- data/test/output_java/mini_pie_right_legend.png +0 -0
- data/test/output_java/mini_side_bar.png +0 -0
- data/test/output_java/mini_side_bar_multi_color.png +0 -0
- data/test/output_java/net_dots_tiny.png +0 -0
- data/test/output_java/net_large.png +0 -0
- data/test/output_java/net_many.png +0 -0
- data/test/output_java/net_many_nets_small.png +0 -0
- data/test/output_java/net_no_data.png +0 -0
- data/test/output_java/net_no_data_msg.png +0 -0
- data/test/output_java/net_no_data_other.png +0 -0
- data/test/output_java/net_no_legend.png +0 -0
- data/test/output_java/net_no_net_markers.png +0 -0
- data/test/output_java/net_no_title.png +0 -0
- data/test/output_java/net_nothing_but_the_graph.png +0 -0
- data/test/output_java/net_similar_high_end_values.png +0 -0
- data/test/output_java/net_small.png +0 -0
- data/test/output_java/net_small_small.png +0 -0
- data/test/output_java/net_small_small_zero.png +0 -0
- data/test/output_java/net_small_zero.png +0 -0
- data/test/output_java/net_wide_graph.png +0 -0
- data/test/output_java/net_wide_graph_small.png +0 -0
- data/test/output_java/pie_equal.png +0 -0
- data/test/output_java/pie_grey.png +0 -0
- data/test/output_java/pie_keynote.png +0 -0
- data/test/output_java/pie_keynote_small.png +0 -0
- data/test/output_java/pie_legend.png +0 -0
- data/test/output_java/pie_legend_small.png +0 -0
- data/test/output_java/pie_nearly_equal.png +0 -0
- data/test/output_java/pie_one_val.png +0 -0
- data/test/output_java/pie_pastel.png +0 -0
- data/test/output_java/pie_simple.png +0 -0
- data/test/output_java/pie_wide.png +0 -0
- data/test/output_java/pie_wrapped_legend_16_400.png +0 -0
- data/test/output_java/pie_wrapped_legend_16_800.png +0 -0
- data/test/output_java/pie_wrapped_legend_30_400.png +0 -0
- data/test/output_java/pie_wrapped_legend_30_800.png +0 -0
- data/test/output_java/pie_wrapped_legend_4_400.png +0 -0
- data/test/output_java/pie_wrapped_legend_4_800.png +0 -0
- data/test/output_java/pie_wrapped_legend__400.png +0 -0
- data/test/output_java/pie_wrapped_legend__800.png +0 -0
- data/test/output_java/pie_zero.png +0 -0
- data/test/output_java/scatter_all_neg.png +0 -0
- data/test/output_java/scatter_all_neg_400.png +0 -0
- data/test/output_java/scatter_basic.png +0 -0
- data/test/output_java/scatter_many.png +0 -0
- data/test/output_java/scatter_no_data.png +0 -0
- data/test/output_java/scatter_no_data_msg.png +0 -0
- data/test/output_java/scatter_no_data_other.png +0 -0
- data/test/output_java/scatter_no_hide.png +0 -0
- data/test/output_java/scatter_no_labels.png +0 -0
- data/test/output_java/scatter_no_legend.png +0 -0
- data/test/output_java/scatter_no_line_markers.png +0 -0
- data/test/output_java/scatter_no_title.png +0 -0
- data/test/output_java/scatter_nothing_but_the_graph.png +0 -0
- data/test/output_java/scatter_pos_neg.png +0 -0
- data/test/output_java/scatter_pos_neg_400.png +0 -0
- data/test/output_java/scatter_wide_graph.png +0 -0
- data/test/output_java/scatter_wide_graph_small.png +0 -0
- data/test/output_java/scene_hazy_night.png +0 -0
- data/test/output_java/scene_not_hazy_day.png +0 -0
- data/test/output_java/scene_partly_cloudy_day.png +0 -0
- data/test/output_java/scene_stormy_day.png +0 -0
- data/test/output_java/scene_stormy_night.png +0 -0
- data/test/output_java/side_bar.png +0 -0
- data/test/output_java/side_bar_data_range.png +0 -0
- data/test/output_java/side_bar_labels.png +0 -0
- data/test/output_java/side_bar_spacing_full.png +0 -0
- data/test/output_java/side_bar_spacing_half.png +0 -0
- data/test/output_java/side_bar_spacing_none.png +0 -0
- data/test/output_java/side_stacked_bar_keynote.png +0 -0
- data/test/output_java/side_stacked_bar_keynote_small.png +0 -0
- data/test/output_java/side_stacked_bar_labels.png +0 -0
- data/test/output_java/side_stacked_bar_long_label.png +0 -0
- data/test/output_java/side_stacked_bar_wide.png +0 -0
- data/test/output_java/spider_37signals.png +0 -0
- data/test/output_java/spider_equal.png +0 -0
- data/test/output_java/spider_keynote.png +0 -0
- data/test/output_java/spider_legend.png +0 -0
- data/test/output_java/spider_legend_small.png +0 -0
- data/test/output_java/spider_lots_of_data.png +0 -0
- data/test/output_java/spider_lots_of_data_normal_names.png +0 -0
- data/test/output_java/spider_nearly_equal.png +0 -0
- data/test/output_java/spider_no_axes.png +0 -0
- data/test/output_java/spider_no_background.png +0 -0
- data/test/output_java/spider_no_print.png +0 -0
- data/test/output_java/spider_overlay_1.png +0 -0
- data/test/output_java/spider_overlay_2.png +0 -0
- data/test/output_java/spider_rotation.png +0 -0
- data/test/output_java/spider_small.png +0 -0
- data/test/output_java/spider_wide.png +0 -0
- data/test/output_java/spider_zero.png +0 -0
- data/test/output_java/stacked_area_keynote.png +0 -0
- data/test/output_java/stacked_area_keynote_small.png +0 -0
- data/test/output_java/stacked_bar_keynote.png +0 -0
- data/test/output_java/stacked_bar_keynote_small.png +0 -0
- data/test/test_accumulator_bar.rb +7 -6
- data/test/test_area.rb +2 -2
- data/test/test_bar.rb +296 -112
- data/test/test_bezier.rb +33 -0
- data/test/test_bullet.rb +26 -26
- data/test/test_dot.rb +44 -54
- data/test/test_legend.rb +29 -29
- data/test/test_line.rb +250 -218
- data/test/test_net.rb +2 -1
- data/test/test_pie.rb +2 -2
- data/test/test_scatter.rb +85 -85
- data/test/test_side_bar.rb +13 -0
- data/test/test_sidestacked_bar.rb +16 -0
- data/test/test_spider.rb +11 -1
- data/test/test_stacked_area.rb +5 -5
- metadata +1041 -49
- data/.rvmrc +0 -5
- data/Gemfile.lock +0 -20
- data/LICENSE.txt +0 -22
- data/README.txt +0 -43
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
require File.dirname(__FILE__) +
|
|
1
|
+
require File.dirname(__FILE__) + '/gruff_test_case'
|
|
2
2
|
|
|
3
3
|
class TestGruffAccumulatorBar < GruffTestCase
|
|
4
4
|
|
|
5
5
|
# TODO Delete old output files once when starting tests
|
|
6
6
|
|
|
7
7
|
def setup
|
|
8
|
+
super
|
|
8
9
|
@datasets = [
|
|
9
10
|
(1..20).to_a.map { rand(10) }
|
|
10
11
|
]
|
|
@@ -12,7 +13,7 @@ class TestGruffAccumulatorBar < GruffTestCase
|
|
|
12
13
|
|
|
13
14
|
def test_accumulator
|
|
14
15
|
g = Gruff::AccumulatorBar.new 500
|
|
15
|
-
g.title =
|
|
16
|
+
g.title = 'Your Savings'
|
|
16
17
|
g.hide_legend = true
|
|
17
18
|
|
|
18
19
|
# g.font = File.expand_path(File.dirname(__FILE__) + "/../assets/fonts/ATMA____.TTF")
|
|
@@ -20,10 +21,10 @@ class TestGruffAccumulatorBar < GruffTestCase
|
|
|
20
21
|
g.marker_font_size = 18
|
|
21
22
|
|
|
22
23
|
g.theme = {
|
|
23
|
-
:colors => ['#aedaa9', '#12a702'],
|
|
24
|
+
:colors => ['#aedaa9', '#12a702'],
|
|
24
25
|
:marker_color => '#dddddd',
|
|
25
26
|
:font_color => 'black',
|
|
26
|
-
:background_colors =>
|
|
27
|
+
:background_colors => 'white'
|
|
27
28
|
# :background_image => File.expand_path(File.dirname(__FILE__) + "/../assets/backgrounds/43things.png")
|
|
28
29
|
}
|
|
29
30
|
|
|
@@ -35,7 +36,7 @@ class TestGruffAccumulatorBar < GruffTestCase
|
|
|
35
36
|
g.maximum_value = 1000
|
|
36
37
|
g.minimum_value = 0
|
|
37
38
|
|
|
38
|
-
g.write(
|
|
39
|
+
g.write('test/output/accum_bar.png')
|
|
39
40
|
end
|
|
40
41
|
|
|
41
42
|
def test_too_many_args
|
|
@@ -43,7 +44,7 @@ class TestGruffAccumulatorBar < GruffTestCase
|
|
|
43
44
|
g = Gruff::AccumulatorBar.new
|
|
44
45
|
g.data 'First', [1,1,1]
|
|
45
46
|
g.data 'Too Many', [1,1,1]
|
|
46
|
-
g.write(
|
|
47
|
+
g.write('test/output/_SHOULD_NOT_ACTUALLY_BE_WRITTEN.png')
|
|
47
48
|
}
|
|
48
49
|
end
|
|
49
50
|
|
data/test/test_area.rb
CHANGED
|
@@ -5,6 +5,7 @@ require File.dirname(__FILE__) + "/gruff_test_case"
|
|
|
5
5
|
class TestGruffArea < 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]],
|
|
@@ -22,8 +23,7 @@ class TestGruffArea < GruffTestCase
|
|
|
22
23
|
5 => '6/12',
|
|
23
24
|
6 => '6/21',
|
|
24
25
|
7 => '6/28',
|
|
25
|
-
}
|
|
26
|
-
|
|
26
|
+
}
|
|
27
27
|
end
|
|
28
28
|
|
|
29
29
|
def test_area_graph
|
data/test/test_bar.rb
CHANGED
|
@@ -1,80 +1,87 @@
|
|
|
1
1
|
#!/usr/bin/ruby
|
|
2
2
|
|
|
3
|
-
require File.dirname(__FILE__) +
|
|
3
|
+
require File.dirname(__FILE__) + '/gruff_test_case'
|
|
4
4
|
|
|
5
5
|
class TestGruffBar < GruffTestCase
|
|
6
6
|
|
|
7
7
|
# TODO Delete old output files once when starting tests
|
|
8
8
|
|
|
9
9
|
def setup
|
|
10
|
+
super
|
|
10
11
|
@datasets = [
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
12
|
+
[:Jimmy, [25, 36, 86, 39]],
|
|
13
|
+
[:Charles, [80, 54, 67, 54]],
|
|
14
|
+
[:Julie, [22, 29, 35, 38]],
|
|
15
|
+
#[:Jane, [95, 95, 95, 90, 85, 80, 88, 100]],
|
|
16
|
+
#[:Philip, [90, 34, 23, 12, 78, 89, 98, 88]],
|
|
17
|
+
#["Arthur", [5, 10, 13, 11, 6, 16, 22, 32]],
|
|
18
|
+
]
|
|
18
19
|
end
|
|
19
20
|
|
|
20
21
|
def test_bar_graph
|
|
21
22
|
g = setup_basic_graph
|
|
22
|
-
g.title =
|
|
23
|
-
g.
|
|
24
|
-
|
|
25
|
-
|
|
23
|
+
g.title = 'Bar Chart'
|
|
24
|
+
g.write('test/output/bar_keynote.png')
|
|
25
|
+
|
|
26
26
|
g = setup_basic_graph
|
|
27
|
-
g.title =
|
|
28
|
-
g.
|
|
29
|
-
g.write(
|
|
30
|
-
|
|
27
|
+
g.title = 'Visual Multi-Line Bar Graph Test'
|
|
28
|
+
g.theme = Gruff::Themes::RAILS_KEYNOTE
|
|
29
|
+
g.write('test/output/bar_rails_keynote.png')
|
|
30
|
+
|
|
31
31
|
g = setup_basic_graph
|
|
32
|
-
g.title =
|
|
33
|
-
g.
|
|
34
|
-
g.write(
|
|
32
|
+
g.title = 'Visual Multi-Line Bar Graph Test'
|
|
33
|
+
g.theme = Gruff::Themes::ODEO
|
|
34
|
+
g.write('test/output/bar_odeo.png')
|
|
35
35
|
end
|
|
36
|
-
|
|
36
|
+
|
|
37
|
+
def test_title_margin
|
|
38
|
+
g = setup_basic_graph
|
|
39
|
+
g.title = 'Bar Graph with Title Margin = 100'
|
|
40
|
+
g.title_margin = 100
|
|
41
|
+
g.write('test/output/bar_title_margin.png')
|
|
42
|
+
end
|
|
43
|
+
|
|
37
44
|
def test_thousand_separators
|
|
38
45
|
g = Gruff::Bar.new(600)
|
|
39
|
-
g.title =
|
|
46
|
+
g.title = 'Formatted numbers'
|
|
40
47
|
g.marker_count = 8
|
|
41
|
-
g.data(
|
|
42
|
-
g.write(
|
|
48
|
+
g.data('data', [4025, 1024, 50257, 703672, 1580456])
|
|
49
|
+
g.write('test/output/bar_formatted_numbers.png')
|
|
43
50
|
end
|
|
44
51
|
|
|
45
52
|
def test_bar_graph_set_colors
|
|
46
53
|
g = Gruff::Bar.new
|
|
47
|
-
g.title =
|
|
54
|
+
g.title = 'Bar Graph With Manual Colors'
|
|
48
55
|
g.legend_margin = 50
|
|
49
56
|
g.labels = {
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
57
|
+
0 => '5/6',
|
|
58
|
+
1 => '5/15',
|
|
59
|
+
2 => '5/24',
|
|
60
|
+
3 => '5/30',
|
|
54
61
|
}
|
|
55
62
|
g.data(:Art, [0, 5, 8, 15], '#990000')
|
|
56
63
|
g.data(:Philosophy, [10, 3, 2, 8], '#009900')
|
|
57
64
|
g.data(:Science, [2, 15, 8, 11], '#990099')
|
|
58
65
|
|
|
59
66
|
g.minimum_value = 0
|
|
60
|
-
|
|
61
|
-
g.write(
|
|
67
|
+
|
|
68
|
+
g.write('test/output/bar_manual_colors.png')
|
|
62
69
|
end
|
|
63
70
|
|
|
64
71
|
def test_bar_graph_small
|
|
65
72
|
g = Gruff::Bar.new(400)
|
|
66
|
-
g.title =
|
|
73
|
+
g.title = 'Visual Multi-Line Bar Graph Test'
|
|
67
74
|
g.labels = {
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
75
|
+
0 => '5/6',
|
|
76
|
+
1 => '5/15',
|
|
77
|
+
2 => '5/24',
|
|
78
|
+
3 => '5/30',
|
|
72
79
|
}
|
|
73
80
|
@datasets.each do |data|
|
|
74
81
|
g.data(data[0], data[1])
|
|
75
82
|
end
|
|
76
83
|
|
|
77
|
-
g.write(
|
|
84
|
+
g.write('test/output/bar_keynote_small.png')
|
|
78
85
|
end
|
|
79
86
|
|
|
80
87
|
# Somewhat worthless test. Should an error be thrown?
|
|
@@ -88,125 +95,125 @@ class TestGruffBar < GruffTestCase
|
|
|
88
95
|
|
|
89
96
|
def test_no_line_markers
|
|
90
97
|
g = setup_basic_graph(400)
|
|
91
|
-
g.title =
|
|
98
|
+
g.title = 'No Line Markers'
|
|
92
99
|
g.hide_line_markers = true
|
|
93
|
-
g.write(
|
|
100
|
+
g.write('test/output/bar_no_line_markers.png')
|
|
94
101
|
end
|
|
95
102
|
|
|
96
103
|
def test_no_legend
|
|
97
104
|
g = setup_basic_graph(400)
|
|
98
|
-
g.title =
|
|
105
|
+
g.title = 'No Legend'
|
|
99
106
|
g.hide_legend = true
|
|
100
|
-
g.write(
|
|
107
|
+
g.write('test/output/bar_no_legend.png')
|
|
101
108
|
end
|
|
102
109
|
|
|
103
110
|
def test_no_title
|
|
104
111
|
g = setup_basic_graph(400)
|
|
105
|
-
g.title =
|
|
112
|
+
g.title = 'No Title'
|
|
106
113
|
g.hide_title = true
|
|
107
|
-
g.write(
|
|
114
|
+
g.write('test/output/bar_no_title.png')
|
|
108
115
|
end
|
|
109
|
-
|
|
116
|
+
|
|
110
117
|
def test_no_title_or_legend
|
|
111
118
|
g = setup_basic_graph(400)
|
|
112
|
-
g.title =
|
|
119
|
+
g.title = 'No Title or Legend'
|
|
113
120
|
g.hide_legend = true
|
|
114
121
|
g.hide_title = true
|
|
115
|
-
g.write(
|
|
122
|
+
g.write('test/output/bar_no_title_or_legend.png')
|
|
116
123
|
end
|
|
117
124
|
|
|
118
125
|
def test_set_marker_count
|
|
119
126
|
g = setup_basic_graph(400)
|
|
120
|
-
g.title =
|
|
127
|
+
g.title = 'Set marker'
|
|
121
128
|
g.marker_count = 10
|
|
122
|
-
g.write(
|
|
129
|
+
g.write('test/output/bar_set_marker.png')
|
|
123
130
|
end
|
|
124
131
|
|
|
125
132
|
def test_set_legend_box_size
|
|
126
133
|
g = setup_basic_graph(400)
|
|
127
|
-
g.title =
|
|
134
|
+
g.title = 'Set Small Legend Box Size'
|
|
128
135
|
g.legend_box_size = 10.0
|
|
129
|
-
g.write(
|
|
130
|
-
|
|
136
|
+
g.write('test/output/bar_set_legend_box_size_sm.png')
|
|
137
|
+
|
|
131
138
|
g = setup_basic_graph(400)
|
|
132
|
-
g.title =
|
|
139
|
+
g.title = 'Set Large Legend Box Size'
|
|
133
140
|
g.legend_box_size = 50.0
|
|
134
|
-
g.write(
|
|
141
|
+
g.write('test/output/bar_set_legend_box_size_lg.png')
|
|
135
142
|
end
|
|
136
143
|
|
|
137
144
|
def test_x_y_labels
|
|
138
145
|
g = setup_basic_graph(400)
|
|
139
|
-
g.title =
|
|
146
|
+
g.title = 'X Y Labels'
|
|
140
147
|
g.x_axis_label = 'Score (%)'
|
|
141
|
-
g.y_axis_label =
|
|
142
|
-
g.write(
|
|
148
|
+
g.y_axis_label = 'Students'
|
|
149
|
+
g.write('test/output/bar_x_y_labels.png')
|
|
143
150
|
end
|
|
144
151
|
|
|
145
152
|
def test_wide_graph
|
|
146
153
|
g = setup_basic_graph('800x400')
|
|
147
|
-
g.title =
|
|
148
|
-
g.write(
|
|
154
|
+
g.title = 'Wide Graph'
|
|
155
|
+
g.write('test/output/bar_wide_graph.png')
|
|
149
156
|
|
|
150
157
|
g = setup_basic_graph('400x200')
|
|
151
|
-
g.title =
|
|
152
|
-
g.write(
|
|
158
|
+
g.title = 'Wide Graph Small'
|
|
159
|
+
g.write('test/output/bar_wide_graph_small.png')
|
|
153
160
|
end
|
|
154
161
|
|
|
155
162
|
|
|
156
163
|
def test_tall_graph
|
|
157
164
|
g = setup_basic_graph('400x600')
|
|
158
|
-
g.title =
|
|
159
|
-
g.write(
|
|
165
|
+
g.title = 'Tall Graph'
|
|
166
|
+
g.write('test/output/bar_tall_graph.png')
|
|
160
167
|
|
|
161
168
|
g = setup_basic_graph('200x400')
|
|
162
|
-
g.title =
|
|
163
|
-
g.write(
|
|
169
|
+
g.title = 'Tall Graph Small'
|
|
170
|
+
g.write('test/output/bar_tall_graph_small.png')
|
|
164
171
|
end
|
|
165
172
|
|
|
166
173
|
|
|
167
174
|
def test_one_value
|
|
168
175
|
g = Gruff::Bar.new
|
|
169
|
-
g.title =
|
|
176
|
+
g.title = 'One Value Graph Test'
|
|
170
177
|
g.labels = {
|
|
171
|
-
|
|
172
|
-
|
|
178
|
+
0 => '1',
|
|
179
|
+
1 => '2'
|
|
173
180
|
}
|
|
174
|
-
g.data('one', [1,1])
|
|
181
|
+
g.data('one', [1, 1])
|
|
175
182
|
|
|
176
|
-
g.write(
|
|
183
|
+
g.write('test/output/bar_one_value.png')
|
|
177
184
|
end
|
|
178
185
|
|
|
179
186
|
|
|
180
187
|
def test_negative
|
|
181
188
|
g = Gruff::Bar.new
|
|
182
|
-
g.title =
|
|
189
|
+
g.title = 'Pos/Neg Bar Graph Test'
|
|
183
190
|
g.labels = {
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
191
|
+
0 => '5/6',
|
|
192
|
+
1 => '5/15',
|
|
193
|
+
2 => '5/24',
|
|
194
|
+
3 => '5/30',
|
|
188
195
|
}
|
|
189
196
|
g.data(:apples, [-1, 0, 4, -4])
|
|
190
197
|
g.data(:peaches, [10, 8, 6, 3])
|
|
191
198
|
|
|
192
|
-
g.write(
|
|
199
|
+
g.write('test/output/bar_pos_neg.png')
|
|
193
200
|
end
|
|
194
201
|
|
|
195
202
|
|
|
196
203
|
def test_nearly_zero
|
|
197
204
|
g = Gruff::Bar.new
|
|
198
|
-
g.title =
|
|
205
|
+
g.title = 'Nearly Zero Graph'
|
|
199
206
|
g.labels = {
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
207
|
+
0 => '5/6',
|
|
208
|
+
1 => '5/15',
|
|
209
|
+
2 => '5/24',
|
|
210
|
+
3 => '5/30',
|
|
204
211
|
}
|
|
205
212
|
g.data(:apples, [1, 2, 3, 4])
|
|
206
213
|
g.data(:peaches, [4, 3, 2, 1])
|
|
207
214
|
g.minimum_value = 0
|
|
208
215
|
g.maximum_value = 10
|
|
209
|
-
g.write(
|
|
216
|
+
g.write('test/output/bar_nearly_zero_max_10.png')
|
|
210
217
|
end
|
|
211
218
|
|
|
212
219
|
def test_y_axis_increment
|
|
@@ -220,10 +227,10 @@ class TestGruffBar < GruffTestCase
|
|
|
220
227
|
g = Gruff::Bar.new
|
|
221
228
|
g.title = "Y Axis Set to #{increment}"
|
|
222
229
|
g.labels = {
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
230
|
+
0 => '5/6',
|
|
231
|
+
1 => '5/15',
|
|
232
|
+
2 => '5/24',
|
|
233
|
+
3 => '5/30',
|
|
227
234
|
}
|
|
228
235
|
g.y_axis_increment = increment
|
|
229
236
|
g.data(:apples, [1, 0.2, 0.5, 0.7])
|
|
@@ -231,51 +238,171 @@ class TestGruffBar < GruffTestCase
|
|
|
231
238
|
g.write("test/output/bar_y_increment_#{increment}.png")
|
|
232
239
|
end
|
|
233
240
|
|
|
241
|
+
def test_custom_spacing
|
|
242
|
+
g = Gruff::Bar.new
|
|
243
|
+
g.spacing_factor = 0
|
|
244
|
+
g.title = 'Zero spacing graff'
|
|
245
|
+
g.labels = {
|
|
246
|
+
0 => '5/6',
|
|
247
|
+
1 => '5/15',
|
|
248
|
+
2 => '5/24',
|
|
249
|
+
3 => '5/30',
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
g.data(:apples, [1, 5, 8, 4])
|
|
253
|
+
g.data(:peaches, [4, 1, 2, 10])
|
|
254
|
+
g.minimum_value = 0
|
|
255
|
+
g.maximum_value = 10
|
|
256
|
+
g.write('test/output/bar_zero_spacing.png')
|
|
257
|
+
end
|
|
258
|
+
|
|
259
|
+
def test_spacing_factor_does_not_accept_values_lt_0_and_gt_1
|
|
260
|
+
g = Gruff::Bar.new
|
|
261
|
+
|
|
262
|
+
assert_raise ArgumentError do
|
|
263
|
+
g.spacing_factor = 1.01
|
|
264
|
+
end
|
|
265
|
+
|
|
266
|
+
assert_raise ArgumentError do
|
|
267
|
+
g.spacing_factor = -0.01
|
|
268
|
+
end
|
|
269
|
+
end
|
|
234
270
|
|
|
235
271
|
def test_custom_theme
|
|
236
272
|
g = Gruff::Bar.new
|
|
237
|
-
g.title =
|
|
273
|
+
g.title = 'Custom Theme'
|
|
238
274
|
g.font = File.expand_path('CREABBRG.TTF', ENV['MAGICK_FONT_PATH'])
|
|
239
275
|
g.title_font_size = 60
|
|
240
276
|
g.legend_font_size = 32
|
|
241
277
|
g.marker_font_size = 32
|
|
242
278
|
g.theme = {
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
279
|
+
:colors => %w(#efd250 #666699 #e5573f #9595e2),
|
|
280
|
+
:marker_color => 'white',
|
|
281
|
+
:font_color => 'blue',
|
|
282
|
+
:background_image => 'assets/pc306715.jpg'
|
|
247
283
|
}
|
|
248
284
|
g.labels = {
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
285
|
+
0 => '5/6',
|
|
286
|
+
1 => '5/15',
|
|
287
|
+
2 => '5/24',
|
|
288
|
+
3 => '5/30',
|
|
253
289
|
}
|
|
254
290
|
g.data(:vancouver, [1, 2, 3, 4])
|
|
255
291
|
g.data(:seattle, [2, 4, 6, 8])
|
|
256
292
|
g.data(:portland, [3, 1, 7, 3])
|
|
257
293
|
g.data(:victoria, [4, 3, 5, 7])
|
|
258
294
|
g.minimum_value = 0
|
|
259
|
-
g.write(
|
|
295
|
+
g.write('test/output/bar_themed.png')
|
|
260
296
|
end
|
|
261
|
-
|
|
297
|
+
|
|
298
|
+
def test_background_gradient_top_bottom
|
|
299
|
+
g = Gruff::Bar.new
|
|
300
|
+
g.title = 'Background gradient top to bottom'
|
|
301
|
+
g.theme = {
|
|
302
|
+
:background_colors => %w(#ff0000 #00ff00),
|
|
303
|
+
:background_direction => :top_bottom,
|
|
304
|
+
}
|
|
305
|
+
g.labels = @labels
|
|
306
|
+
@datasets.each do |name, values|
|
|
307
|
+
g.data(name, values)
|
|
308
|
+
end
|
|
309
|
+
g.minimum_value = 0
|
|
310
|
+
write_test_file(g, 'bar_background_gradient_top_bottom.png')
|
|
311
|
+
end
|
|
312
|
+
|
|
313
|
+
def test_background_gradient_bottom_top
|
|
314
|
+
g = Gruff::Bar.new
|
|
315
|
+
g.title = 'Background gradient top to bottom'
|
|
316
|
+
g.theme = {
|
|
317
|
+
:background_colors => %w(#ff0000 #00ff00),
|
|
318
|
+
:background_direction => :bottom_top,
|
|
319
|
+
}
|
|
320
|
+
g.labels = @labels
|
|
321
|
+
@datasets.each do |name, values|
|
|
322
|
+
g.data(name, values)
|
|
323
|
+
end
|
|
324
|
+
g.minimum_value = 0
|
|
325
|
+
write_test_file(g, 'bar_background_gradient_bottom_top.png')
|
|
326
|
+
end
|
|
327
|
+
|
|
328
|
+
def test_background_gradient_left_right
|
|
329
|
+
g = Gruff::Bar.new
|
|
330
|
+
g.title = 'Background gradient left to right'
|
|
331
|
+
g.theme = {
|
|
332
|
+
:background_colors => %w(#ff0000 #00ff00),
|
|
333
|
+
:background_direction => :left_right,
|
|
334
|
+
}
|
|
335
|
+
g.labels = @labels
|
|
336
|
+
@datasets.each do |name, values|
|
|
337
|
+
g.data(name, values)
|
|
338
|
+
end
|
|
339
|
+
g.minimum_value = 0
|
|
340
|
+
write_test_file(g, 'bar_background_gradient_left_right.png')
|
|
341
|
+
end
|
|
342
|
+
|
|
343
|
+
def test_background_gradient_right_left
|
|
344
|
+
g = Gruff::Bar.new
|
|
345
|
+
g.title = 'Background gradient right to left'
|
|
346
|
+
g.theme = {
|
|
347
|
+
:background_colors => %w(#ff0000 #00ff00),
|
|
348
|
+
:background_direction => :right_left,
|
|
349
|
+
}
|
|
350
|
+
g.labels = @labels
|
|
351
|
+
@datasets.each do |name, values|
|
|
352
|
+
g.data(name, values)
|
|
353
|
+
end
|
|
354
|
+
g.minimum_value = 0
|
|
355
|
+
write_test_file(g, 'bar_background_gradient_right_left.png')
|
|
356
|
+
end
|
|
357
|
+
|
|
358
|
+
def test_background_gradient_topleft_bottomright
|
|
359
|
+
g = Gruff::Bar.new
|
|
360
|
+
g.title = 'Background gradient top left to bottom right'
|
|
361
|
+
g.theme = {
|
|
362
|
+
:background_colors => %w(#ff0000 #00ff00),
|
|
363
|
+
:background_direction => :topleft_bottomright,
|
|
364
|
+
}
|
|
365
|
+
g.labels = @labels
|
|
366
|
+
@datasets.each do |name, values|
|
|
367
|
+
g.data(name, values)
|
|
368
|
+
end
|
|
369
|
+
g.minimum_value = 0
|
|
370
|
+
write_test_file(g, 'bar_background_gradient_topleft_bottomright.png')
|
|
371
|
+
end
|
|
372
|
+
|
|
373
|
+
def test_background_gradient_topright_bottomleft
|
|
374
|
+
g = Gruff::Bar.new
|
|
375
|
+
g.title = 'Background gradient top right to bottom left'
|
|
376
|
+
g.title_font_size = 30
|
|
377
|
+
g.theme = {
|
|
378
|
+
:background_colors => %w(#ff0000 #00ff00),
|
|
379
|
+
:background_direction => :topright_bottomleft,
|
|
380
|
+
}
|
|
381
|
+
g.labels = @labels
|
|
382
|
+
@datasets.each do |name, values|
|
|
383
|
+
g.data(name, values)
|
|
384
|
+
end
|
|
385
|
+
g.minimum_value = 0
|
|
386
|
+
write_test_file(g, 'bar_background_gradient_topright_bottomleft.png')
|
|
387
|
+
end
|
|
388
|
+
|
|
262
389
|
def test_legend_should_not_overlap
|
|
263
390
|
g = Gruff::Bar.new(400)
|
|
264
391
|
g.theme_37signals()
|
|
265
392
|
g.title = 'My Graph'
|
|
266
|
-
g.data(
|
|
393
|
+
g.data('Apples Oranges Watermelon Apples Oranges', [1, 2, 3, 4, 4, 3])
|
|
267
394
|
g.data('Oranges', [4, 8, 7, 9, 8, 9])
|
|
268
395
|
g.data('Watermelon', [2, 3, 1, 5, 6, 8])
|
|
269
396
|
g.data('Peaches', [9, 9, 10, 8, 7, 9])
|
|
270
397
|
g.labels = {0 => '2003', 2 => '2004', 4 => '2005'}
|
|
271
|
-
g.write(
|
|
398
|
+
g.write('test/output/bar_long_legend_text.png')
|
|
272
399
|
end
|
|
273
400
|
|
|
274
401
|
def test_july_enhancements
|
|
275
402
|
g = Gruff::Bar.new(600)
|
|
276
403
|
g.hide_legend = true
|
|
277
|
-
g.title =
|
|
278
|
-
g.labels = (0..10).inject({}) { |memo, i| memo.merge({
|
|
404
|
+
g.title = 'Full speed ahead'
|
|
405
|
+
g.labels = (0..10).inject({}) { |memo, i| memo.merge({i => (i*10).to_s}) }
|
|
279
406
|
g.data(:apples, (0..9).map { rand(20)/10.0 })
|
|
280
407
|
g.y_axis_increment = 1.0
|
|
281
408
|
g.x_axis_label = 'Score (%)'
|
|
@@ -286,36 +413,93 @@ class TestGruffBar < GruffTestCase
|
|
|
286
413
|
def test_bar_spacing
|
|
287
414
|
g = setup_basic_graph
|
|
288
415
|
g.bar_spacing = 0
|
|
289
|
-
g.title =
|
|
290
|
-
g.write(
|
|
416
|
+
g.title = '100% spacing between bars'
|
|
417
|
+
g.write('test/output/bar_spacing_full.png')
|
|
291
418
|
|
|
292
419
|
g = setup_basic_graph
|
|
293
420
|
g.bar_spacing = 0.5
|
|
294
|
-
g.title =
|
|
295
|
-
g.write(
|
|
421
|
+
g.title = '50% spacing between bars'
|
|
422
|
+
g.write('test/output/bar_spacing_half.png')
|
|
296
423
|
|
|
297
424
|
g = setup_basic_graph
|
|
298
425
|
g.bar_spacing = 1
|
|
299
|
-
g.title =
|
|
300
|
-
g.write(
|
|
426
|
+
g.title = '0% spacing between bars'
|
|
427
|
+
g.write('test/output/bar_spacing_none.png')
|
|
301
428
|
end
|
|
302
429
|
|
|
303
|
-
|
|
430
|
+
def test_set_label_stagger_height
|
|
431
|
+
g = setup_long_labelled_graph
|
|
432
|
+
g.title = 'Staggered labels'
|
|
433
|
+
g.label_stagger_height = 30
|
|
434
|
+
g.write('test/output/bar_set_label_stagger_height.png')
|
|
435
|
+
end
|
|
436
|
+
|
|
437
|
+
def test_set_label_max_size_and_label_truncation_style
|
|
438
|
+
# Absolute trunc
|
|
439
|
+
g = setup_long_labelled_graph
|
|
440
|
+
g.title = 'Absolute truncation (13 chars)'
|
|
441
|
+
g.label_max_size = 13
|
|
442
|
+
g.label_truncation_style = :absolute
|
|
443
|
+
g.write('test/output/bar_set_absolute_trunc.png')
|
|
444
|
+
|
|
445
|
+
# Trailing Dots trunc
|
|
446
|
+
g = setup_long_labelled_graph
|
|
447
|
+
g.title = 'Trailing dots truncation (6 chars inc dots)'
|
|
448
|
+
g.label_max_size = 6
|
|
449
|
+
g.label_truncation_style = :trailing_dots
|
|
450
|
+
g.write('test/output/bar_set_trailing_dots_trunc.png')
|
|
451
|
+
end
|
|
452
|
+
|
|
453
|
+
def test_bar_value_labels
|
|
454
|
+
g = setup_basic_graph
|
|
455
|
+
g.show_labels_for_bar_values = true
|
|
456
|
+
g.write('test/output/bar_value_labels.png')
|
|
457
|
+
end
|
|
458
|
+
|
|
459
|
+
def test_zero_marker_count
|
|
460
|
+
g = setup_basic_graph
|
|
461
|
+
g.marker_count = 0
|
|
462
|
+
g.write('test/output/bar_zero_marker_count.png')
|
|
463
|
+
end
|
|
464
|
+
|
|
465
|
+
def test_zero_marker_shadow
|
|
466
|
+
g = setup_basic_graph
|
|
467
|
+
g.title = 'Bar Chart with Marker Shadow'
|
|
468
|
+
g.marker_shadow_color = '#888888'
|
|
469
|
+
g.write('test/output/bar_marker_shadow.png')
|
|
470
|
+
end
|
|
471
|
+
|
|
472
|
+
protected
|
|
304
473
|
|
|
305
474
|
def setup_basic_graph(size=800)
|
|
306
475
|
g = Gruff::Bar.new(size)
|
|
307
|
-
g.title =
|
|
476
|
+
g.title = 'My Bar Graph'
|
|
308
477
|
g.labels = {
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
478
|
+
0 => '5/6',
|
|
479
|
+
1 => '5/15',
|
|
480
|
+
2 => '5/24',
|
|
481
|
+
3 => '5/30',
|
|
313
482
|
}
|
|
314
483
|
@datasets.each do |data|
|
|
315
484
|
g.data(data[0], data[1])
|
|
316
485
|
end
|
|
317
486
|
g
|
|
318
487
|
end
|
|
319
|
-
|
|
488
|
+
|
|
489
|
+
def setup_long_labelled_graph(size=500)
|
|
490
|
+
g = Gruff::Bar.new(size)
|
|
491
|
+
g.title = 'A Graph for All Seasons'
|
|
492
|
+
g.labels = {
|
|
493
|
+
0 => 'January was a cold one',
|
|
494
|
+
1 => 'February is little better',
|
|
495
|
+
2 => 'March will bring me hares',
|
|
496
|
+
3 => 'April and I\'m a fool'
|
|
497
|
+
}
|
|
498
|
+
|
|
499
|
+
@datasets.each do |data|
|
|
500
|
+
g.data(data[0], data[1])
|
|
501
|
+
end
|
|
502
|
+
g
|
|
503
|
+
end
|
|
320
504
|
end
|
|
321
505
|
|