File: bar_spec.rb

package info (click to toggle)
ruby-rubyvis 0.6.1%2Bdfsg1-2
  • links: PTS, VCS
  • area: main
  • in suites: buster, stretch
  • size: 1,808 kB
  • ctags: 679
  • sloc: ruby: 11,114; makefile: 2
file content (77 lines) | stat: -rw-r--r-- 2,906 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
require File.expand_path(File.dirname(__FILE__)+"/spec_helper.rb")
  describe Rubyvis::Bar do
  it "should have correct properties" do
    props=[:antialias, :bottom, :cursor, :data, :events, :fill_style, :height, :id, :left, :line_width, :reverse, :right, :stroke_style, :title, :top, :visible, :width].inject({}) {|ac, v| ac[v]=true; ac}
    Rubyvis::Bar.properties.should==props
  end
  it "Rubyvis.Bar be the same as Rubyvis::Bar" do
    Rubyvis.Bar.should eql Rubyvis::Bar
  end
  it "should return correct defaults" do
    props=Rubyvis::Bar.defaults._properties
    props.size.should==2
    props[0].name.should==:line_width
    props[0].value.should==1.5
    props[1].name.should==:fill_style
    props[1].value.should be_instance_of Proc
    Rubyvis::Bar.defaults.proto.should be_instance_of Rubyvis::Mark
    
  end
  context "on a Panel" do 
    before do
      #Rubyvis.clear_document
    @h=200
    @w=200
    @vis = Rubyvis.Panel.new.width(@w).height(@h)
    @bar=@vis.add(pv.Bar).data([1,2]).width(20).height(lambda {|d| d * 80}).bottom(0).left(lambda {self.index * 25});
    end
    it "should bould propertly" do
      @vis.render
      s=@vis.to_svg
      doc=Nokogiri::XML(s)
      attribs=doc.xpath("//xmlns:rect").map {|v|
      [v.attributes['y'].value, v.attributes['height'].value, v.attributes['fill'].value]
      }
      attribs.should==[["120","80","rgb(31,119,180)"],["40","160","rgb(31,119,180)"]]
    end
    
    it "should bould properly with string fill_style" do
      @bar.fill_style('red')
      @vis.render
      s=@vis.to_svg
      doc=Nokogiri::XML(s)
      doc.at_xpath("//xmlns:rect").attributes['fill'].value.should=='rgb(255,0,0)'
    end
    it "should bould properly with pv.color" do
      @bar.fill_style(pv.color('red'))
      @vis.render
      s=@vis.to_svg
      doc=Nokogiri::XML(s)
      doc.at_xpath("//xmlns:rect").attributes['fill'].value.should=='rgb(255,0,0)'
    end
    it "should bould properly with pv.colors" do
      @bar.fill_style(pv.colors('black','red'))
      @vis.render
      s=@vis.to_svg
      doc=Nokogiri::XML(s)
      attr=doc.xpath("//xmlns:rect").map {|x| x.attributes['fill'].value}
      attr.should==['rgb(0,0,0)', 'rgb(255,0,0)']
    end
    
    it "should bould propertly with double data" do
      @vis = Rubyvis.Panel.new.width(@w).height(100)
      @vis.add(pv.Bar).data([1,2]).width(20).height(lambda {|d| d * 10}).bottom(0).left(lambda {self.index * 25}).add(pv.Bar).width(10).height(lambda {|d| d * 30}).bottom(0).left(lambda {self.index * 25});
      @vis.render
      s=@vis.to_svg
      doc=Nokogiri::XML(s)
      attribs=doc.xpath("//xmlns:rect").map {|v|
      x=v.attributes['x'] ? v.attributes['x'].value : nil
        [x, v.attributes['y'].value, v.attributes['height'].value]
      }
      attribs.should==[[nil,"90","10"], ["25","80","20"], [nil,"70","30"], ["25","40","60"]]
    end
    
  end  
  
  
end