@@ -79,7 +79,7 @@ defmodule Scenic.Component.Input.SliderTest do
79
79
# ============================================================================
80
80
# handle_input
81
81
82
- test "handle_input {:cursor_button, :press" do
82
+ test "handle_input {:cursor_button, :press - integer " do
83
83
self = self ( )
84
84
context = % ViewPort.Context { viewport: self }
85
85
Process . put ( :parent_pid , self )
@@ -102,6 +102,110 @@ defmodule Scenic.Component.Input.SliderTest do
102
102
assert_receive ( { :"$gen_cast" , { :event , { :value_changed , :test_id , 34 } , ^ self } } )
103
103
end
104
104
105
+ test "handle_input {:cursor_button, :press - float" do
106
+ self = self ( )
107
+ context = % ViewPort.Context { viewport: self }
108
+ Process . put ( :parent_pid , self )
109
+
110
+ orig_value = 2.0
111
+ extents = { 0.0 , 100.0 }
112
+ state = % { @ state | value: orig_value , extents: extents }
113
+
114
+ { :noreply , state } =
115
+ Slider . handle_input ( { :cursor_button , { :left , :press , nil , { 103 , 0 } } } , context , % {
116
+ state
117
+ | tracking: false
118
+ } )
119
+
120
+ assert state . tracking
121
+ assert state . value != orig_value
122
+
123
+ # confirm the input was captured
124
+ assert_receive ( { :"$gen_cast" , { :capture_input , ^ context , [ :cursor_button , :cursor_pos ] } } )
125
+ # confirm the graph was pushed
126
+ assert_receive ( { :"$gen_cast" , { :push_graph , _ , _ , _ } } )
127
+
128
+ # confirm the value change was sent
129
+ assert_receive ( { :"$gen_cast" , { :event , { :value_changed , :test_id , pos } , ^ self } } )
130
+ assert pos > 34
131
+ assert pos < 35
132
+ end
133
+
134
+ test "handle_input {:cursor_button, :press - list" do
135
+ self = self ( )
136
+ context = % ViewPort.Context { viewport: self }
137
+ Process . put ( :parent_pid , self )
138
+
139
+ orig_value = :yellow
140
+ extents = [ :red , :yellow , :purple , :blue , :orange ]
141
+ state = % { @ state | value: orig_value , extents: extents }
142
+
143
+ { :noreply , state } =
144
+ Slider . handle_input ( { :cursor_button , { :left , :press , nil , { 203 , 0 } } } , context , % {
145
+ state
146
+ | tracking: false
147
+ } )
148
+
149
+ assert state . tracking
150
+ assert state . value != orig_value
151
+
152
+ # confirm the input was captured
153
+ assert_receive ( { :"$gen_cast" , { :capture_input , ^ context , [ :cursor_button , :cursor_pos ] } } )
154
+ # confirm the graph was pushed
155
+ assert_receive ( { :"$gen_cast" , { :push_graph , _ , _ , _ } } )
156
+
157
+ # confirm the value change was sent
158
+ assert_receive ( { :"$gen_cast" , { :event , { :value_changed , :test_id , :blue } , ^ self } } )
159
+
160
+ # below min
161
+ { :noreply , _ } =
162
+ Slider . handle_input ( { :cursor_button , { :left , :press , nil , { - 203 , 0 } } } , context , % {
163
+ state
164
+ | tracking: false
165
+ } )
166
+
167
+ assert_receive ( { :"$gen_cast" , { :event , { :value_changed , :test_id , :red } , ^ self } } )
168
+
169
+ # above max
170
+ { :noreply , _ } =
171
+ Slider . handle_input ( { :cursor_button , { :left , :press , nil , { 1203 , 0 } } } , context , % {
172
+ state
173
+ | tracking: false
174
+ } )
175
+
176
+ assert_receive ( { :"$gen_cast" , { :event , { :value_changed , :test_id , :orange } , ^ self } } )
177
+ end
178
+
179
+ test "handle_input {:cursor_button, :press, far left" do
180
+ self = self ( )
181
+ context = % ViewPort.Context { viewport: self }
182
+ Process . put ( :parent_pid , self )
183
+
184
+ { :noreply , state } =
185
+ Slider . handle_input ( { :cursor_button , { :left , :press , nil , { - 103 , 0 } } } , context , % {
186
+ @ state
187
+ | tracking: false
188
+ } )
189
+
190
+ assert state . tracking
191
+ assert state . value == 0
192
+ end
193
+
194
+ test "handle_input {:cursor_button, :press, far right" do
195
+ self = self ( )
196
+ context = % ViewPort.Context { viewport: self }
197
+ Process . put ( :parent_pid , self )
198
+
199
+ { :noreply , state } =
200
+ Slider . handle_input ( { :cursor_button , { :left , :press , nil , { 1003 , 0 } } } , context , % {
201
+ @ state
202
+ | tracking: false
203
+ } )
204
+
205
+ assert state . tracking
206
+ assert state . value == 100
207
+ end
208
+
105
209
test "handle_input {:cursor_button, :release" do
106
210
self = self ( )
107
211
context = % ViewPort.Context { viewport: self }
0 commit comments