ruby-googlechart 0.6.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +3 -0
- data/CHANGELOG +30 -0
- data/LICENSE +20 -0
- data/README.rdoc +59 -0
- data/Rakefile +52 -0
- data/VERSION +1 -0
- data/lib/array.rb +7 -0
- data/lib/google_chart.rb +30 -0
- data/lib/google_chart/abstract_chart.rb +48 -0
- data/lib/google_chart/axis.rb +40 -0
- data/lib/google_chart/bar_chart.rb +57 -0
- data/lib/google_chart/bar_style.rb +19 -0
- data/lib/google_chart/color.rb +16 -0
- data/lib/google_chart/data.rb +99 -0
- data/lib/google_chart/grid_line.rb +21 -0
- data/lib/google_chart/legend.rb +16 -0
- data/lib/google_chart/line_chart.rb +24 -0
- data/lib/google_chart/line_style.rb +36 -0
- data/lib/google_chart/range_marker.rb +26 -0
- data/lib/google_chart/title.rb +16 -0
- data/ruby-googlechart.gemspec +90 -0
- data/test/google_chart/test_abstract_chart.rb +29 -0
- data/test/google_chart/test_axis.rb +74 -0
- data/test/google_chart/test_bar_chart.rb +126 -0
- data/test/google_chart/test_bar_style.rb +23 -0
- data/test/google_chart/test_color.rb +21 -0
- data/test/google_chart/test_data.rb +142 -0
- data/test/google_chart/test_grid_line.rb +35 -0
- data/test/google_chart/test_legend.rb +27 -0
- data/test/google_chart/test_line_chart.rb +51 -0
- data/test/google_chart/test_line_style.rb +47 -0
- data/test/google_chart/test_range_marker.rb +27 -0
- data/test/google_chart/test_title.rb +15 -0
- data/test/test_google_chart.rb +103 -0
- data/test/test_helper.rb +10 -0
- metadata +112 -0
@@ -0,0 +1,21 @@
|
|
1
|
+
# <URL:http://code.google.com/apis/chart/#grid>
|
2
|
+
module GoogleChart
|
3
|
+
module GridLine
|
4
|
+
def self.included(klass)
|
5
|
+
klass.register!(:grid)
|
6
|
+
end
|
7
|
+
|
8
|
+
@@grid_line_styles = { :solid => [1,0], :dash => [3,2], :dot => [1,2] }
|
9
|
+
@@default_grid_step = 0
|
10
|
+
|
11
|
+
def grid=(grid)
|
12
|
+
grid[:x] ||= @@default_grid_step
|
13
|
+
grid[:y] ||= @@default_grid_step
|
14
|
+
@grid = [grid[:x], grid[:y], *@@grid_line_styles[grid[:style]]].compact.join(',')
|
15
|
+
end
|
16
|
+
|
17
|
+
def grid
|
18
|
+
"chg=#{@grid}" if @grid
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
# <URL:http://code.google.com/apis/chart/#chdl>
|
2
|
+
module GoogleChart
|
3
|
+
module Legend
|
4
|
+
def self.included(klass)
|
5
|
+
klass.register!(:legend)
|
6
|
+
end
|
7
|
+
|
8
|
+
def legend=(legend)
|
9
|
+
@legend = [legend].flatten.map {|l| CGI::escape(l.to_s) }
|
10
|
+
end
|
11
|
+
|
12
|
+
def legend
|
13
|
+
"chdl=#{@legend.join('|')}" if @legend
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module GoogleChart
|
2
|
+
class LineChart < AbstractChart
|
3
|
+
@@chart_types = { :line => 'lc', :xy => 'lxy', :sparkline => 'ls' }
|
4
|
+
|
5
|
+
include Axis
|
6
|
+
include Color
|
7
|
+
include Data
|
8
|
+
include GridLine
|
9
|
+
include Legend
|
10
|
+
include LineStyle
|
11
|
+
include RangeMarker
|
12
|
+
include Title
|
13
|
+
|
14
|
+
def chart_type
|
15
|
+
@chart_type ||= @@chart_types[:line]
|
16
|
+
'cht=' + @chart_type if @chart_type
|
17
|
+
end
|
18
|
+
|
19
|
+
def chart_type=(chart_type)
|
20
|
+
@chart_type = @@chart_types[chart_type]
|
21
|
+
end
|
22
|
+
alias_method :type=, :chart_type=
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
# <URL:http://code.google.com/apis/chart/#line_styles>
|
2
|
+
module GoogleChart
|
3
|
+
module LineStyle
|
4
|
+
def self.included(klass)
|
5
|
+
klass.register!(:style)
|
6
|
+
end
|
7
|
+
|
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
|
20
|
+
|
21
|
+
def style
|
22
|
+
@style ||= []
|
23
|
+
@width ||= []
|
24
|
+
|
25
|
+
# Pad @style and @width with defaults until they are equal in length
|
26
|
+
(@style.size - @width.size).times { @width << @@default_width }
|
27
|
+
(@width.size - @style.size).times { @style << @@default_style }
|
28
|
+
|
29
|
+
unless @style.empty?
|
30
|
+
'chls=' + (0...@style.size).map {|i|
|
31
|
+
@@styles[@style[i]].map {|n| n * @width[i] }.join(',')
|
32
|
+
}.join('|')
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# <URL:http://code.google.com/apis/chart/#hor_line_marker>
|
2
|
+
module GoogleChart
|
3
|
+
module RangeMarker
|
4
|
+
def self.included(klass)
|
5
|
+
klass.register!(:ranges)
|
6
|
+
end
|
7
|
+
|
8
|
+
@@range_marker_orientations = { :h => 'r', :v => 'R' }
|
9
|
+
|
10
|
+
def ranges=(ranges)
|
11
|
+
@ranges = ranges.any? {|e| e.is_a?(Array) } ? ranges : [ranges]
|
12
|
+
end
|
13
|
+
|
14
|
+
def ranges
|
15
|
+
unless @ranges.nil? || @ranges.empty?
|
16
|
+
'chm=' + @ranges.collect {|r|
|
17
|
+
r[0] = @@range_marker_orientations[r[0]]
|
18
|
+
r[1..-1] = ['000000cc', *r[1..-1]] if r.size == 3
|
19
|
+
# The middle parameter is required by Google Charts but ignored for range markers
|
20
|
+
r = r[0..1] + ['x'] + r[2..-1]
|
21
|
+
r.join(',')
|
22
|
+
}.join('|')
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
# <URL:http://code.google.com/apis/chart/#chtt>
|
2
|
+
module GoogleChart
|
3
|
+
module Title
|
4
|
+
def self.included(klass)
|
5
|
+
klass.register!(:title)
|
6
|
+
end
|
7
|
+
|
8
|
+
def title=(title)
|
9
|
+
@title = CGI::escape(title)
|
10
|
+
end
|
11
|
+
|
12
|
+
def title
|
13
|
+
"chtt=#{@title}" if @title
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,90 @@
|
|
1
|
+
# Generated by jeweler
|
2
|
+
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
|
4
|
+
# -*- encoding: utf-8 -*-
|
5
|
+
|
6
|
+
Gem::Specification.new do |s|
|
7
|
+
s.name = %q{ruby-googlechart}
|
8
|
+
s.version = "0.6.4"
|
9
|
+
|
10
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
+
s.authors = ["John Parker"]
|
12
|
+
s.date = %q{2009-11-15}
|
13
|
+
s.description = %q{ruby-googlechart is yet another wrapper around the Google Charts API}
|
14
|
+
s.email = %q{jparker@urgetopunt.com}
|
15
|
+
s.extra_rdoc_files = [
|
16
|
+
"LICENSE",
|
17
|
+
"README.rdoc"
|
18
|
+
]
|
19
|
+
s.files = [
|
20
|
+
".gitignore",
|
21
|
+
"CHANGELOG",
|
22
|
+
"README.rdoc",
|
23
|
+
"Rakefile",
|
24
|
+
"VERSION",
|
25
|
+
"lib/array.rb",
|
26
|
+
"lib/google_chart.rb",
|
27
|
+
"lib/google_chart/abstract_chart.rb",
|
28
|
+
"lib/google_chart/axis.rb",
|
29
|
+
"lib/google_chart/bar_chart.rb",
|
30
|
+
"lib/google_chart/bar_style.rb",
|
31
|
+
"lib/google_chart/color.rb",
|
32
|
+
"lib/google_chart/data.rb",
|
33
|
+
"lib/google_chart/grid_line.rb",
|
34
|
+
"lib/google_chart/legend.rb",
|
35
|
+
"lib/google_chart/line_chart.rb",
|
36
|
+
"lib/google_chart/line_style.rb",
|
37
|
+
"lib/google_chart/range_marker.rb",
|
38
|
+
"lib/google_chart/title.rb",
|
39
|
+
"ruby-googlechart.gemspec",
|
40
|
+
"test/google_chart/test_abstract_chart.rb",
|
41
|
+
"test/google_chart/test_axis.rb",
|
42
|
+
"test/google_chart/test_bar_chart.rb",
|
43
|
+
"test/google_chart/test_bar_style.rb",
|
44
|
+
"test/google_chart/test_color.rb",
|
45
|
+
"test/google_chart/test_data.rb",
|
46
|
+
"test/google_chart/test_grid_line.rb",
|
47
|
+
"test/google_chart/test_legend.rb",
|
48
|
+
"test/google_chart/test_line_chart.rb",
|
49
|
+
"test/google_chart/test_line_style.rb",
|
50
|
+
"test/google_chart/test_range_marker.rb",
|
51
|
+
"test/google_chart/test_title.rb",
|
52
|
+
"test/test_google_chart.rb",
|
53
|
+
"test/test_helper.rb"
|
54
|
+
]
|
55
|
+
s.homepage = %q{http://github.com/jparker/ruby-googlechart}
|
56
|
+
s.rdoc_options = ["--charset=UTF-8"]
|
57
|
+
s.require_paths = ["lib"]
|
58
|
+
s.rubygems_version = %q{1.3.5}
|
59
|
+
s.summary = %q{Ruby wrapper around the Google Charts API}
|
60
|
+
s.test_files = [
|
61
|
+
"test/google_chart/test_abstract_chart.rb",
|
62
|
+
"test/google_chart/test_axis.rb",
|
63
|
+
"test/google_chart/test_bar_chart.rb",
|
64
|
+
"test/google_chart/test_bar_style.rb",
|
65
|
+
"test/google_chart/test_color.rb",
|
66
|
+
"test/google_chart/test_data.rb",
|
67
|
+
"test/google_chart/test_grid_line.rb",
|
68
|
+
"test/google_chart/test_legend.rb",
|
69
|
+
"test/google_chart/test_line_chart.rb",
|
70
|
+
"test/google_chart/test_line_style.rb",
|
71
|
+
"test/google_chart/test_range_marker.rb",
|
72
|
+
"test/google_chart/test_title.rb",
|
73
|
+
"test/test_google_chart.rb",
|
74
|
+
"test/test_helper.rb"
|
75
|
+
]
|
76
|
+
|
77
|
+
if s.respond_to? :specification_version then
|
78
|
+
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
79
|
+
s.specification_version = 3
|
80
|
+
|
81
|
+
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
82
|
+
s.add_development_dependency(%q<shoulda>, [">= 0"])
|
83
|
+
else
|
84
|
+
s.add_dependency(%q<shoulda>, [">= 0"])
|
85
|
+
end
|
86
|
+
else
|
87
|
+
s.add_dependency(%q<shoulda>, [">= 0"])
|
88
|
+
end
|
89
|
+
end
|
90
|
+
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../test_helper'
|
2
|
+
|
3
|
+
class TestAbstractChart < Test::Unit::TestCase
|
4
|
+
should 'require descendent classes to define #chart_type method' do
|
5
|
+
klass = Class.new(GoogleChart::AbstractChart)
|
6
|
+
assert_raise(NoMethodError, /chart_type/) { klass.new.to_url }
|
7
|
+
|
8
|
+
klass.class_eval { def chart_type() end }
|
9
|
+
assert_nothing_raised { klass.new.to_url }
|
10
|
+
end
|
11
|
+
|
12
|
+
should 'allow descendent classes to maintain distinct parameter registries' do
|
13
|
+
klass = Class.new(GoogleChart::AbstractChart)
|
14
|
+
another_klass = Class.new(GoogleChart::AbstractChart)
|
15
|
+
assert_not_same(another_klass.registry, klass.registry)
|
16
|
+
end
|
17
|
+
|
18
|
+
should 'begin URLs with Google Charts base URL' do
|
19
|
+
assert_match(%r{\Ahttp://chart\.apis\.google\.com/chart\?}, Class.new(MockChart).new.to_url)
|
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
|
29
|
+
end
|
@@ -0,0 +1,74 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../test_helper'
|
2
|
+
|
3
|
+
class TestAxis < Test::Unit::TestCase
|
4
|
+
def setup
|
5
|
+
@klass = Class.new(MockChart).class_eval { include GoogleChart::Axis }
|
6
|
+
end
|
7
|
+
|
8
|
+
should 'not display axis parameter by default' do
|
9
|
+
url = @klass.new.to_url
|
10
|
+
assert_no_match(/\bchx[lrt]=/, url)
|
11
|
+
end
|
12
|
+
|
13
|
+
context 'axis types' do
|
14
|
+
should 'display bottom x-axis' do
|
15
|
+
assert_match(/\bchxt=x\b/, @klass.new(:axes => {:x => true}).to_url)
|
16
|
+
end
|
17
|
+
|
18
|
+
should 'display top x-axis' do
|
19
|
+
assert_match(/\bchxt=t\b/, @klass.new(:axes => {:t => true}).to_url)
|
20
|
+
end
|
21
|
+
|
22
|
+
should 'display left y-axis' do
|
23
|
+
assert_match(/\bchxt=y\b/, @klass.new(:axes => {:y => true}).to_url)
|
24
|
+
end
|
25
|
+
|
26
|
+
should 'display right y-axis' do
|
27
|
+
assert_match(/\bchxt=r\b/, @klass.new(:axes => {:r => true}).to_url)
|
28
|
+
end
|
29
|
+
|
30
|
+
should 'display multiple axes' do
|
31
|
+
assert_match(/\bchxt=x,y,r\b/, @klass.new(:axes => {:x => true, :y => true, :r => true}).to_url)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
context 'axis labels' do
|
36
|
+
should 'dsiplay enumerated axis labels' do
|
37
|
+
assert_match(/\bchxt=x&chxl=0:\|foo\|bar\|baz\b/, @klass.new(:axes => {:x => %w[foo bar baz]}).to_url)
|
38
|
+
end
|
39
|
+
|
40
|
+
should 'display enumerated axis labels for multiple axes' do
|
41
|
+
assert_match(/\bchxt=x,y&chxl=0:\|foo\|bar\|baz\|1:\|0\|5\|10\b/, @klass.new(:axes => {:x => %w[foo bar baz], :y => %w[0 5 10]}).to_url)
|
42
|
+
end
|
43
|
+
|
44
|
+
should 'display enumerated axis labels for subset of axes' do
|
45
|
+
assert_match(/\bchxt=x,y,r&chxl=0:\|foo\|bar\|2:\|baz\|froz\b/, @klass.new(:axes => {:x => %w[foo bar], :y => true, :r => %w[baz froz]}).to_url)
|
46
|
+
end
|
47
|
+
|
48
|
+
should 'escape axis labels for url' do
|
49
|
+
assert_match(/\bchxl=0:\|foo\+bar\|baz%7Cfroz\b/, @klass.new(:axes => {:x => ['foo bar', 'baz|froz']}).to_url)
|
50
|
+
end
|
51
|
+
|
52
|
+
should 'convert non-String labels to Strings' do
|
53
|
+
assert_match(/\bchxl=0:\|foo\|\|1\b/, @klass.new(:axes => {:x => ['foo', nil, 1]}).to_url)
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
context 'axis ranges' do
|
58
|
+
should 'dsiplay axis label ranges' do
|
59
|
+
assert_match(/\bchxt=x&chxr=0,8,16/, @klass.new(:axes => {:x => 8..16}).to_url)
|
60
|
+
end
|
61
|
+
|
62
|
+
should 'display multiple axis label ranges' do
|
63
|
+
assert_match(/\bchxt=x,y&chxr=0,6,14\|1,5,23\b/, @klass.new(:axes => {:x => 6..14, :y => 5..23}).to_url)
|
64
|
+
end
|
65
|
+
|
66
|
+
should 'display axis label ranges for subset of axes' do
|
67
|
+
assert_match(/\bchxr=0,0,5\|2,0,100\b/, @klass.new(:axes => {:x => 0..5, :y => true, :r => 0..100}).to_url)
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
should 'display multiple types of axis labels' do
|
72
|
+
assert_match(/\bchxt=x,y,r&chxl=0:\|foo\|bar\|baz&chxr=2,5,23\b/, @klass.new(:axes => {:x => %w[foo bar baz], :y => true, :r => 5..23}).to_url)
|
73
|
+
end
|
74
|
+
end
|
@@ -0,0 +1,126 @@
|
|
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=bvg\b/, GoogleChart::BarChart.new.to_url)
|
6
|
+
end
|
7
|
+
|
8
|
+
should 'support horizontal orientation' do
|
9
|
+
assert_match(/\bcht=bhg\b/, GoogleChart::BarChart.new(:horizontal => true).to_url)
|
10
|
+
end
|
11
|
+
|
12
|
+
should 'support grouping' do
|
13
|
+
assert_match(/\bcht=bvg\b/, GoogleChart::BarChart.new(:grouping => :group).to_url)
|
14
|
+
end
|
15
|
+
|
16
|
+
should 'support stacking' do
|
17
|
+
assert_match(/\bcht=bvs\b/, GoogleChart::BarChart.new(:grouping => :stack).to_url)
|
18
|
+
end
|
19
|
+
|
20
|
+
should 'support overlapping as alias for stacking' do
|
21
|
+
assert_match(/\bcht=bvs\b/, GoogleChart::BarChart.new(:grouping => :overlap).to_url)
|
22
|
+
end
|
23
|
+
|
24
|
+
should 'support horizontal orientation with grouping' do
|
25
|
+
assert_match(/\bcht=bhg\b/, GoogleChart::BarChart.new(:horizontal => true, :grouping => :group).to_url)
|
26
|
+
end
|
27
|
+
|
28
|
+
should 'support horizontal orientation with stacking' do
|
29
|
+
assert_match(/\bcht=bhs\b/, GoogleChart::BarChart.new(:horizontal => true, :grouping => :stack).to_url)
|
30
|
+
end
|
31
|
+
|
32
|
+
should 'support horizontal orientation with overlapping' do
|
33
|
+
assert_match(/\bcht=bhs\b/, GoogleChart::BarChart.new(:horizontal => true, :grouping => :overlap).to_url)
|
34
|
+
end
|
35
|
+
|
36
|
+
context 'data reduction and scaling' do
|
37
|
+
context 'with one data set' do
|
38
|
+
setup { @chart = GoogleChart::BarChart.new(:data => [0,2,3]) }
|
39
|
+
|
40
|
+
should 'scale normally for grouping' do
|
41
|
+
@chart.grouping = :group
|
42
|
+
assert_match(/\bchd=s:Ao9\b/, @chart.to_url)
|
43
|
+
end
|
44
|
+
|
45
|
+
should 'scale normally for stacking' do
|
46
|
+
@chart.grouping = :stack
|
47
|
+
assert_match(/\bchd=s:Ao9\b/, @chart.to_url)
|
48
|
+
end
|
49
|
+
|
50
|
+
should 'scale normally for overlapping' do
|
51
|
+
@chart.grouping = :overlap
|
52
|
+
assert_match(/\bchd=s:Ao9\b/, @chart.to_url)
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
context 'with two data sets' do
|
57
|
+
setup { @chart = GoogleChart::BarChart.new(:data => [[0,2,3], [0,4,6]]) }
|
58
|
+
|
59
|
+
should 'scale normally for grouping' do
|
60
|
+
@chart.grouping = :group
|
61
|
+
assert_match(/\bchd=s:AUe,Ao9\b/, @chart.to_url)
|
62
|
+
end
|
63
|
+
|
64
|
+
should 'scale based on column sums for stacking' do
|
65
|
+
@chart.grouping = :stack
|
66
|
+
assert_match(/\bchd=s:ANU,Abo\b/, @chart.to_url)
|
67
|
+
end
|
68
|
+
|
69
|
+
should 'scale based on reduced data for overlapping' do
|
70
|
+
@chart.grouping = :overlap
|
71
|
+
assert_match(/\bchd=s:AUe,AUe\b/, @chart.to_url)
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
context 'with three data sets' do
|
76
|
+
setup { @chart = GoogleChart::BarChart.new(:data => [[0,2,3], [0,4,6], [0,6,9]]) }
|
77
|
+
|
78
|
+
should 'scale normally for grouping' do
|
79
|
+
@chart.grouping = :group
|
80
|
+
assert_match(/\bchd=s:ANU,Abo,Ao9\b/, @chart.to_url)
|
81
|
+
end
|
82
|
+
|
83
|
+
should 'scale based on column sums for stacking' do
|
84
|
+
@chart.grouping = :stack
|
85
|
+
assert_match(/\bchd=s:AGK,ANU,AUe\b/, @chart.to_url)
|
86
|
+
end
|
87
|
+
|
88
|
+
should 'scale based on reduced data for overlapping' do
|
89
|
+
@chart.grouping = :overlap
|
90
|
+
assert_match(/\bchd=s:ANU,ANU,AAA\b/, @chart.to_url)
|
91
|
+
end
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
95
|
+
should 'include Axis module' do
|
96
|
+
assert GoogleChart::Axis === GoogleChart::BarChart.new
|
97
|
+
end
|
98
|
+
|
99
|
+
should 'include BarStyle module' do
|
100
|
+
assert GoogleChart::BarStyle === GoogleChart::BarChart.new
|
101
|
+
end
|
102
|
+
|
103
|
+
should 'include Color module' do
|
104
|
+
assert GoogleChart::Color === GoogleChart::BarChart.new
|
105
|
+
end
|
106
|
+
|
107
|
+
should 'include Data module' do
|
108
|
+
assert GoogleChart::Data === GoogleChart::BarChart.new
|
109
|
+
end
|
110
|
+
|
111
|
+
should 'include GridLine module' do
|
112
|
+
assert GoogleChart::GridLine === GoogleChart::BarChart.new
|
113
|
+
end
|
114
|
+
|
115
|
+
should 'include Legend module' do
|
116
|
+
assert GoogleChart::Legend === GoogleChart::BarChart.new
|
117
|
+
end
|
118
|
+
|
119
|
+
should 'include RangeMarker module' do
|
120
|
+
assert GoogleChart::RangeMarker === GoogleChart::BarChart.new
|
121
|
+
end
|
122
|
+
|
123
|
+
should 'include Title module' do
|
124
|
+
assert GoogleChart::Title === GoogleChart::BarChart.new
|
125
|
+
end
|
126
|
+
end
|