Skip to content

Commit d171ec5

Browse files
authored
Merge pull request #52 from boydm/boyd
Add tests for components.ex
2 parents ad3e2c6 + 5034fa0 commit d171ec5

File tree

1 file changed

+224
-0
lines changed

1 file changed

+224
-0
lines changed

test/scenic/components_test.exs

Lines changed: 224 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,224 @@
1+
#
2+
# Created by Boyd Multerer on September 19, 2018.
3+
# Copyright © 2018 Kry10 Industries. All rights reserved.
4+
#
5+
6+
defmodule Scenic.ComponentsTest do
7+
use ExUnit.Case, async: true
8+
doctest Scenic.Components
9+
alias Scenic.Graph
10+
alias Scenic.Primitive
11+
alias Scenic.Components
12+
13+
@graph Graph.build()
14+
15+
# @tau 2.0 * :math.pi();
16+
17+
# import IEx
18+
19+
# ============================================================================
20+
test "button adds to a graph - default opts" do
21+
g = Components.button(@graph, "Name")
22+
p = g.primitives[1]
23+
24+
assert p.module == Primitive.SceneRef
25+
assert p.data == {Scenic.Component.Button, "Name"}
26+
end
27+
28+
test "button adds to a graph" do
29+
p =
30+
Components.button(@graph, "Name", id: :button)
31+
|> Graph.get!(:button)
32+
33+
assert p.module == Primitive.SceneRef
34+
assert p.data == {Scenic.Component.Button, "Name"}
35+
assert p.id == :button
36+
end
37+
38+
test "button modifies ref init data" do
39+
p =
40+
Components.button(@graph, "Name", id: :button)
41+
|> Graph.get!(:button)
42+
|> Components.button("Modified", id: :modified)
43+
44+
assert p.data == {Scenic.Component.Button, "Modified"}
45+
assert p.id == :modified
46+
end
47+
48+
# ============================================================================
49+
test "checkbox adds to a graph - default opts" do
50+
g = Components.checkbox(@graph, {"Name", true})
51+
p = g.primitives[1]
52+
53+
assert p.module == Primitive.SceneRef
54+
assert p.data == {Scenic.Component.Input.Checkbox, {"Name", true}}
55+
end
56+
57+
test "checkbox adds to a graph" do
58+
p =
59+
Components.checkbox(@graph, {"Name", true}, id: :checkbox)
60+
|> Graph.get!(:checkbox)
61+
62+
assert p.module == Primitive.SceneRef
63+
assert p.data == {Scenic.Component.Input.Checkbox, {"Name", true}}
64+
assert p.id == :checkbox
65+
66+
p =
67+
Components.checkbox(@graph, {"Name", false}, id: :checkbox)
68+
|> Graph.get!(:checkbox)
69+
70+
assert p.data == {Scenic.Component.Input.Checkbox, {"Name", false}}
71+
end
72+
73+
test "checkbox modifies ref init data" do
74+
p =
75+
Components.checkbox(@graph, {"Name", true}, id: :checkbox)
76+
|> Graph.get!(:checkbox)
77+
|> Components.checkbox({"Modified", false}, id: :modified)
78+
79+
assert p.data == {Scenic.Component.Input.Checkbox, {"Modified", false}}
80+
assert p.id == :modified
81+
end
82+
83+
# ============================================================================
84+
@drop_data {[{"a", 1}, {"b", 2}], 2}
85+
86+
test "dropdown adds to a graph - default opts" do
87+
g = Components.dropdown(@graph, @drop_data)
88+
p = g.primitives[1]
89+
90+
assert p.module == Primitive.SceneRef
91+
assert p.data == {Scenic.Component.Input.Dropdown, @drop_data}
92+
end
93+
94+
test "dropdown adds to a graph" do
95+
p =
96+
Components.dropdown(@graph, @drop_data, id: :dropdown)
97+
|> Graph.get!(:dropdown)
98+
99+
assert p.module == Primitive.SceneRef
100+
assert p.data == {Scenic.Component.Input.Dropdown, @drop_data}
101+
assert p.id == :dropdown
102+
end
103+
104+
test "dropdown modifies ref init data" do
105+
mod_data = {[{"a", 1}, {"b", 2}], 1}
106+
107+
p =
108+
Components.dropdown(@graph, @drop_data, id: :dropdown)
109+
|> Graph.get!(:dropdown)
110+
|> Components.dropdown(mod_data, id: :modified)
111+
112+
assert p.data == {Scenic.Component.Input.Dropdown, mod_data}
113+
assert p.id == :modified
114+
end
115+
116+
# ============================================================================
117+
@radio_data [{"a", 1}, {"b", 2, true}, {"c", 2, false}]
118+
119+
test "radio_group adds to a graph - default opts" do
120+
g = Components.radio_group(@graph, @radio_data)
121+
p = g.primitives[1]
122+
123+
assert p.module == Primitive.SceneRef
124+
assert p.data == {Scenic.Component.Input.RadioGroup, @radio_data}
125+
end
126+
127+
test "radio_group adds to a graph" do
128+
p =
129+
Components.radio_group(@graph, @radio_data, id: :radio_group)
130+
|> Graph.get!(:radio_group)
131+
132+
assert p.module == Primitive.SceneRef
133+
assert p.data == {Scenic.Component.Input.RadioGroup, @radio_data}
134+
assert p.id == :radio_group
135+
end
136+
137+
test "radio_group modifies ref init data" do
138+
mod_data = [{"a", 1, true}, {"b", 2}, {"c", 2, false}]
139+
140+
p =
141+
Components.radio_group(@graph, @radio_data, id: :radio_group)
142+
|> Graph.get!(:radio_group)
143+
|> Components.radio_group(mod_data, id: :modified)
144+
145+
assert p.data == {Scenic.Component.Input.RadioGroup, mod_data}
146+
assert p.id == :modified
147+
end
148+
149+
# ============================================================================
150+
@slider_int_data {{0, 100}, 20}
151+
@slider_float_data {{0.1, 100.2}, 20.2}
152+
@slider_list_data {[:red, :green, :blue], :green}
153+
154+
test "slider adds to a graph - default opts" do
155+
g = Components.slider(@graph, @slider_int_data)
156+
p = g.primitives[1]
157+
158+
assert p.module == Primitive.SceneRef
159+
assert p.data == {Scenic.Component.Input.Slider, @slider_int_data}
160+
end
161+
162+
test "slider adds to a graph" do
163+
p =
164+
Components.slider(@graph, @slider_int_data, id: :slider)
165+
|> Graph.get!(:slider)
166+
167+
assert p.module == Primitive.SceneRef
168+
assert p.data == {Scenic.Component.Input.Slider, @slider_int_data}
169+
assert p.id == :slider
170+
171+
p =
172+
Components.slider(@graph, @slider_float_data, id: :slider)
173+
|> Graph.get!(:slider)
174+
175+
assert p.data == {Scenic.Component.Input.Slider, @slider_float_data}
176+
177+
p =
178+
Components.slider(@graph, @slider_list_data, id: :slider)
179+
|> Graph.get!(:slider)
180+
181+
assert p.data == {Scenic.Component.Input.Slider, @slider_list_data}
182+
end
183+
184+
test "slider modifies ref init data" do
185+
mod_data = {[:red, :green, :blue, :yellow], :red}
186+
187+
p =
188+
Components.slider(@graph, @slider_list_data, id: :slider)
189+
|> Graph.get!(:slider)
190+
|> Components.slider(mod_data, id: :modified)
191+
192+
assert p.data == {Scenic.Component.Input.Slider, mod_data}
193+
assert p.id == :modified
194+
end
195+
196+
# ============================================================================
197+
test "text_field adds to a graph - default opts" do
198+
g = Components.text_field(@graph, "Name")
199+
p = g.primitives[1]
200+
201+
assert p.module == Primitive.SceneRef
202+
assert p.data == {Scenic.Component.Input.TextField, "Name"}
203+
end
204+
205+
test "text_field adds to a graph" do
206+
p =
207+
Components.text_field(@graph, "Name", id: :text_field)
208+
|> Graph.get!(:text_field)
209+
210+
assert p.module == Primitive.SceneRef
211+
assert p.data == {Scenic.Component.Input.TextField, "Name"}
212+
assert p.id == :text_field
213+
end
214+
215+
test "text_field modifies ref init data" do
216+
p =
217+
Components.text_field(@graph, "Name", id: :text_field)
218+
|> Graph.get!(:text_field)
219+
|> Components.text_field("Modified", id: :modified)
220+
221+
assert p.data == {Scenic.Component.Input.TextField, "Modified"}
222+
assert p.id == :modified
223+
end
224+
end

0 commit comments

Comments
 (0)