1
+ namespace SFML . System . Test ;
2
+
3
+ public class AngleTests
4
+ {
5
+ private const float Eps = 1e-5f ;
6
+
7
+ [ Fact ]
8
+ public void Construction ( )
9
+ {
10
+ var angle = new Angle ( ) ;
11
+ Assert . Equal ( 0f , angle . Degrees ) ;
12
+ Assert . Equal ( 0f , angle . Radians ) ;
13
+ }
14
+
15
+ [ Fact ]
16
+ public void WrapSigned_WithZero ( )
17
+ => Assert . Equal ( Angle . Zero , Angle . Zero . WrapSigned ( ) ) ;
18
+
19
+ [ Theory ]
20
+ [ InlineData ( 0 , 0 ) ]
21
+ [ InlineData ( 1 , 1 ) ]
22
+ [ InlineData ( - 1 , - 1 ) ]
23
+ [ InlineData ( 90 , 90 ) ]
24
+ [ InlineData ( - 90 , - 90 ) ]
25
+ [ InlineData ( 180 , - 180 ) ]
26
+ [ InlineData ( - 180 , - 180 ) ]
27
+ [ InlineData ( 360 , 0 ) ]
28
+ [ InlineData ( - 360 , 0 ) ]
29
+ [ InlineData ( 720 , 0 ) ]
30
+ [ InlineData ( - 720 , 0 ) ]
31
+ public void WrapSigned ( float input , float expectedWrap )
32
+ => Assert . Equal ( Angle . FromDegrees ( expectedWrap ) . Radians , Angle . FromDegrees ( input ) . WrapSigned ( ) . Radians , Eps ) ;
33
+
34
+ [ Fact ]
35
+ public void WrapUnsigned_WithZero ( )
36
+ => Assert . Equal ( Angle . Zero , Angle . Zero . WrapUnsigned ( ) ) ;
37
+
38
+ [ Theory ]
39
+ [ InlineData ( 0 , 0 ) ]
40
+ [ InlineData ( 1 , 1 ) ]
41
+ [ InlineData ( - 1 , 359 ) ]
42
+ [ InlineData ( 90 , 90 ) ]
43
+ [ InlineData ( - 90 , 270 ) ]
44
+ [ InlineData ( 180 , 180 ) ]
45
+ [ InlineData ( - 180 , 180 ) ]
46
+ [ InlineData ( 360 , 0 ) ]
47
+ [ InlineData ( - 360 , 0 ) ]
48
+ [ InlineData ( 720 , 0 ) ]
49
+ [ InlineData ( - 720 , 0 ) ]
50
+ public void WrapUnsigned ( float input , float expectedWrap )
51
+ => Assert . Equal ( Angle . FromDegrees ( expectedWrap ) . Radians , Angle . FromDegrees ( input ) . WrapUnsigned ( ) . Radians , Eps ) ;
52
+
53
+ [ Theory ]
54
+ [ InlineData ( 15 , 0.26179939f ) ]
55
+ [ InlineData ( 1000 , 17.453293f ) ]
56
+ [ InlineData ( - 4321 , - 75.415677f ) ]
57
+ public void Degrees ( float degrees , float expectedRadians )
58
+ {
59
+ var angle = Angle . FromDegrees ( degrees ) ;
60
+ Assert . Equal ( degrees , angle . Degrees , Eps ) ;
61
+ Assert . Equal ( expectedRadians , angle . Radians , Eps ) ;
62
+ }
63
+
64
+ [ Theory ]
65
+ [ InlineData ( 1 , 57.2957795f ) ]
66
+ [ InlineData ( 72 , 4125.29612f ) ]
67
+ [ InlineData ( - 200 , - 11459.1559f ) ]
68
+ public void Radians ( float radians , float expectedDegrees )
69
+ {
70
+ var angle = Angle . FromRadians ( radians ) ;
71
+ Assert . Equal ( radians , angle . Radians , Eps ) ;
72
+ Assert . Equal ( expectedDegrees , angle . Degrees , Eps ) ;
73
+ }
74
+
75
+ [ Fact ]
76
+ public void Constants ( )
77
+ {
78
+ Assert . Equal ( 0f , Angle . Zero . Degrees ) ;
79
+ Assert . Equal ( 0f , Angle . Zero . Radians ) ;
80
+ }
81
+
82
+ [ Fact ]
83
+ public void OperatorEq ( )
84
+ {
85
+ Assert . True ( new Angle ( ) == new Angle ( ) ) ;
86
+ Assert . True ( new Angle ( ) == Angle . Zero ) ;
87
+ Assert . True ( new Angle ( ) == Angle . FromDegrees ( 0 ) ) ;
88
+ Assert . True ( new Angle ( ) == Angle . FromRadians ( 0 ) ) ;
89
+ Assert . True ( Angle . FromDegrees ( 0 ) == Angle . FromRadians ( 0 ) ) ;
90
+ Assert . True ( Angle . FromDegrees ( 15 ) == Angle . FromDegrees ( 15 ) ) ;
91
+ Assert . True ( Angle . FromRadians ( 15 ) == Angle . FromRadians ( 15 ) ) ;
92
+ Assert . True ( Angle . FromDegrees ( 360 ) == Angle . FromDegrees ( 360 ) ) ;
93
+ Assert . True ( Angle . FromDegrees ( 720 ) == Angle . FromDegrees ( 720 ) ) ;
94
+ }
95
+
96
+ [ Fact ]
97
+ public void OperatorNotEq ( )
98
+ {
99
+ Assert . True ( new Angle ( ) != Angle . FromRadians ( 2 ) ) ;
100
+ Assert . True ( Angle . FromDegrees ( 1 ) != Angle . FromRadians ( 1 ) ) ;
101
+ Assert . True ( Angle . FromRadians ( 0 ) != Angle . FromRadians ( 0.1f ) ) ;
102
+ }
103
+
104
+ [ Fact ]
105
+ public void OperatorLt ( )
106
+ {
107
+ Assert . True ( Angle . FromRadians ( 0 ) < Angle . FromDegrees ( 0.1f ) ) ;
108
+ Assert . True ( Angle . FromDegrees ( 0 ) < Angle . FromRadians ( 0.1f ) ) ;
109
+ Assert . True ( Angle . FromRadians ( - 0.1f ) < Angle . FromRadians ( 0f ) ) ;
110
+ Assert . True ( Angle . FromDegrees ( - 0.1f ) < Angle . FromDegrees ( 0f ) ) ;
111
+ }
112
+
113
+ [ Fact ]
114
+ public void OperatorGt ( )
115
+ {
116
+ Assert . True ( Angle . FromRadians ( 0.1f ) > Angle . FromDegrees ( 0 ) ) ;
117
+ Assert . True ( Angle . FromDegrees ( 0.1f ) > Angle . FromRadians ( 0 ) ) ;
118
+ Assert . True ( Angle . FromRadians ( 0 ) > Angle . FromRadians ( - 0.1f ) ) ;
119
+ Assert . True ( Angle . FromDegrees ( 0 ) > Angle . FromDegrees ( - 0.1f ) ) ;
120
+ }
121
+
122
+ [ Fact ]
123
+ public void OperatorLte ( )
124
+ {
125
+ Assert . True ( Angle . FromRadians ( 0 ) <= Angle . FromDegrees ( 0.1f ) ) ;
126
+ Assert . True ( Angle . FromDegrees ( 0 ) <= Angle . FromRadians ( 0.1f ) ) ;
127
+ Assert . True ( Angle . FromRadians ( - 0.1f ) <= Angle . FromRadians ( 0f ) ) ;
128
+ Assert . True ( Angle . FromDegrees ( - 0.1f ) <= Angle . FromDegrees ( 0f ) ) ;
129
+
130
+ Assert . True ( new Angle ( ) <= new Angle ( ) ) ;
131
+ Assert . True ( new Angle ( ) <= Angle . Zero ) ;
132
+ Assert . True ( new Angle ( ) <= Angle . FromDegrees ( 0 ) ) ;
133
+ Assert . True ( new Angle ( ) <= Angle . FromRadians ( 0 ) ) ;
134
+ Assert . True ( Angle . FromDegrees ( 0 ) <= Angle . FromRadians ( 0 ) ) ;
135
+ Assert . True ( Angle . FromDegrees ( 15 ) <= Angle . FromDegrees ( 15 ) ) ;
136
+ Assert . True ( Angle . FromRadians ( 15 ) <= Angle . FromRadians ( 15 ) ) ;
137
+ Assert . True ( Angle . FromDegrees ( 360 ) <= Angle . FromDegrees ( 360 ) ) ;
138
+ Assert . True ( Angle . FromDegrees ( 720 ) <= Angle . FromDegrees ( 720 ) ) ;
139
+ }
140
+
141
+ [ Fact ]
142
+ public void OperatorGte ( )
143
+ {
144
+ Assert . True ( Angle . FromRadians ( 0.1f ) > Angle . FromDegrees ( 0 ) ) ;
145
+ Assert . True ( Angle . FromDegrees ( 0.1f ) > Angle . FromRadians ( 0 ) ) ;
146
+ Assert . True ( Angle . FromRadians ( 0 ) > Angle . FromRadians ( - 0.1f ) ) ;
147
+ Assert . True ( Angle . FromDegrees ( 0 ) > Angle . FromDegrees ( - 0.1f ) ) ;
148
+
149
+ Assert . True ( new Angle ( ) >= new Angle ( ) ) ;
150
+ Assert . True ( new Angle ( ) >= Angle . Zero ) ;
151
+ Assert . True ( new Angle ( ) >= Angle . FromDegrees ( 0 ) ) ;
152
+ Assert . True ( new Angle ( ) >= Angle . FromRadians ( 0 ) ) ;
153
+ Assert . True ( Angle . FromDegrees ( 0 ) >= Angle . FromRadians ( 0 ) ) ;
154
+ Assert . True ( Angle . FromDegrees ( 15 ) >= Angle . FromDegrees ( 15 ) ) ;
155
+ Assert . True ( Angle . FromRadians ( 15 ) >= Angle . FromRadians ( 15 ) ) ;
156
+ Assert . True ( Angle . FromDegrees ( 360 ) >= Angle . FromDegrees ( 360 ) ) ;
157
+ Assert . True ( Angle . FromDegrees ( 720 ) >= Angle . FromDegrees ( 720 ) ) ;
158
+ }
159
+
160
+ [ Fact ]
161
+ public void OperatorNeg ( )
162
+ {
163
+ Assert . Equal ( - new Angle ( ) , new Angle ( ) ) ;
164
+ Assert . Equal ( - Angle . FromRadians ( - 1 ) , Angle . FromRadians ( 1 ) ) ;
165
+ Assert . Equal ( - Angle . FromDegrees ( 15 ) , Angle . FromDegrees ( - 15 ) ) ;
166
+ Assert . Equal ( - Angle . FromRadians ( 1 ) , Angle . FromRadians ( - 1 ) ) ;
167
+ }
168
+
169
+ [ Fact ]
170
+ public void OperatorAdd ( )
171
+ {
172
+ Assert . Equal ( new Angle ( ) + new Angle ( ) , new Angle ( ) ) ;
173
+ Assert . Equal ( Angle . Zero + Angle . FromRadians ( 0.5f ) , Angle . FromRadians ( 0.5f ) ) ;
174
+ Assert . Equal ( Angle . FromRadians ( 6 ) + Angle . FromRadians ( 0.5f ) , Angle . FromRadians ( 6.5f ) ) ;
175
+ Assert . Equal ( Angle . FromRadians ( 10 ) + Angle . FromRadians ( 0.5f ) , Angle . FromRadians ( 10.5f ) ) ;
176
+ Assert . Equal ( Angle . FromDegrees ( 360 ) + Angle . FromDegrees ( 360 ) , Angle . FromDegrees ( 720 ) ) ;
177
+ }
178
+
179
+ [ Fact ]
180
+ public void OperatorAddAssign ( )
181
+ {
182
+ var angle = Angle . FromDegrees ( - 15 ) ;
183
+ angle += Angle . FromDegrees ( 15 ) ;
184
+ Assert . Equal ( Angle . FromDegrees ( 0 ) . Degrees , angle . Degrees , Eps ) ;
185
+ angle += Angle . FromDegrees ( 10 ) ;
186
+ Assert . Equal ( Angle . FromDegrees ( 10 ) . Degrees , angle . Degrees , Eps ) ;
187
+ }
188
+
189
+ [ Fact ]
190
+ public void OperatorSub ( )
191
+ {
192
+ Assert . Equal ( new Angle ( ) - new Angle ( ) , new Angle ( ) ) ;
193
+ Assert . Equal ( Angle . FromRadians ( 1 ) - Angle . FromRadians ( 0.5f ) , Angle . FromRadians ( 0.5f ) ) ;
194
+ Assert . Equal ( Angle . Zero - Angle . FromRadians ( 0.5f ) , Angle . FromRadians ( - 0.5f ) ) ;
195
+ Assert . Equal ( Angle . FromDegrees ( 900 ) - Angle . FromDegrees ( 1 ) , Angle . FromDegrees ( 899 ) ) ;
196
+ }
197
+
198
+ [ Fact ]
199
+ public void OperatorSubAssign ( )
200
+ {
201
+ var angle = Angle . FromDegrees ( 15 ) ;
202
+ angle -= Angle . FromDegrees ( 15 ) ;
203
+ Assert . Equal ( Angle . FromDegrees ( 0 ) . Degrees , angle . Degrees , Eps ) ;
204
+ angle -= Angle . FromDegrees ( 10 ) ;
205
+ Assert . Equal ( Angle . FromDegrees ( - 10 ) . Degrees , angle . Degrees , Eps ) ;
206
+ }
207
+
208
+ [ Fact ]
209
+ public void OperatorMul ( )
210
+ {
211
+ Assert . Equal ( 10 * Angle . FromRadians ( 0 ) , Angle . Zero ) ;
212
+ Assert . Equal ( ( 2.5f * Angle . FromDegrees ( 10 ) ) . Degrees , Angle . FromDegrees ( 25 ) . Degrees , Eps ) ;
213
+ Assert . Equal ( ( 10f * Angle . FromDegrees ( 100 ) ) . Degrees , Angle . FromDegrees ( 1000 ) . Degrees , Eps ) ;
214
+
215
+ Assert . Equal ( 10 * Angle . FromRadians ( 0 ) , Angle . Zero ) ;
216
+ Assert . Equal ( ( 2.5f * Angle . FromDegrees ( 10 ) ) . Degrees , Angle . FromDegrees ( 25 ) . Degrees , Eps ) ;
217
+ Assert . Equal ( ( 10f * Angle . FromDegrees ( 100 ) ) . Degrees , Angle . FromDegrees ( 1000 ) . Degrees , Eps ) ;
218
+ }
219
+
220
+ [ Fact ]
221
+ public void OperatorMulAssign ( )
222
+ {
223
+ var angle = Angle . FromDegrees ( 1 ) ;
224
+ angle *= 10 ;
225
+ Assert . Equal ( Angle . FromDegrees ( 10 ) . Degrees , angle . Degrees , Eps ) ;
226
+ }
227
+
228
+ [ Fact ]
229
+ public void OperatorDiv ( )
230
+ {
231
+ Assert . Equal ( Angle . Zero / 10 , Angle . Zero ) ;
232
+ Assert . Equal ( Angle . FromDegrees ( 10 ) / 2.5f , Angle . FromDegrees ( 4 ) ) ;
233
+ Assert . Equal ( Angle . FromRadians ( 12 ) / 3 , Angle . FromRadians ( 4 ) ) ;
234
+
235
+ Assert . Equal ( 0f , Angle . Zero / Angle . FromDegrees ( 1 ) ) ;
236
+ Assert . Equal ( 1f , Angle . FromDegrees ( 10 ) / Angle . FromDegrees ( 10 ) ) ;
237
+ Assert . Equal ( 5f , Angle . FromRadians ( 10 ) / Angle . FromRadians ( 2 ) , Eps ) ;
238
+ }
239
+
240
+ [ Fact ]
241
+ public void OperatorDivAssign ( )
242
+ {
243
+ var angle = Angle . FromDegrees ( 60 ) ;
244
+ angle /= 5 ;
245
+ Assert . Equal ( Angle . FromDegrees ( 12 ) . Degrees , angle . Degrees , Eps ) ;
246
+ }
247
+
248
+ [ Fact ]
249
+ public void OperatorMod ( )
250
+ {
251
+ Assert . Equal ( Angle . Zero % Angle . FromRadians ( 0.5f ) , Angle . Zero ) ;
252
+ Assert . Equal ( Angle . FromRadians ( 10 ) % Angle . FromRadians ( 1 ) , Angle . FromRadians ( 0 ) ) ;
253
+ Assert . Equal ( ( Angle . FromDegrees ( 90 ) % Angle . FromDegrees ( 30 ) ) . Degrees , Angle . FromDegrees ( 0 ) . Degrees , Eps ) ;
254
+ Assert . Equal ( ( Angle . FromDegrees ( 90 ) % Angle . FromDegrees ( 40 ) ) . Degrees , Angle . FromDegrees ( 10 ) . Degrees , Eps ) ;
255
+ Assert . Equal ( ( Angle . FromDegrees ( - 90 ) % Angle . FromDegrees ( 30 ) ) . Degrees , Angle . FromDegrees ( 0 ) . Degrees , Eps ) ;
256
+ Assert . Equal ( ( Angle . FromDegrees ( - 90 ) % Angle . FromDegrees ( 40 ) ) . Degrees , Angle . FromDegrees ( 30 ) . Degrees , Eps ) ;
257
+ }
258
+
259
+ [ Fact ]
260
+ public void OperatorModAssign ( )
261
+ {
262
+ var angle = Angle . FromDegrees ( 59 ) ;
263
+ angle %= Angle . FromDegrees ( 10 ) ;
264
+ Assert . Equal ( Angle . FromDegrees ( 9 ) . Degrees , angle . Degrees , Eps ) ;
265
+ }
266
+ }
0 commit comments