1
+ // Licensed to the .NET Foundation under one or more agreements.
2
+ // The .NET Foundation licenses this file to you under the MIT license.
3
+ // See the LICENSE file in the project root for more information.
4
+
5
+ using Microsoft . Toolkit . Uwp ;
6
+ using Microsoft . Toolkit . Uwp . UI . Controls ;
7
+ using Microsoft . VisualStudio . TestTools . UnitTesting ;
8
+ using System . Threading . Tasks ;
9
+
10
+ namespace UnitTests . UI . Controls
11
+ {
12
+ [ TestClass ]
13
+ public class Test_RangeSelector : VisualUITestBase
14
+ {
15
+ [ TestCategory ( "Initialize" ) ]
16
+ [ TestMethod ]
17
+
18
+ // If
19
+ // Minimum < Maximum
20
+ //
21
+ // Then
22
+ // Minimum dose not change
23
+ // Maximum dose not change
24
+
25
+ // If
26
+ // Minimum < Maximum
27
+ // RangeStart >= Minimum
28
+ // RangeStart <= Maximum
29
+ // RangeStart <= RangeEnd
30
+ //
31
+ // Then
32
+ // RangeStart does not change
33
+
34
+ // If
35
+ // Minimum < Maximum
36
+ // RangeEnd >= Minimum
37
+ // RangeEnd <= Maximum
38
+ // RangeEnd >= RangeStart
39
+ //
40
+ // Then
41
+ // RangeEnd dose not change
42
+ // Input:Sf Min Start End Max Expected:Sf Min Start End Max
43
+ [ DataRow ( 1 , 0 , 0 , 100 , 100 , 1 , 0 , 0 , 100 , 100 , DisplayName = "Minimum < Maximum, Minimum == RangeStart < RangeEnd == Maximum" ) ]
44
+ [ DataRow ( 1 , 0 , 10 , 90 , 100 , 1 , 0 , 10 , 90 , 100 , DisplayName = "Minimum < Maximum, Minimum < RangeStart < RangeEnd < Maximum" ) ]
45
+ [ DataRow ( 1 , 0 , 50 , 50 , 100 , 1 , 0 , 50 , 50 , 100 , DisplayName = "Minimum < Maximum, Minimum < RangeStart == RangeEnd < Maximum" ) ]
46
+ [ DataRow ( 1 , 0 , 0 , 90 , 100 , 1 , 0 , 0 , 90 , 100 , DisplayName = "Minimum < Maximum, Minimum == RangeStart < RangeEnd < Maximum" ) ]
47
+ [ DataRow ( 1 , 0 , 0 , 0 , 100 , 1 , 0 , 0 , 0 , 100 , DisplayName = "Minimum < Maximum, Minimum == RangeStart == RangeEnd < Maximum" ) ]
48
+ [ DataRow ( 1 , 0 , 10 , 100 , 100 , 1 , 0 , 10 , 100 , 100 , DisplayName = "Minimum < Maximum, Minimum < RangeStart < RangeEnd == Maximum" ) ]
49
+ [ DataRow ( 1 , 0 , 100 , 100 , 100 , 1 , 0 , 100 , 100 , 100 , DisplayName = "Minimum < Maximum, Minimum < RangeStart == RangeEnd == Maximum" ) ]
50
+
51
+ // If
52
+ // Minimum < Maximum
53
+ // RangeEnd <= Maximum
54
+ // RangeEnd >= Minimum
55
+ // RangeStart >= Minimum
56
+ // RangeStart >= RangeEnd
57
+ //
58
+ // Then
59
+ // RangeStart will be RangeEnd
60
+ [ DataRow ( 1 , 0 , 90 , 10 , 100 , 1 , 0 , 10 , 10 , 100 , DisplayName = "Minimum < Maximum, Minimum < RangeStart > RangeEnd < Maximum" ) ]
61
+ [ DataRow ( 1 , 0 , 110 , 10 , 100 , 1 , 0 , 10 , 10 , 100 , DisplayName = "Minimum < Maximum, Minimum < RangeStart > RangeEnd < Maximum, RangeStart > Maximum" ) ]
62
+
63
+ // If
64
+ // Minimum < Maximum
65
+ // RangeStart <= Minimum
66
+ //
67
+ // Then
68
+ // RangeStart will be Minimum
69
+
70
+ // If
71
+ // Minimum < Maximum
72
+ // RangeEnd <= Minimum
73
+ //
74
+ // Then
75
+ // RangeEnd will be Minimum
76
+
77
+ // If
78
+ // Minimum < Maximum
79
+ // RangeEnd <= Minimum
80
+ // RangeStart >= RangeEnd
81
+ //
82
+ // Then
83
+ // RangeEnd will be Minimum
84
+ // RangeStart will be Minimum
85
+ [ DataRow ( 1 , 0 , - 50 , - 50 , 100 , 1 , 0 , 0 , 0 , 100 , DisplayName = "Minimum < Maximum, Minimum > RangeStart == RangeEnd < Maximum" ) ]
86
+ [ DataRow ( 1 , 0 , - 90 , 90 , 100 , 1 , 0 , 0 , 90 , 100 , DisplayName = "Minimum < Maximum, Minimum > RangeStart < RangeEnd < Maximum" ) ]
87
+ [ DataRow ( 1 , 0 , - 90 , - 10 , 100 , 1 , 0 , 0 , 0 , 100 , DisplayName = "Minimum < Maximum, Minimum > RangeStart < RangeEnd < Maximum, RangeEnd < Minimum" ) ]
88
+ [ DataRow ( 1 , 0 , - 10 , - 90 , 100 , 1 , 0 , 0 , 0 , 100 , DisplayName = "Minimum < Maximum, Minimum > RangeStart > RangeEnd < Maximum" ) ]
89
+ [ DataRow ( 1 , 0 , 10 , - 90 , 100 , 1 , 0 , 0 , 0 , 100 , DisplayName = "Minimum < Maximum, Minimum < RangeStart > RangeEnd < Maximum, RangeEnd < Minimum" ) ]
90
+
91
+ // If
92
+ // Minimum < Maximum
93
+ // RangeEnd >= Maximum
94
+ //
95
+ // Then
96
+ // RangeEnd will be Maximum
97
+
98
+ // If
99
+ // Minimum < Maximum
100
+ // RangeStart >= Maximum
101
+ // RangeEnd >= Maximum
102
+ //
103
+ // Then
104
+ // RangeStart will be Maximum
105
+ // RangeEnd will be Maximum
106
+ [ DataRow ( 1 , 0 , 150 , 150 , 100 , 1 , 0 , 100 , 100 , 100 , DisplayName = "Minimum < Maximum, Minimum < RangeStart == RangeEnd > Maximum" ) ]
107
+ [ DataRow ( 1 , 0 , 10 , 190 , 100 , 1 , 0 , 10 , 100 , 100 , DisplayName = "Minimum < Maximum, Minimum < RangeStart < RangeEnd > Maximum" ) ]
108
+ [ DataRow ( 1 , 0 , 110 , 190 , 100 , 1 , 0 , 100 , 100 , 100 , DisplayName = "Minimum < Maximum, Minimum < RangeStart < RangeEnd > Maximum, RangeStart > Maximum" ) ]
109
+ [ DataRow ( 1 , 0 , 190 , 110 , 100 , 1 , 0 , 100 , 100 , 100 , DisplayName = "Minimum < Maximum, Minimum < RangeStart > RangeEnd > Maximum" ) ]
110
+
111
+ // If
112
+ // Minimum >= Maximum
113
+ //
114
+ // Then
115
+ // Minimum will be Maximum
116
+ // Maximum will be Maximum + 0.01
117
+
118
+ // If
119
+ // Minimum >= Maximum
120
+ // RangeStart > Maximum
121
+ // RangeEnd > Maximum
122
+ //
123
+ // Then
124
+ // RangeStart will be Maximum + 0.01
125
+ // Else
126
+ // RangeStart will be Maximum
127
+
128
+ // If
129
+ // Minimum >= Maximum
130
+ // RangeEnd > Maximum
131
+ //
132
+ // Then
133
+ // RangeEnd will be Maximum + 0.01
134
+ // Else
135
+ // RangeEnd will be Maximum
136
+
137
+ // Input:Sf Min Max Start End Expected:Sf Min Max Start End
138
+ [ DataRow ( 1 , 0 , 0 , 0 , 0 , 1 , 0 , 0 , 0 , 0.01 , DisplayName = "Minimum == Maximum, Minimum == RangeStart == RangeEnd == Maximum" ) ]
139
+ [ DataRow ( 1 , 0 , 0 , 10 , 0 , 1 , 0 , 0 , 0.01 , 0.01 , DisplayName = "Minimum == Maximum, Minimum == RangeStart < RangeEnd > Maximum" ) ]
140
+ [ DataRow ( 1 , 0 , 0 , - 10 , 0 , 1 , 0 , 0 , 0 , 0.01 , DisplayName = "Minimum == Maximum, Minimum == RangeStart > RangeEnd < Maximum" ) ]
141
+ [ DataRow ( 1 , 0 , - 10 , 0 , 0 , 1 , 0 , 0 , 0 , 0.01 , DisplayName = "Minimum == Maximum, Minimum > RangeStart < RangeEnd == Maximum" ) ]
142
+ [ DataRow ( 1 , 0 , 10 , 0 , 0 , 1 , 0 , 0 , 0 , 0.01 , DisplayName = "Minimum == Maximum, Minimum < RangeStart > RangeEnd == Maximum" ) ]
143
+ [ DataRow ( 1 , 0 , 10 , 90 , 0 , 1 , 0 , 0.01 , 0.01 , 0.01 , DisplayName = "Minimum == Maximum, Minimum < RangeStart < RangeEnd > Maximum" ) ]
144
+ [ DataRow ( 1 , 0 , 90 , 10 , 0 , 1 , 0 , 0.01 , 0.01 , 0.01 , DisplayName = "Minimum == Maximum, Minimum < RangeStart > RangeEnd > Maximum" ) ]
145
+ [ DataRow ( 1 , 0 , - 90 , - 10 , 0 , 1 , 0 , 0 , 0 , 0.01 , DisplayName = "Minimum == Maximum, Minimum > RangeStart < RangeEnd < Maximum" ) ]
146
+ [ DataRow ( 1 , 0 , - 10 , - 90 , 0 , 1 , 0 , 0 , 0 , 0.01 , DisplayName = "Minimum == Maximum, Minimum > RangeStart > RangeEnd < Maximum" ) ]
147
+ [ DataRow ( 1 , 0 , 10 , - 10 , 0 , 1 , 0 , 0 , 0 , 0.01 , DisplayName = "Minimum == Maximum, Minimum < RangeStart > RangeEnd < Maximum" ) ]
148
+ [ DataRow ( 1 , 0 , - 10 , 10 , 0 , 1 , 0 , 0 , 0.01 , 0.01 , DisplayName = "Minimum == Maximum, Minimum > RangeStart < RangeEnd > Maximum" ) ]
149
+
150
+
151
+ [ DataRow ( 1 , 100 , 0 , 100 , 0 , 1 , 0 , 0 , 0.01 , 0.01 , DisplayName = "Minimum > Maximum, Minimum > RangeStart < RangeEnd > Maximum, RangeStart == Maximum, RangeEnd == Minimum" ) ]
152
+ [ DataRow ( 1 , 100 , 10 , 90 , 0 , 1 , 0 , 0.01 , 0.01 , 0.01 , DisplayName = "Minimum > Maximum, Minimum > RangeStart < RangeEnd > Maximum" ) ]
153
+ [ DataRow ( 1 , 100 , 50 , 50 , 0 , 1 , 0 , 0.01 , 0.01 , 0.01 , DisplayName = "Minimum > Maximum, Minimum > RangeStart == RangeEnd > Maximum" ) ]
154
+ [ DataRow ( 1 , 100 , 0 , 0 , 0 , 1 , 0 , 0 , 0 , 0.01 , DisplayName = "Minimum > Maximum, Minimum > RangeStart == RangeEnd == Maximum" ) ]
155
+ [ DataRow ( 1 , 100 , 100 , 100 , 0 , 1 , 0 , 0.01 , 0.01 , 0.01 , DisplayName = "Minimum > Maximum, Minimum == RangeStart == RangeEnd > Maximum" ) ]
156
+
157
+ [ DataRow ( 1 , 100 , 10 , 100 , 0 , 1 , 0 , 0.01 , 0.01 , 0.01 , DisplayName = "Minimum > Maximum, Minimum > RangeStart < RangeEnd > Maximum, RangeEnd == Maximum" ) ]
158
+
159
+ [ DataRow ( 1 , 100 , 90 , 10 , 0 , 1 , 0 , 0.01 , 0.01 , 0.01 , DisplayName = "Minimum > Maximum, Minimum > RangeStart > RangeEnd > Maximum" ) ]
160
+ [ DataRow ( 1 , 100 , 100 , 10 , 0 , 1 , 0 , 0.01 , 0.01 , 0.01 , DisplayName = "Minimum > Maximum, Minimum > RangeStart > RangeEnd > Maximum, RangeStart == Maximum" ) ]
161
+ [ DataRow ( 1 , 100 , 90 , 0 , 0 , 1 , 0 , 0 , 0 , 0.01 , DisplayName = "Minimum > Maximum, Minimum > RangeStart > RangeEnd > Maximum, RangeEnd == Maximum" ) ]
162
+
163
+
164
+ [ DataRow ( 1 , 100 , 100 , 0 , 0 , 1 , 0 , 0 , 0 , 0.01 , DisplayName = "Minimum > Maximum, Minimum == RangeStart > RangeEnd == Maximum" ) ]
165
+
166
+
167
+
168
+ [ DataRow ( 1 , 100 , - 90 , - 10 , 0 , 1 , 0 , 0 , 0 , 0.01 , DisplayName = "Minimum > Maximum, Minimum > RangeStart < RangeEnd < Maximum" ) ]
169
+ [ DataRow ( 1 , 100 , - 10 , - 90 , 0 , 1 , 0 , 0 , 0 , 0.01 , DisplayName = "Minimum > Maximum, Minimum > RangeStart > RangeEnd < Maximum" ) ]
170
+ [ DataRow ( 1 , 100 , - 50 , - 50 , 0 , 1 , 0 , 0 , 0 , 0.01 , DisplayName = "Minimum > Maximum, Minimum > RangeStart == RangeEnd < Maximum" ) ]
171
+
172
+ [ DataRow ( 1 , 100 , 110 , 190 , 0 , 1 , 0 , 0.01 , 0.01 , 0.01 , DisplayName = "Minimum > Maximum, Minimum < RangeStart < RangeEnd > Maximum" ) ]
173
+ [ DataRow ( 1 , 100 , 190 , 110 , 0 , 1 , 0 , 0.01 , 0.01 , 0.01 , DisplayName = "Minimum > Maximum, Minimum < RangeStart > RangeEnd > Maximum" ) ]
174
+ [ DataRow ( 1 , 100 , 150 , 150 , 0 , 1 , 0 , 0.01 , 0.01 , 0.01 , DisplayName = "Minimum > Maximum, Minimum < RangeStart == RangeEnd > Maximum" ) ]
175
+
176
+ public async Task Initialize ( double stepFrequency , double minimum , double rangeStart , double rangeEnd , double maximum , double expectedStepFrequency , double expectedMinimum , double expectedRangeStart , double expectedRangeEnd , double expectedMaximum )
177
+ {
178
+ var input = new TestRecord ( stepFrequency , minimum , rangeStart , rangeEnd , maximum ) ;
179
+ var expected = new TestRecord ( expectedStepFrequency , expectedMinimum , expectedRangeStart , expectedRangeEnd , expectedMaximum ) ;
180
+
181
+ await App . DispatcherQueue . EnqueueAsync ( async ( ) =>
182
+ {
183
+ var r = BuildRangeSelecor ( input ) ;
184
+
185
+ await SetTestContentAsync ( r ) ;
186
+
187
+ var actual = BuildTestRecord ( r ) ;
188
+
189
+ Assert . AreEqual ( expected , actual ) ;
190
+ } ) ;
191
+ }
192
+
193
+ public record TestRecord ( double StepFrequency , double Minimum , double RangeStart , double RangeEnd , double Maximum ) ;
194
+
195
+ public static RangeSelector BuildRangeSelecor ( TestRecord input )
196
+ => new ( )
197
+ {
198
+ StepFrequency = input . StepFrequency ,
199
+ Minimum = input . Minimum ,
200
+ Maximum = input . Maximum ,
201
+ RangeStart = input . RangeStart ,
202
+ RangeEnd = input . RangeEnd ,
203
+ } ;
204
+
205
+ public static TestRecord BuildTestRecord ( RangeSelector r )
206
+ => new ( r . StepFrequency , r . Minimum , r . RangeStart , r . RangeEnd , r . Maximum ) ;
207
+
208
+ }
209
+ }
0 commit comments