require File.expand_path(File.dirname(__FILE__)+"/spec_helper.rb")
describe Rubyvis::Layout::Stack do
it "should have correct properties" do
props=[:antialias, :bottom, :canvas, :cursor, :data, :events, :fill_style, :height, :id, :layers, :left, :line_width, :offset, :order, :orient, :overflow, :reverse, :right, :stroke_style, :title, :top, :transform, :visible, :width].inject({}) {|ac, v| ac[v]=true; ac}
Rubyvis::Layout::Stack.properties.should==props
end
describe "rendered" do
before do
@h=200
@w=200
@x=Rubyvis::Scale.linear(0,3).range(0,@w)
@y=Rubyvis::Scale.linear(0,10).range(0,@h)
@vis = Rubyvis.Panel.new.width(@w).height(@h)
@stack=@vis.add(Rubyvis::Layout::Stack)
end
describe "only with layers()" do
before do
x=@x
y=@y
@data=[[1,3,2],[2,1,3]]
@stack.
layers(@data).
x(lambda {|d| x.scale(index)}).
y(lambda {|d| y.scale(d)}).layer.add(Rubyvis::Area)
@vis.render
doc=Nokogiri::XML(@vis.to_svg)
@paths=doc.xpath("//xmlns:path")
#
end
it "should return correct number of areas" do
@paths.size.should eq 2
end
it "should return correct path 1" do
@paths[0].should have_path_data_close_to "M0 180L66.66666666666666 140L133.33333333333331 160L133.33333333333331 200L66.66666666666666 200L0 200Z"
end
it "should return correct path 2" do
@paths[1].should have_path_data_close_to "M0 140L66.66666666666666 120L133.33333333333331 100L133.33333333333331 160L66.66666666666666 140L0 180Z"
end
end
describe "using layers() and values()" do
before do
x=@x
y=@y
@data=[{:first=>1,:second=>2},{:first=>3,:second=>1},{:first=>2,:second=>3}]
@stack.
layers([:first,:second]).
values(@data).
x(lambda {|d| x.scale(index)}).
y(lambda {|d,dd| y.scale(d[dd])}).layer.add(Rubyvis::Area)
@vis.render
doc=Nokogiri::XML(@vis.to_svg)
@paths=doc.xpath("//xmlns:path")
#
end
it "should return correct number of areas" do
@paths.size.should eq 2
end
it "should return correct path 1" do
@paths[0].should have_path_data_close_to "M0 180L66.66666666666666 140L133.33333333333331 160L133.33333333333331 200L66.66666666666666 200L0 200Z"
end
it "should return correct path 2" do
@paths[1].should have_path_data_close_to "M0 140L66.66666666666666 120L133.33333333333331 100L133.33333333333331 160L66.66666666666666 140L0 180Z"
end
end
end
end