jparker-ruby-googlechart 0.5.0 → 0.6.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 (34) hide show
  1. data/lib/google_chart/{base.rb → abstract_chart.rb} +15 -9
  2. data/lib/google_chart/{axes.rb → axis.rb} +11 -11
  3. data/lib/google_chart/bar_chart.rb +31 -0
  4. data/lib/google_chart/bar_style.rb +19 -0
  5. data/lib/google_chart/{colors.rb → color.rb} +5 -3
  6. data/lib/google_chart/data.rb +36 -41
  7. data/lib/google_chart/{grid_lines.rb → grid_line.rb} +5 -5
  8. data/lib/google_chart/{legends.rb → legend.rb} +5 -3
  9. data/lib/google_chart/{line.rb → line_chart.rb} +10 -10
  10. data/lib/google_chart/{line_styles.rb → line_style.rb} +17 -16
  11. data/lib/google_chart/{range_markers.rb → range_marker.rb} +5 -5
  12. data/lib/google_chart/{titles.rb → title.rb} +5 -5
  13. data/lib/google_chart.rb +16 -15
  14. data/test/google_chart/{test_base.rb → test_abstract_chart.rb} +12 -4
  15. data/test/google_chart/{test_axes.rb → test_axis.rb} +2 -2
  16. data/test/google_chart/test_bar_chart.rb +51 -0
  17. data/test/google_chart/{test_bar_styles.rb → test_bar_style.rb} +2 -2
  18. data/test/google_chart/{test_colors.rb → test_color.rb} +2 -2
  19. data/test/google_chart/test_data.rb +78 -31
  20. data/test/google_chart/{test_grid_lines.rb → test_grid_line.rb} +2 -2
  21. data/test/google_chart/{test_legends.rb → test_legend.rb} +2 -2
  22. data/test/google_chart/test_line_chart.rb +51 -0
  23. data/test/google_chart/{test_line_styles.rb → test_line_style.rb} +2 -2
  24. data/test/google_chart/{test_range_markers.rb → test_range_marker.rb} +2 -2
  25. data/test/google_chart/{test_titles.rb → test_title.rb} +2 -2
  26. data/test/test_google_chart.rb +8 -2
  27. data/test/test_helper.rb +1 -1
  28. metadata +23 -25
  29. data/lib/google_chart/bar.rb +0 -27
  30. data/lib/google_chart/bar_styles.rb +0 -25
  31. data/lib/google_chart/sizes.rb +0 -16
  32. data/test/google_chart/test_bar.rb +0 -55
  33. data/test/google_chart/test_line.rb +0 -55
  34. data/test/google_chart/test_sizes.rb +0 -15
@@ -1,16 +1,28 @@
1
1
  module GoogleChart
2
- class Base
3
- @@base_url = 'http://chart.apis.google.com/chart'
2
+ class AbstractChart
3
+ @@base_url = 'http://chart.apis.google.com/chart'
4
+ @@default_size = '600x500'
4
5
 
5
6
  def initialize(options = {})
6
7
  options.each {|key, value| send("#{key}=", value) }
7
8
  yield self if block_given?
8
9
  end
9
10
 
11
+ def to_url
12
+ "#{@@base_url}?#{query_string}"
13
+ end
14
+
15
+ attr_writer :size
16
+
17
+ def size
18
+ @size ||= @@default_size
19
+ "chs=#{@size}"
20
+ end
21
+
10
22
  def self.inherited(klass)
11
23
  klass.class_eval do
12
24
  class_variable_set(:@@parameters, [])
13
- register!(:chart_type)
25
+ register!(:chart_type, :size)
14
26
  end
15
27
  end
16
28
 
@@ -28,12 +40,6 @@ module GoogleChart
28
40
  class_variable_get :@@parameters
29
41
  end
30
42
 
31
- # Collect all of the registered chart parameters and join them together
32
- # to form the URL for the chart to be generated.
33
- def to_url
34
- "#{@@base_url}?#{query_string}"
35
- end
36
-
37
43
  private
38
44
  def query_string
39
45
  self.class.registry.map {|m| send(m) }.compact.join('&')
@@ -1,22 +1,12 @@
1
1
  # <URL:http://code.google.com/apis/chart/#multiple_axes_labels>
2
2
  module GoogleChart
3
- module Axes
3
+ module Axis
4
4
  def self.included(klass)
5
5
  klass.register!(:axes)
6
6
  end
7
7
 
8
8
  # TODO: Add support for axis label positions/styles, support for multiple label sets per axis
9
9
 
10
- def axes
11
- unless @axes.nil? || @axes.empty?
12
- [
13
- 'chxt=' + @axes.join(','),
14
- @axis_labels.empty? ? nil : 'chxl=' + @axis_labels.join('|'),
15
- @axis_ranges.empty? ? nil : 'chxr=' + @axis_ranges.join('|')
16
- ].compact.join('&')
17
- end
18
- end
19
-
20
10
  def axes=(axes)
21
11
  idx = 0
22
12
  @axes, @axis_labels, @axis_ranges = [], [], []
@@ -36,5 +26,15 @@ module GoogleChart
36
26
  end
37
27
  end
38
28
  end
29
+
30
+ def axes
31
+ unless @axes.nil? || @axes.empty?
32
+ [
33
+ 'chxt=' + @axes.join(','),
34
+ @axis_labels.empty? ? nil : 'chxl=' + @axis_labels.join('|'),
35
+ @axis_ranges.empty? ? nil : 'chxr=' + @axis_ranges.join('|')
36
+ ].compact.join('&')
37
+ end
38
+ end
39
39
  end
40
40
  end
@@ -0,0 +1,31 @@
1
+ module GoogleChart
2
+ class BarChart < AbstractChart
3
+ include Axis
4
+ include BarStyle
5
+ include Color
6
+ include Data
7
+ include GridLine
8
+ include Legend
9
+ include RangeMarker
10
+ include Title
11
+
12
+ @@orientations = {:horizontal => 'h', :vertical => 'v'}
13
+ @@groupings = {:grouped => 'g', :stacked => 's'}
14
+
15
+ attr_writer :orientation, :grouping
16
+
17
+ def horizontal=(arg)
18
+ self.orientation = arg ? :horizontal : :vertical
19
+ end
20
+
21
+ def grouped=(arg)
22
+ self.grouping = arg ? :grouped : :stacked
23
+ end
24
+
25
+ def chart_type
26
+ @grouping ||= :stacked
27
+ @orientation ||= :vertical
28
+ "cht=b#{@@orientations[@orientation]}#{@@groupings[@grouping]}"
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,19 @@
1
+ # <URL:http://code.google.com/apis/chart/#bar_width>
2
+ module GoogleChart
3
+ module BarStyle
4
+ def self.included(klass)
5
+ klass.register!(:style)
6
+ end
7
+
8
+ attr_writer :width
9
+
10
+ # TODO: raise error if bar spacing > group spacing?
11
+ def spacing=(spacing)
12
+ @spacing = [spacing].flatten
13
+ end
14
+
15
+ def style
16
+ "chbh=#{[@width, *@spacing].compact.join(',')}" if @width
17
+ end
18
+ end
19
+ end
@@ -1,14 +1,16 @@
1
1
  # <URL:http://code.google.com/apis/chart/#line_bar_pie_colors>
2
2
  module GoogleChart
3
- module Colors
3
+ module Color
4
4
  def self.included(klass)
5
5
  klass.register!(:color)
6
6
  end
7
7
 
8
- attr_writer :color
8
+ def color=(color)
9
+ @color = [color].flatten
10
+ end
9
11
 
10
12
  def color
11
- 'chco=' + [@color].flatten.join(',') if @color
13
+ "chco=#{@color.join(',')}" if @color
12
14
  end
13
15
  end
14
16
  end
@@ -7,82 +7,77 @@ module GoogleChart
7
7
 
8
8
  attr_writer :encoding, :scale
9
9
 
10
- @@simple_encoding = ('A'..'Z').to_a + ('a'..'z').to_a + ('0'..'9').to_a
11
- @@extended_alphabet = ('A'..'Z').to_a + ('a'..'z').to_a + ('0'..'9').to_a + %w[- .]
12
- @@extended_encoding = @@extended_alphabet.collect {|a|
13
- @@extended_alphabet.collect {|b| a + b }
14
- }.flatten
10
+ @@simple = ('A'..'Z').to_a + ('a'..'z').to_a + ('0'..'9').to_a
11
+ alphabet = ('A'..'Z').to_a + ('a'..'z').to_a + ('0'..'9').to_a + %w[- .]
12
+ @@extended = alphabet.map {|a| alphabet.map {|b| a + b }}.flatten
15
13
 
16
- def data
17
- 'chd=' + send(:"#{encoding}_encode", @data) if @data
14
+ def data=(data)
15
+ @data = data.any? {|e| Array === e } ? data : [data]
18
16
  end
19
17
 
20
- def data=(data)
21
- @data = data.any? {|e| e.is_a?(Array) } ? data : [data]
18
+ def data
19
+ 'chd=' + send(:"#{encoding}_encode", @data) if @data
22
20
  end
23
21
 
24
22
  private
25
23
  def encoding
26
- @encoding || :simple
24
+ @encoding ||= :simple
27
25
  end
28
26
 
29
- def scale?
27
+ def scale
28
+ if @scale.nil?
29
+ min = [0, @data.map {|set| set.min }.min].min
30
+ max = @data.map {|set| set.max }.max
31
+ @scale = min..max
32
+ end
30
33
  @scale
31
34
  end
32
35
 
33
- def scale_set(set, range)
34
- if scale?
35
- min, max = set.min, set.max
36
- if min < 0
37
- set.collect! {|n| n - min }
38
- max -= min
39
- end
40
- set.collect {|n| (n * range).to_f / max if n }
41
- else
42
- set
43
- end
36
+ def normalize(set, encoding_max)
37
+ min, max = scale.min, scale.max
38
+ set.map {|e| (e.to_f - min) / (max - min) * encoding_max if e }
44
39
  end
45
40
 
46
41
  def simple_encode(data)
47
- 's:' + data.collect {|set|
48
- scale_set(set, @@simple_encoding.size - 1).collect {|n|
42
+ 's:' + data.map {|set|
43
+ normalize(set, @@simple.size - 1).map {|e|
49
44
  case
50
- when n.nil? then '_'
51
- when n <= 0 then @@simple_encoding[0]
52
- when n >= @@simple_encoding.size then @@simple_encoding[-1]
53
- else @@simple_encoding[n.round]
45
+ when e.nil? then '_'
46
+ when e <= 0 then @@simple[0]
47
+ when e >= @@simple.size then @@simple[-1]
48
+ else @@simple[e.round]
54
49
  end
55
50
  }.join
56
51
  }.join(',')
57
52
  end
58
53
 
59
54
  def extended_encode(data)
60
- 'e:' + data.collect {|set|
61
- scale_set(set, @@extended_encoding.size - 1).collect {|n|
55
+ 'e:' + data.map {|set|
56
+ normalize(set, @@extended.size - 1).collect {|e|
62
57
  case
63
- when n.nil? then '__'
64
- when n <= 0 then @@extended_encoding[0]
65
- when n >= @@extended_encoding.size then @@extended_encoding[-1]
66
- else @@extended_encoding[n.round]
58
+ when e.nil? then '__'
59
+ when e <= 0 then @@extended[0]
60
+ when e >= @@extended.size then @@extended[-1]
61
+ else @@extended[e.round]
67
62
  end
68
63
  }.join
69
64
  }.join(',')
70
65
  end
71
66
 
72
67
  def text_encode(data)
73
- 't:' + data.collect {|set|
74
- scale_set(set, 100).collect {|n|
68
+ 't:' + data.map {|set|
69
+ normalize(set, 100).map {|e|
75
70
  case
76
- when n.nil? then -1
77
- when n < 0 then 0
78
- when n > 100 then 100
71
+ when e.nil? then -1
72
+ when e < 0 then 0
73
+ when e > 100 then 100
79
74
  else
80
75
  # More than one decimal place yields negligible resolution at the
81
76
  # potentially great cost of one extra character in the URL. Avoid
82
77
  # this by rounding to the nearest tenth. Further round down to an
83
78
  # integer when possible to save the extra two characters (".0").
84
- m = (n * 10).round
85
- m / (m % 10 == 0 ? 10 : 10.0)
79
+ n = (e * 10).round
80
+ n / (n % 10 == 0 ? 10 : 10.0)
86
81
  end
87
82
  }.join(',')
88
83
  }.join('|')
@@ -1,6 +1,6 @@
1
1
  # <URL:http://code.google.com/apis/chart/#grid>
2
2
  module GoogleChart
3
- module GridLines
3
+ module GridLine
4
4
  def self.included(klass)
5
5
  klass.register!(:grid)
6
6
  end
@@ -8,14 +8,14 @@ module GoogleChart
8
8
  @@grid_line_styles = { :solid => [1,0], :dash => [3,2], :dot => [1,2] }
9
9
  @@default_grid_step = 0
10
10
 
11
- def grid
12
- 'chg=' + @grid if @grid
13
- end
14
-
15
11
  def grid=(grid)
16
12
  grid[:x] ||= @@default_grid_step
17
13
  grid[:y] ||= @@default_grid_step
18
14
  @grid = [grid[:x], grid[:y], *@@grid_line_styles[grid[:style]]].compact.join(',')
19
15
  end
16
+
17
+ def grid
18
+ "chg=#{@grid}" if @grid
19
+ end
20
20
  end
21
21
  end
@@ -1,14 +1,16 @@
1
1
  # <URL:http://code.google.com/apis/chart/#chdl>
2
2
  module GoogleChart
3
- module Legends
3
+ module Legend
4
4
  def self.included(klass)
5
5
  klass.register!(:legend)
6
6
  end
7
7
 
8
- attr_writer :legend
8
+ def legend=(legend)
9
+ @legend = [legend].flatten.map {|l| CGI::escape(l) }
10
+ end
9
11
 
10
12
  def legend
11
- 'chdl=' + [@legend].flatten.collect {|l| CGI::escape(l) }.join('|') if @legend
13
+ "chdl=#{@legend.join('|')}" if @legend
12
14
  end
13
15
  end
14
16
  end
@@ -1,24 +1,24 @@
1
1
  module GoogleChart
2
- class Line < Base
2
+ class LineChart < AbstractChart
3
3
  @@chart_types = { :line => 'lc', :xy => 'lxy', :sparkline => 'ls' }
4
4
 
5
- include Axes
6
- include Colors
5
+ include Axis
6
+ include Color
7
7
  include Data
8
- include GridLines
9
- include Legends
10
- include LineStyles
11
- include RangeMarkers
12
- include Sizes
13
- include Titles
8
+ include GridLine
9
+ include Legend
10
+ include LineStyle
11
+ include RangeMarker
12
+ include Title
14
13
 
15
14
  def chart_type
16
15
  @chart_type ||= @@chart_types[:line]
17
16
  'cht=' + @chart_type if @chart_type
18
17
  end
19
18
 
20
- def type=(chart_type)
19
+ def chart_type=(chart_type)
21
20
  @chart_type = @@chart_types[chart_type]
22
21
  end
22
+ alias_method :type=, :chart_type=
23
23
  end
24
24
  end
@@ -1,35 +1,36 @@
1
1
  # <URL:http://code.google.com/apis/chart/#line_styles>
2
2
  module GoogleChart
3
- module LineStyles
3
+ module LineStyle
4
4
  def self.included(klass)
5
5
  klass.register!(:style)
6
6
  end
7
7
 
8
- @@line_styles = { :solid => [1,1,0], :dash => [1,3,2], :dot => [1,1,2] }
9
- @@default_line_style = :solid
10
- @@default_line_width = 1
8
+ @@styles = { :solid => [1,1,0], :dash => [1,3,2], :dot => [1,1,2] }
9
+
10
+ @@default_style = :solid
11
+ @@default_width = 1
12
+
13
+ def style=(style)
14
+ @style = [style].flatten
15
+ end
16
+
17
+ def width=(width)
18
+ @width = [width].flatten
19
+ end
11
20
 
12
21
  def style
13
22
  @style ||= []
14
23
  @width ||= []
15
24
 
16
25
  # Pad @style and @width with defaults until they are equal in length
17
- (@style.size - @width.size).times { @width << @@default_line_width }
18
- (@width.size - @style.size).times { @style << @@default_line_style }
26
+ (@style.size - @width.size).times { @width << @@default_width }
27
+ (@width.size - @style.size).times { @style << @@default_style }
19
28
 
20
29
  unless @style.empty?
21
- 'chls=' + (0...@style.size).collect {|i|
22
- @@line_styles[@style[i]].collect {|n| n * @width[i] }.join(',')
30
+ 'chls=' + (0...@style.size).map {|i|
31
+ @@styles[@style[i]].map {|n| n * @width[i] }.join(',')
23
32
  }.join('|')
24
33
  end
25
34
  end
26
-
27
- def style=(style)
28
- @style = [style].flatten
29
- end
30
-
31
- def width=(width)
32
- @width = [width].flatten
33
- end
34
35
  end
35
36
  end
@@ -1,12 +1,16 @@
1
1
  # <URL:http://code.google.com/apis/chart/#hor_line_marker>
2
2
  module GoogleChart
3
- module RangeMarkers
3
+ module RangeMarker
4
4
  def self.included(klass)
5
5
  klass.register!(:ranges)
6
6
  end
7
7
 
8
8
  @@range_marker_orientations = { :h => 'r', :v => 'R' }
9
9
 
10
+ def ranges=(ranges)
11
+ @ranges = ranges.any? {|e| e.is_a?(Array) } ? ranges : [ranges]
12
+ end
13
+
10
14
  def ranges
11
15
  unless @ranges.nil? || @ranges.empty?
12
16
  'chm=' + @ranges.collect {|r|
@@ -18,9 +22,5 @@ module GoogleChart
18
22
  }.join('|')
19
23
  end
20
24
  end
21
-
22
- def ranges=(ranges)
23
- @ranges = ranges.any? {|e| e.is_a?(Array) } ? ranges : [ranges]
24
- end
25
25
  end
26
26
  end
@@ -1,16 +1,16 @@
1
- require 'cgi'
2
-
3
1
  # <URL:http://code.google.com/apis/chart/#chtt>
4
2
  module GoogleChart
5
- module Titles
3
+ module Title
6
4
  def self.included(klass)
7
5
  klass.register!(:title)
8
6
  end
9
7
 
10
- attr_writer :title
8
+ def title=(title)
9
+ @title = CGI::escape(title)
10
+ end
11
11
 
12
12
  def title
13
- 'chtt=' + CGI::escape(@title) if @title
13
+ "chtt=#{@title}" if @title
14
14
  end
15
15
  end
16
16
  end
data/lib/google_chart.rb CHANGED
@@ -1,29 +1,30 @@
1
1
  $:.unshift(File.dirname(__FILE__)) unless
2
2
  $:.include?(File.dirname(__FILE__)) || $:.include?(File.expand_path(File.dirname(__FILE__)))
3
3
 
4
- require 'google_chart/axes'
5
- require 'google_chart/bar_styles'
6
- require 'google_chart/colors'
4
+ require 'cgi'
5
+
6
+ require 'google_chart/axis'
7
+ require 'google_chart/bar_style'
8
+ require 'google_chart/color'
7
9
  require 'google_chart/data'
8
- require 'google_chart/grid_lines'
9
- require 'google_chart/legends'
10
- require 'google_chart/line_styles'
11
- require 'google_chart/range_markers'
12
- require 'google_chart/sizes'
13
- require 'google_chart/titles'
10
+ require 'google_chart/grid_line'
11
+ require 'google_chart/legend'
12
+ require 'google_chart/line_style'
13
+ require 'google_chart/range_marker'
14
+ require 'google_chart/title'
14
15
 
15
- require 'google_chart/base'
16
- require 'google_chart/bar'
17
- require 'google_chart/line'
16
+ require 'google_chart/abstract_chart'
17
+ require 'google_chart/bar_chart'
18
+ require 'google_chart/line_chart'
18
19
 
19
20
  module GoogleChart
20
- VERSION = '0.5.0'
21
+ VERSION = '0.6.0'
21
22
 
22
23
  def self.Line(options = {}, &block)
23
- GoogleChart::Line.new(options, &block).to_url
24
+ GoogleChart::LineChart.new(options, &block).to_url
24
25
  end
25
26
 
26
27
  def self.Bar(options = {}, &block)
27
- GoogleChart::Bar.new(options, &block).to_url
28
+ GoogleChart::BarChart.new(options, &block).to_url
28
29
  end
29
30
  end
@@ -1,8 +1,8 @@
1
1
  require File.dirname(__FILE__) + '/../test_helper'
2
2
 
3
- class TestBase < Test::Unit::TestCase
3
+ class TestAbstractChart < Test::Unit::TestCase
4
4
  should 'require descendent classes to define #chart_type method' do
5
- klass = Class.new(GoogleChart::Base)
5
+ klass = Class.new(GoogleChart::AbstractChart)
6
6
  assert_raise(NoMethodError, /chart_type/) { klass.new.to_url }
7
7
 
8
8
  klass.class_eval { def chart_type() end }
@@ -10,12 +10,20 @@ class TestBase < Test::Unit::TestCase
10
10
  end
11
11
 
12
12
  should 'allow descendent classes to maintain distinct parameter registries' do
13
- klass = Class.new(GoogleChart::Base)
14
- another_klass = Class.new(GoogleChart::Base)
13
+ klass = Class.new(GoogleChart::AbstractChart)
14
+ another_klass = Class.new(GoogleChart::AbstractChart)
15
15
  assert_not_same(another_klass.registry, klass.registry)
16
16
  end
17
17
 
18
18
  should 'begin URLs with Google Charts base URL' do
19
19
  assert_match(%r{\Ahttp://chart\.apis\.google\.com/chart\?}, Class.new(MockChart).new.to_url)
20
20
  end
21
+
22
+ should 'have a default chart size' do
23
+ assert_match(/\bchs=600x500\b/, Class.new(MockChart).new.to_url)
24
+ end
25
+
26
+ should 'accept custom chart sizes' do
27
+ assert_match(/\bchs=800x375\b/, Class.new(MockChart).new(:size => '800x375').to_url)
28
+ end
21
29
  end
@@ -1,8 +1,8 @@
1
1
  require File.dirname(__FILE__) + '/../test_helper'
2
2
 
3
- class TestAxes < Test::Unit::TestCase
3
+ class TestAxis < Test::Unit::TestCase
4
4
  def setup
5
- @klass = Class.new(MockChart).class_eval { include GoogleChart::Axes }
5
+ @klass = Class.new(MockChart).class_eval { include GoogleChart::Axis }
6
6
  end
7
7
 
8
8
  should 'not display axis parameter by default' do
@@ -0,0 +1,51 @@
1
+ require File.dirname(__FILE__) + '/../test_helper'
2
+
3
+ class TestBarChart < Test::Unit::TestCase
4
+ should 'have a default chart type' do
5
+ assert_match(/\bcht=bvs\b/, GoogleChart::BarChart.new.to_url)
6
+ end
7
+
8
+ should 'support horizontal orientation' do
9
+ assert_match(/\bcht=bhs\b/, GoogleChart::BarChart.new(:horizontal => true).to_url)
10
+ end
11
+
12
+ should 'support grouped grouping' do
13
+ assert_match(/\bcht=bvg\b/, GoogleChart::BarChart.new(:grouped => true).to_url)
14
+ end
15
+
16
+ should 'support horizontal orientation and grouped grouping' do
17
+ assert_match(/\bcht=bhg\b/, GoogleChart::BarChart.new(:horizontal => true, :grouped => true).to_url)
18
+ end
19
+
20
+ should 'include Axis module' do
21
+ assert GoogleChart::Axis === GoogleChart::BarChart.new
22
+ end
23
+
24
+ should 'include BarStyle module' do
25
+ assert GoogleChart::BarStyle === GoogleChart::BarChart.new
26
+ end
27
+
28
+ should 'include Color module' do
29
+ assert GoogleChart::Color === GoogleChart::BarChart.new
30
+ end
31
+
32
+ should 'include Data module' do
33
+ assert GoogleChart::Data === GoogleChart::BarChart.new
34
+ end
35
+
36
+ should 'include GridLine module' do
37
+ assert GoogleChart::GridLine === GoogleChart::BarChart.new
38
+ end
39
+
40
+ should 'include Legend module' do
41
+ assert GoogleChart::Legend === GoogleChart::BarChart.new
42
+ end
43
+
44
+ should 'include RangeMarker module' do
45
+ assert GoogleChart::RangeMarker === GoogleChart::BarChart.new
46
+ end
47
+
48
+ should 'include Title module' do
49
+ assert GoogleChart::Title === GoogleChart::BarChart.new
50
+ end
51
+ end
@@ -1,8 +1,8 @@
1
1
  require File.dirname(__FILE__) + '/../test_helper'
2
2
 
3
- class TestBarStyles < Test::Unit::TestCase
3
+ class TestBarStyle < Test::Unit::TestCase
4
4
  def setup
5
- @klass = Class.new(MockChart).class_eval { include GoogleChart::BarStyles }
5
+ @klass = Class.new(MockChart).class_eval { include GoogleChart::BarStyle }
6
6
  end
7
7
 
8
8
  should 'not display bar style parameter by default' do
@@ -1,8 +1,8 @@
1
1
  require File.dirname(__FILE__) + '/../test_helper'
2
2
 
3
- class TestColors < Test::Unit::TestCase
3
+ class TestColor < Test::Unit::TestCase
4
4
  def setup
5
- @klass = Class.new(MockChart).class_eval { include GoogleChart::Colors }
5
+ @klass = Class.new(MockChart).class_eval { include GoogleChart::Color }
6
6
  end
7
7
 
8
8
  should 'not display color parameter by default' do
@@ -6,76 +6,123 @@ class TestData < Test::Unit::TestCase
6
6
  end
7
7
 
8
8
  should 'use simple encoding by default' do
9
- assert_match(/\bchd=s:AB89\b/, @klass.new(:data => [0,1,60,61]).to_url)
9
+ assert_match(/\bchd=s:AB89\b/, @klass.new(:data => [0, 1, 60, 61]).to_url)
10
10
  end
11
11
 
12
12
  context 'simple encoding' do
13
- should 'encode single dataset' do
14
- assert_match(/\bchd=s:Af9\b/, @klass.new(:data => [0, 31, 61], :encoding => :simple).to_url)
13
+ setup { @chart = @klass.new(:encoding => :simple) }
14
+
15
+ should 'encode dataset with auto-scaling' do
16
+ @chart.data = [0, 15, 10]
17
+ assert_match(/\bchd=s:A9p\b/, @chart.to_url)
18
+ end
19
+
20
+ should 'encode dataset with manual scaling' do
21
+ @chart.data = [0, 15, 10]
22
+ @chart.scale = 0..20
23
+ assert_match(/\bchd=s:Auf\b/, @chart.to_url)
15
24
  end
16
25
 
17
26
  should 'encode multiple datasets' do
18
- assert_match(/\bchd=s:JP,YH\b/, @klass.new(:data => [[9, 15], [24, 7]], :encoding => :simple).to_url)
27
+ @chart.data = [[9, 15], [24, 7]]
28
+ @chart.scale = 0..61
29
+ assert_match(/\bchd=s:JP,YH\b/, @chart.to_url)
19
30
  end
20
31
 
21
32
  should 'encode missing data' do
22
- assert_match(/\bchd=s:y_h\b/, @klass.new(:data => [50, nil, 33], :encoding => :simple).to_url)
33
+ @chart.data = [50, nil, 33]
34
+ @chart.scale = 0..61
35
+ assert_match(/\bchd=s:y_h\b/, @chart.to_url)
23
36
  end
24
37
 
25
- should 'encode floating point data' do
26
- assert_match(/\bchd=s:yh\b/, @klass.new(:data => [49.5, 33.4], :encoding => :simple).to_url)
38
+ should 'encode out-of-bounds data' do
39
+ @chart.data = [62, 61, 60, 1, 0, -1]
40
+ @chart.scale = 0..61
41
+ assert_match(/\bchd=s:998BAA/, @chart.to_url)
27
42
  end
28
43
 
29
- should 'scale data based on maximum value by default'
30
-
31
- should 'scale data using custom scale'
44
+ should 'encode floating point data' do
45
+ @chart.data = [49.5, 33.4]
46
+ @chart.scale = 0..61
47
+ assert_match(/\bchd=s:yh\b/, @chart.to_url)
48
+ end
32
49
  end
33
50
 
34
51
  context 'extended encoding' do
35
- should 'encode single dataset' do
36
- assert_match(/\bchd=e:AA\.\.gA\b/, @klass.new(:data => [0, 4095, 2048], :encoding => :extended).to_url)
52
+ setup { @chart = @klass.new(:encoding => :extended) }
53
+
54
+ should 'encode dataset with auto-scaling' do
55
+ @chart.data = [0, 15, 10]
56
+ assert_match(/\bchd=e:AA\.\.qq\b/, @chart.to_url)
57
+ end
58
+
59
+ should 'encode dataset with manual scaling' do
60
+ @chart.data = [0, 15, 10]
61
+ @chart.scale = 0..20
62
+ assert_match(/\bchd=e:AAv\.gA\b/, @chart.to_url)
37
63
  end
38
64
 
39
65
  should 'encode multiple datasets' do
40
- assert_match(/\bchd=e:jpyh,JPYH\b/, @klass.new(:data => [[2281, 3233], [591, 1543]], :encoding => :extended).to_url)
66
+ @chart.data = [[2281, 3233], [591, 1543]]
67
+ @chart.scale = 0..4095
68
+ assert_match(/\bchd=e:jpyh,JPYH\b/, @chart.to_url)
41
69
  end
42
70
 
43
71
  should 'encode missing data' do
44
- assert_match(/\bchd=e:jp__yh\b/, @klass.new(:data => [2281, nil, 3233], :encoding => :extended).to_url)
72
+ @chart.data = [2281, nil, 3233]
73
+ @chart.scale = 0..4095
74
+ assert_match(/\bchd=e:jp__yh\b/, @chart.to_url)
45
75
  end
46
76
 
47
- should 'encode floating point data' do
48
- assert_match(/\bchd=e:jpyh\b/, @klass.new(:data => [2281.4, 3232.5], :encoding => :extended).to_url)
77
+ should 'encode out-of-bounds data' do
78
+ @chart.data = [4096, 4095, 4094, 1, 0, -1]
79
+ @chart.scale = 0..4095
80
+ assert_match(/\bchd=e:\.\.\.\.\.-ABAAAA\b/, @chart.to_url)
49
81
  end
50
82
 
51
- should 'scale data based on maximum value by default'
52
-
53
- should 'scale data using custom scale'
83
+ should 'encode floating point data' do
84
+ @chart.data = [2281.49, 3232.50]
85
+ @chart.scale = 0..4095
86
+ assert_match(/\bchd=e:jpyh\b/, @chart.to_url)
87
+ end
54
88
  end
55
89
 
56
90
  context 'text encoding' do
57
- should 'encode single dataset' do
58
- assert_match(/\bchd=t:6,14,5.2\b/, @klass.new(:data => [6, 14, 5.23], :encoding => :text).to_url)
91
+ setup { @chart = @klass.new(:encoding => :text) }
92
+
93
+ should 'encode dataset with auto-scaling' do
94
+ @chart.data = [0, 15, 10]
95
+ assert_match(/\bchd=t:0,100,66.7\b/, @chart.to_url)
96
+ end
97
+
98
+ should 'encode dataset with manual scaling' do
99
+ @chart.data = [0, 15, 10]
100
+ @chart.scale = 0..20
101
+ assert_match(/\bchd=t:0,75,50\b/, @chart.to_url)
59
102
  end
60
103
 
61
104
  should 'encode multiple datasets' do
62
- assert_match(/\bchd=t:6,14\|5,23\b/, @klass.new(:data => [[6, 14], [5, 23]], :encoding => :text).to_url)
105
+ @chart.data = [[6, 14], [5, 23]]
106
+ @chart.scale = 0..100
107
+ assert_match(/\bchd=t:6,14\|5,23\b/, @chart.to_url)
63
108
  end
64
109
 
65
110
  should 'encode missing data' do
66
- assert_match(/\bchd=t:6,-1,14\b/, @klass.new(:data => [6, nil, 14], :encoding => :text).to_url)
111
+ @chart.data = [6, nil, 14]
112
+ @chart.scale = 0..100
113
+ assert_match(/\bchd=t:6,-1,14\b/, @chart.to_url)
67
114
  end
68
115
 
69
- should 'round floating point data to nearest 10th' do
70
- assert_match(/\bchd=t:6.1,8.2\b/, @klass.new(:data => [6.14, 8.16], :encoding => :text).to_url)
116
+ should 'encode out-of-bounds data' do
117
+ @chart.data = [101, 100, 99, 1, 0, -1]
118
+ @chart.scale = 0..100
119
+ assert_match(/\bchd=t:100,100,99,1,0,0\b/, @chart.to_url)
71
120
  end
72
121
 
73
- should 'round floating point data to nearest integer when possible' do
74
- assert_match(/\bchd=t:6,14\b/, @klass.new(:data => [5.95, 14.04], :encoding => :text).to_url)
122
+ should 'rounds floating point data to the nearest tenth' do
123
+ @chart.data = [5.95, 14.01, 5.23]
124
+ @chart.scale = 0..100
125
+ assert_match(/\bchd=t:6,14,5.2\b/, @chart.to_url)
75
126
  end
76
-
77
- should 'scale data based on maximum value by default'
78
-
79
- should 'scale data using custom scale'
80
127
  end
81
128
  end
@@ -1,8 +1,8 @@
1
1
  require File.dirname(__FILE__) + '/../test_helper'
2
2
 
3
- class TestGridLines < Test::Unit::TestCase
3
+ class TestGridLine < Test::Unit::TestCase
4
4
  def setup
5
- @klass = Class.new(MockChart).class_eval { include GoogleChart::GridLines }
5
+ @klass = Class.new(MockChart).class_eval { include GoogleChart::GridLine }
6
6
  end
7
7
 
8
8
  should 'not display grid lines by default' do
@@ -1,8 +1,8 @@
1
1
  require File.dirname(__FILE__) + '/../test_helper'
2
2
 
3
- class TestLegends < Test::Unit::TestCase
3
+ class TestLegend < Test::Unit::TestCase
4
4
  def setup
5
- @klass = Class.new(MockChart).class_eval { include GoogleChart::Legends }
5
+ @klass = Class.new(MockChart).class_eval { include GoogleChart::Legend }
6
6
  end
7
7
 
8
8
  should 'not display legend by default' do
@@ -0,0 +1,51 @@
1
+ require File.dirname(__FILE__) + '/../test_helper'
2
+
3
+ class TestLineChart < Test::Unit::TestCase
4
+ should 'have a default chart type' do
5
+ assert_match(/\bcht=lc\b/, GoogleChart::LineChart.new.to_url)
6
+ end
7
+
8
+ should 'support xy chart type' do
9
+ assert_match(/\bcht=lxy\b/, GoogleChart::LineChart.new(:type => :xy).to_url)
10
+ end
11
+
12
+ should 'support sparkline chart type' do
13
+ assert_match(/\bcht=ls\b/, GoogleChart::LineChart.new(:type => :sparkline).to_url)
14
+ end
15
+
16
+ should 'support line as chart type' do
17
+ assert_match(/\bcht=lc\b/, GoogleChart::LineChart.new(:type => :line).to_url)
18
+ end
19
+
20
+ should 'include Axis module' do
21
+ assert GoogleChart::Axis === GoogleChart::LineChart.new
22
+ end
23
+
24
+ should 'include Color module' do
25
+ assert GoogleChart::Color === GoogleChart::LineChart.new
26
+ end
27
+
28
+ should 'include Data module' do
29
+ assert GoogleChart::Data === GoogleChart::LineChart.new
30
+ end
31
+
32
+ should 'include GridLine module' do
33
+ assert GoogleChart::GridLine === GoogleChart::LineChart.new
34
+ end
35
+
36
+ should 'include Legend module' do
37
+ assert GoogleChart::Legend === GoogleChart::LineChart.new
38
+ end
39
+
40
+ should 'include LineStyle module' do
41
+ assert GoogleChart::LineStyle === GoogleChart::LineChart.new
42
+ end
43
+
44
+ should 'include RangeMarker module' do
45
+ assert GoogleChart::RangeMarker === GoogleChart::LineChart.new
46
+ end
47
+
48
+ should 'include Title module' do
49
+ assert GoogleChart::Title === GoogleChart::LineChart.new
50
+ end
51
+ end
@@ -1,8 +1,8 @@
1
1
  require File.dirname(__FILE__) + '/../test_helper'
2
2
 
3
- class TestLineStyles < Test::Unit::TestCase
3
+ class TestLineStyle < Test::Unit::TestCase
4
4
  def setup
5
- @klass = Class.new(MockChart).class_eval { include GoogleChart::LineStyles }
5
+ @klass = Class.new(MockChart).class_eval { include GoogleChart::LineStyle }
6
6
  end
7
7
 
8
8
  should 'not include line styles by default' do
@@ -1,8 +1,8 @@
1
1
  require File.dirname(__FILE__) + '/../test_helper'
2
2
 
3
- class TestRangeMarkers < Test::Unit::TestCase
3
+ class TestRangeMarker < Test::Unit::TestCase
4
4
  def setup
5
- @klass = Class.new(MockChart).class_eval { include GoogleChart::RangeMarkers }
5
+ @klass = Class.new(MockChart).class_eval { include GoogleChart::RangeMarker }
6
6
  end
7
7
 
8
8
  should 'not have range markers by default' do
@@ -1,8 +1,8 @@
1
1
  require File.dirname(__FILE__) + '/../test_helper'
2
2
 
3
- class TestTitles < Test::Unit::TestCase
3
+ class TestTitle < Test::Unit::TestCase
4
4
  def setup
5
- @klass = Class.new(MockChart).class_eval { include GoogleChart::Titles }
5
+ @klass = Class.new(MockChart).class_eval { include GoogleChart::Title }
6
6
  end
7
7
 
8
8
  should 'not have a title by default' do
@@ -4,7 +4,7 @@ class TestGoogleChart < Test::Unit::TestCase
4
4
  context '#Line' do
5
5
  context 'with hash parameters' do
6
6
  setup do
7
- @url = GoogleChart.Line(:size => '1000x300', :data => [[35, 41], [50, 33]])
7
+ @url = GoogleChart.Line(:size => '1000x300', :data => [[35, 41], [50, 33]], :scale => 0..61)
8
8
  end
9
9
 
10
10
  should 'return Google Chart URL' do
@@ -29,6 +29,7 @@ class TestGoogleChart < Test::Unit::TestCase
29
29
  @url = GoogleChart.Line do |c|
30
30
  c.size = '800x375'
31
31
  c.data = [[35, 41], [50, 33]]
32
+ c.scale = 0..61
32
33
  end
33
34
  end
34
35
 
@@ -53,7 +54,7 @@ class TestGoogleChart < Test::Unit::TestCase
53
54
  context '#Bar' do
54
55
  context 'with hash parameters' do
55
56
  setup do
56
- @url = GoogleChart.Bar(:size => '1000x300', :data => [[35, 41], [50, 33]])
57
+ @url = GoogleChart.Bar(:size => '1000x300', :data => [[35, 41], [50, 33]], :scale => 0..61)
57
58
  end
58
59
 
59
60
  should 'return Google Chart URL' do
@@ -67,6 +68,10 @@ class TestGoogleChart < Test::Unit::TestCase
67
68
  should 'include chart size parameter' do
68
69
  assert_match(/\bchs=1000x300\b/, @url)
69
70
  end
71
+
72
+ should 'include chart data parameter' do
73
+ assert_match(/\bchd=s:jp,yh\b/, @url)
74
+ end
70
75
  end
71
76
 
72
77
  context 'with block parameters' do
@@ -74,6 +79,7 @@ class TestGoogleChart < Test::Unit::TestCase
74
79
  @url = GoogleChart.Bar do |c|
75
80
  c.size = '800x375'
76
81
  c.data = [[35, 41], [50, 33]]
82
+ c.scale = 0..61
77
83
  end
78
84
  end
79
85
 
data/test/test_helper.rb CHANGED
@@ -4,7 +4,7 @@ require 'shoulda'
4
4
  require 'redgreen' unless ENV['TM_MODE']
5
5
  require File.dirname(__FILE__) + '/../lib/google_chart'
6
6
 
7
- class MockChart < GoogleChart::Base
7
+ class MockChart < GoogleChart::AbstractChart
8
8
  def chart_type
9
9
  'cht=mock'
10
10
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jparker-ruby-googlechart
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - John Parker
@@ -55,19 +55,18 @@ files:
55
55
  - Rakefile
56
56
  - README.txt
57
57
  - lib/google_chart.rb
58
- - lib/google_chart/axes.rb
59
- - lib/google_chart/bar.rb
60
- - lib/google_chart/bar_styles.rb
61
- - lib/google_chart/base.rb
62
- - lib/google_chart/colors.rb
58
+ - lib/google_chart/abstract_chart.rb
59
+ - lib/google_chart/axis.rb
60
+ - lib/google_chart/bar_chart.rb
61
+ - lib/google_chart/bar_style.rb
62
+ - lib/google_chart/color.rb
63
63
  - lib/google_chart/data.rb
64
- - lib/google_chart/grid_lines.rb
65
- - lib/google_chart/legends.rb
66
- - lib/google_chart/line.rb
67
- - lib/google_chart/line_styles.rb
68
- - lib/google_chart/range_markers.rb
69
- - lib/google_chart/sizes.rb
70
- - lib/google_chart/titles.rb
64
+ - lib/google_chart/grid_line.rb
65
+ - lib/google_chart/legend.rb
66
+ - lib/google_chart/line_chart.rb
67
+ - lib/google_chart/line_style.rb
68
+ - lib/google_chart/range_marker.rb
69
+ - lib/google_chart/title.rb
71
70
  has_rdoc: false
72
71
  homepage: http://github.com/jparker/ruby-googlechart
73
72
  post_install_message:
@@ -98,16 +97,15 @@ summary: Ruby wrapper for the Google Charts API
98
97
  test_files:
99
98
  - test/test_helper.rb
100
99
  - test/test_google_chart.rb
101
- - test/google_chart/test_axes.rb
102
- - test/google_chart/test_bar.rb
103
- - test/google_chart/test_bar_styles.rb
104
- - test/google_chart/test_base.rb
105
- - test/google_chart/test_colors.rb
100
+ - test/google_chart/test_abstract_chart.rb
101
+ - test/google_chart/test_axis.rb
102
+ - test/google_chart/test_bar_chart.rb
103
+ - test/google_chart/test_bar_style.rb
104
+ - test/google_chart/test_color.rb
106
105
  - test/google_chart/test_data.rb
107
- - test/google_chart/test_grid_lines.rb
108
- - test/google_chart/test_legends.rb
109
- - test/google_chart/test_line.rb
110
- - test/google_chart/test_line_styles.rb
111
- - test/google_chart/test_range_markers.rb
112
- - test/google_chart/test_sizes.rb
113
- - test/google_chart/test_titles.rb
106
+ - test/google_chart/test_grid_line.rb
107
+ - test/google_chart/test_legend.rb
108
+ - test/google_chart/test_line_chart.rb
109
+ - test/google_chart/test_line_style.rb
110
+ - test/google_chart/test_range_marker.rb
111
+ - test/google_chart/test_title.rb
@@ -1,27 +0,0 @@
1
- module GoogleChart
2
- class Bar < Base
3
- include Axes
4
- include BarStyles
5
- include Colors
6
- include Data
7
- include GridLines
8
- include Legends
9
- include RangeMarkers
10
- include Sizes
11
- include Titles
12
-
13
- attr_writer :horizontal, :grouped
14
-
15
- def chart_type
16
- 'cht=b' + (horizontal? ? 'h' : 'v') + (grouped? ? 'g' : 's')
17
- end
18
-
19
- def horizontal?
20
- @horizontal
21
- end
22
-
23
- def grouped?
24
- @grouped
25
- end
26
- end
27
- end
@@ -1,25 +0,0 @@
1
- # <URL:http://code.google.com/apis/chart/#bar_width>
2
- module GoogleChart
3
- module BarStyles
4
- def self.included(klass)
5
- klass.register!(:style)
6
- end
7
-
8
- attr_writer :width
9
-
10
- def style
11
- "chbh=#{[@width, *@spacing].compact.join(',')}" if @width
12
- end
13
-
14
- # Spacing can be given as a single number for space between bars within a
15
- # group or as an array of numbers with the first element as the space
16
- # between bars within a group and the second element as the space between
17
- # groups. If not provided, the default spacing between groups is 8 pixels.
18
- #
19
- # TODO: Should we raise an error if bar spacing is greater than group
20
- # spacing? This would visually group bars from different groups.
21
- def spacing=(spacing)
22
- @spacing = [spacing].flatten
23
- end
24
- end
25
- end
@@ -1,16 +0,0 @@
1
- # <URL:http://code.google.com/apis/chart/#chart_size>
2
- module GoogleChart
3
- module Sizes
4
- def self.included(klass)
5
- klass.register!(:size)
6
- end
7
-
8
- attr_writer :size
9
-
10
- @@default_size = '600x500'
11
-
12
- def size
13
- 'chs=' + (@size ? @size : @@default_size)
14
- end
15
- end
16
- end
@@ -1,55 +0,0 @@
1
- require File.dirname(__FILE__) + '/../test_helper'
2
-
3
- class TestBar < Test::Unit::TestCase
4
- should 'have a default chart type' do
5
- assert_match(/\bcht=bvs\b/, GoogleChart::Bar.new.to_url)
6
- end
7
-
8
- should 'support horizontal orientation' do
9
- assert_match(/\bcht=bhs\b/, GoogleChart::Bar.new(:horizontal => true).to_url)
10
- end
11
-
12
- should 'support grouped grouping' do
13
- assert_match(/\bcht=bvg\b/, GoogleChart::Bar.new(:grouped => true).to_url)
14
- end
15
-
16
- should 'support horizontal orientation and grouped grouping' do
17
- assert_match(/\bcht=bhg\b/, GoogleChart::Bar.new(:horizontal => true, :grouped => true).to_url)
18
- end
19
-
20
- should 'include Axes module' do
21
- assert GoogleChart::Axes === GoogleChart::Bar.new
22
- end
23
-
24
- should 'include BarStyles module' do
25
- assert GoogleChart::BarStyles === GoogleChart::Bar.new
26
- end
27
-
28
- should 'include Colors module' do
29
- assert GoogleChart::Colors === GoogleChart::Bar.new
30
- end
31
-
32
- should 'include Data module' do
33
- assert GoogleChart::Data === GoogleChart::Bar.new
34
- end
35
-
36
- should 'include GridLines module' do
37
- assert GoogleChart::GridLines === GoogleChart::Bar.new
38
- end
39
-
40
- should 'include Legends module' do
41
- assert GoogleChart::Legends === GoogleChart::Bar.new
42
- end
43
-
44
- should 'include RangeMarkers module' do
45
- assert GoogleChart::RangeMarkers === GoogleChart::Bar.new
46
- end
47
-
48
- should 'include Sizes module' do
49
- assert GoogleChart::Sizes === GoogleChart::Bar.new
50
- end
51
-
52
- should 'include Titles module' do
53
- assert GoogleChart::Titles === GoogleChart::Bar.new
54
- end
55
- end
@@ -1,55 +0,0 @@
1
- require File.dirname(__FILE__) + '/../test_helper'
2
-
3
- class TestLine < Test::Unit::TestCase
4
- should 'have a default chart type' do
5
- assert_match(/\bcht=lc\b/, GoogleChart::Line.new.to_url)
6
- end
7
-
8
- should 'support xy chart type' do
9
- assert_match(/\bcht=lxy\b/, GoogleChart::Line.new(:type => :xy).to_url)
10
- end
11
-
12
- should 'support sparkline chart type' do
13
- assert_match(/\bcht=ls\b/, GoogleChart::Line.new(:type => :sparkline).to_url)
14
- end
15
-
16
- should 'support line as chart type' do
17
- assert_match(/\bcht=lc\b/, GoogleChart::Line.new(:type => :line).to_url)
18
- end
19
-
20
- should 'include Axes module' do
21
- assert GoogleChart::Axes === GoogleChart::Line.new
22
- end
23
-
24
- should 'include Colors module' do
25
- assert GoogleChart::Colors === GoogleChart::Line.new
26
- end
27
-
28
- should 'include Data module' do
29
- assert GoogleChart::Data === GoogleChart::Line.new
30
- end
31
-
32
- should 'include GridLines module' do
33
- assert GoogleChart::GridLines === GoogleChart::Line.new
34
- end
35
-
36
- should 'include Legends module' do
37
- assert GoogleChart::Legends === GoogleChart::Line.new
38
- end
39
-
40
- should 'include LineStyles module' do
41
- assert GoogleChart::LineStyles === GoogleChart::Line.new
42
- end
43
-
44
- should 'include RangeMarkers module' do
45
- assert GoogleChart::RangeMarkers === GoogleChart::Line.new
46
- end
47
-
48
- should 'include Sizes module' do
49
- assert GoogleChart::Sizes === GoogleChart::Line.new
50
- end
51
-
52
- should 'include Titles module' do
53
- assert GoogleChart::Titles === GoogleChart::Line.new
54
- end
55
- end
@@ -1,15 +0,0 @@
1
- require File.dirname(__FILE__) + '/../test_helper'
2
-
3
- class TestSizes < Test::Unit::TestCase
4
- def setup
5
- @klass = Class.new(MockChart).class_eval { include GoogleChart::Sizes }
6
- end
7
-
8
- should 'have a default size' do
9
- assert_match(/\bchs=600x500\b/, @klass.new.to_url)
10
- end
11
-
12
- should 'accept custom size' do
13
- assert_match(/\bchs=800x375\b/, @klass.new(:size => '800x375').to_url)
14
- end
15
- end