forked from clbustos/rubyvis
-
Notifications
You must be signed in to change notification settings - Fork 0
/
anchor_spec.rb
126 lines (111 loc) · 3.24 KB
/
anchor_spec.rb
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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
require File.expand_path(File.dirname(__FILE__)+"/spec_helper.rb")
describe Rubyvis::Anchor do
describe "inner anchor data should work fine" do
before do
w=200
h=200
data_p1=[]
data_p2=[]
data_l=[]
@expected_l=[]
@expected_p2=[]
vis = pv.Panel.new().width(w).height(h)
cell=vis.add(pv.Panel).
data([1,2]).top(lambda {|*args| data_p1.push(args); 100}).
add(pv.Panel). data(['a','b']).top(lambda {|*args| data_p2.push(args); 100;})
cell.anchor('center').add(pv.Bar).top(lambda {|*args| data_l.push args; 1})
[1,2].each {|a| %w{a b}.each {|b|
@expected_l.push([b,b,a,nil])
@expected_p2.push([b,a,nil])
}}
@expected_p1=[[1,nil],[2,nil]]
@data_p1=data_p1
@data_p2=data_p2
@data_l=data_l
vis.render
end
if(true)
it "first loop correct" do
@data_p1.should==@expected_p1
end
it "second loop correct" do
@data_p2.should==@expected_p2
end
end
it "label loop correct" do
@data_l.should==@expected_l
end
end
it "antibiotics example should render correct data" do
a1=['a','b','c']
a2=[1,2,3]
antibiotics=["penicillin", "streptomycin", "neomycin"]
adatas=[]
s = 180
_p = 20
vis = pv.Panel.new().
height(s * antibiotics.size + _p * (antibiotics.size - 1)).
width(s * antibiotics.size + _p * (antibiotics.size - 1)).
top(14.5).
left(14.5).
bottom(44).
right(14)
cell = vis.add(pv.Panel).
data(a1).
width(s).
left(lambda {(s + _p) * index}).
add(pv.Panel).
data(a2).
height(s).
top(lambda {(s + _p) * self.index});
cell.anchor("center").add(pv.Label).text(lambda {|*args| adatas.push args})
expected=[]
a1.each {|a| a2.each {|b| expected.push([b,b,a,nil])}}
vis.render
adatas.should==expected
end
context "Panel-Panel-label assigment" do
before do
@h=200
@w=200
@values=["a","b","c"]
@vis = Rubyvis.Panel.new.width(@w).height(@h). add(pv.Panel).data(@values). add(pv.Panel).data(@values)
@anchor=@vis.anchor('center')
@label=@vis.add(pv.Label)
end
it "should have correct data" do
datas=[]
@label.text(lambda {|*args| datas.push args})
@vis.render
expected=[]
@values.each {|a| @values.each {|b| expected.push([b,b,a,nil])}}
datas.should==expected
end
end
context "Panel-bar assigment" do
before do
@h=200
@w=200
@vis = Rubyvis.Panel.new.width(@w).height(@h)
@bar = @vis.add(Rubyvis::Bar).data([1,2,3])
@anchor=@bar.anchor('center')
@label=@anchor.add(Rubyvis::Label)
end
it "should have correct data for direct asigment" do
datas=[]
expected=[[1,nil],[2,nil],[3,nil]]
@label.text(lambda {|*args| datas.push args})
@vis.render
datas.should==expected
end
it "should have correct data for two levels of data" do
datas=[]
@vis.data(%w{a b c})
expected=[]
%w{a b c}.each {|a| [1,2,3].each {|b| expected.push([b,a])}}
@label.text(lambda {|*args| datas.push args})
@vis.render
datas.should==expected
end
end
end