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 . VisualStudio . TestTools . UnitTesting ;
6
+ using System ;
7
+ using Microsoft . Toolkit . Uwp . UI ;
8
+ using System . Numerics ;
9
+ using System . Globalization ;
10
+
11
+ namespace UnitTests . Extensions
12
+ {
13
+ [ TestClass ]
14
+ public class Test_StringExtensions
15
+ {
16
+ [ TestCategory ( "StringExtensions" ) ]
17
+ [ TestMethod ]
18
+ [ DataRow ( 0f ) ]
19
+ [ DataRow ( 3.14f ) ]
20
+ public void Test_StringExtensions_ToVector2_XX ( float x )
21
+ {
22
+ string text = x . ToString ( "R" , CultureInfo . InvariantCulture ) ;
23
+
24
+ Vector2
25
+ expected = new ( x ) ,
26
+ result = text . ToVector2 ( ) ;
27
+
28
+ Assert . AreEqual ( expected , result ) ;
29
+
30
+ result = $ "<{ text } >". ToVector2 ( ) ;
31
+
32
+ Assert . AreEqual ( expected , result ) ;
33
+ }
34
+
35
+ [ TestCategory ( "StringExtensions" ) ]
36
+ [ TestMethod ]
37
+ [ DataRow ( 0f , 0f ) ]
38
+ [ DataRow ( 0f , 22f ) ]
39
+ [ DataRow ( 3.14f , 3.24724928f ) ]
40
+ [ DataRow ( float . MaxValue / 2 , 0.3248f ) ]
41
+ public void Test_StringExtensions_ToVector2_XYZW ( float x , float y )
42
+ {
43
+ string text = $ "{ x . ToString ( "R" , CultureInfo . InvariantCulture ) } ,{ y . ToString ( "R" , CultureInfo . InvariantCulture ) } ";
44
+
45
+ Vector2
46
+ expected = new ( x , y ) ,
47
+ result = text . ToVector2 ( ) ;
48
+
49
+ Assert . AreEqual ( expected , result ) ;
50
+
51
+ result = text . Replace ( "," , ", " ) . ToVector2 ( ) ;
52
+
53
+ Assert . AreEqual ( expected , result ) ;
54
+
55
+ result = $ "<{ text } >". ToVector2 ( ) ;
56
+
57
+ Assert . AreEqual ( expected , result ) ;
58
+ }
59
+
60
+ [ TestCategory ( "StringExtensions" ) ]
61
+ [ TestMethod ]
62
+ [ DataRow ( "" ) ]
63
+ [ DataRow ( "Hello" ) ]
64
+ [ DataRow ( "1, 2, 3" ) ]
65
+ [ DataRow ( "<1, 2, 3" ) ]
66
+ [ DataRow ( "<1, 2, 3>" ) ]
67
+ [ DataRow ( "<1, 2, 3, 4>" ) ]
68
+ [ ExpectedException ( typeof ( FormatException ) ) ]
69
+ public void Test_StringExtensions_ToVector2_Fail ( string text )
70
+ {
71
+ _ = text . ToVector2 ( ) ;
72
+ }
73
+
74
+ [ TestCategory ( "StringExtensions" ) ]
75
+ [ TestMethod ]
76
+ [ DataRow ( 0f ) ]
77
+ [ DataRow ( 3.14f ) ]
78
+ public void Test_StringExtensions_ToVector3_XXX ( float x )
79
+ {
80
+ string text = x . ToString ( "R" , CultureInfo . InvariantCulture ) ;
81
+
82
+ Vector3
83
+ expected = new ( x ) ,
84
+ result = text . ToVector3 ( ) ;
85
+
86
+ Assert . AreEqual ( expected , result ) ;
87
+
88
+ result = $ "<{ text } >". ToVector3 ( ) ;
89
+
90
+ Assert . AreEqual ( expected , result ) ;
91
+ }
92
+
93
+ [ TestCategory ( "StringExtensions" ) ]
94
+ [ TestMethod ]
95
+ [ DataRow ( 0f , 0f , 0f ) ]
96
+ [ DataRow ( 0f , 0f , 22f ) ]
97
+ [ DataRow ( 3.14f , 6.55f , 3.24724928f ) ]
98
+ [ DataRow ( float . MaxValue / 2 , 22f , 0.3248f ) ]
99
+ public void Test_StringExtensions_ToVector3_XYZW ( float x , float y , float z )
100
+ {
101
+ string text = $ "{ x . ToString ( "R" , CultureInfo . InvariantCulture ) } ,{ y . ToString ( "R" , CultureInfo . InvariantCulture ) } ,{ z . ToString ( "R" , CultureInfo . InvariantCulture ) } ";
102
+
103
+ Vector3
104
+ expected = new ( x , y , z ) ,
105
+ result = text . ToVector3 ( ) ;
106
+
107
+ Assert . AreEqual ( expected , result ) ;
108
+
109
+ result = text . Replace ( "," , ", " ) . ToVector3 ( ) ;
110
+
111
+ Assert . AreEqual ( expected , result ) ;
112
+
113
+ result = $ "<{ text } >". ToVector3 ( ) ;
114
+
115
+ Assert . AreEqual ( expected , result ) ;
116
+ }
117
+
118
+ [ TestCategory ( "StringExtensions" ) ]
119
+ [ TestMethod ]
120
+ [ DataRow ( "" ) ]
121
+ [ DataRow ( "Hello" ) ]
122
+ [ DataRow ( "1, 2" ) ]
123
+ [ DataRow ( "1, 2, 3, 99" ) ]
124
+ [ DataRow ( "<1, 2>" ) ]
125
+ [ DataRow ( "<1, 2, 3" ) ]
126
+ [ DataRow ( "<1, 2, 3, 4>" ) ]
127
+ [ ExpectedException ( typeof ( FormatException ) ) ]
128
+ public void Test_StringExtensions_ToVector3_Fail ( string text )
129
+ {
130
+ _ = text . ToVector3 ( ) ;
131
+ }
132
+
133
+ [ TestCategory ( "StringExtensions" ) ]
134
+ [ TestMethod ]
135
+ [ DataRow ( 0f ) ]
136
+ [ DataRow ( 3.14f ) ]
137
+ public void Test_StringExtensions_ToVector4_XXXX ( float x )
138
+ {
139
+ string text = x . ToString ( "R" , CultureInfo . InvariantCulture ) ;
140
+
141
+ Vector4
142
+ expected = new ( x ) ,
143
+ result = text . ToVector4 ( ) ;
144
+
145
+ Assert . AreEqual ( expected , result ) ;
146
+
147
+ result = $ "<{ text } >". ToVector4 ( ) ;
148
+
149
+ Assert . AreEqual ( expected , result ) ;
150
+ }
151
+
152
+ [ TestCategory ( "StringExtensions" ) ]
153
+ [ TestMethod ]
154
+ [ DataRow ( 0f , 0f , 0f , 0f ) ]
155
+ [ DataRow ( 0f , 0f , 22f , 6.89f ) ]
156
+ [ DataRow ( 3.14f , 6.55f , 3838f , 3.24724928f ) ]
157
+ [ DataRow ( float . MaxValue / 2 , float . Epsilon , 22f , 0.3248f ) ]
158
+ public void Test_StringExtensions_ToVector4_XYZW ( float x , float y , float z , float w )
159
+ {
160
+ string text = $ "{ x . ToString ( "R" , CultureInfo . InvariantCulture ) } ,{ y . ToString ( "R" , CultureInfo . InvariantCulture ) } ,{ z . ToString ( "R" , CultureInfo . InvariantCulture ) } ,{ w . ToString ( "R" , CultureInfo . InvariantCulture ) } ";
161
+
162
+ Vector4
163
+ expected = new ( x , y , z , w ) ,
164
+ result = text . ToVector4 ( ) ;
165
+
166
+ // Test the "1,2,3,4" format
167
+ Assert . AreEqual ( expected , result ) ;
168
+
169
+ result = text . Replace ( "," , ", " ) . ToVector4 ( ) ;
170
+
171
+ // Test the "1, 2, 3, 4" format
172
+ Assert . AreEqual ( expected , result ) ;
173
+
174
+ // Test the "<1, 2, 3, 4>" format
175
+ result = $ "<{ text } >". ToVector4 ( ) ;
176
+
177
+ Assert . AreEqual ( expected , result ) ;
178
+ }
179
+
180
+ [ TestCategory ( "StringExtensions" ) ]
181
+ [ TestMethod ]
182
+ [ DataRow ( "" ) ]
183
+ [ DataRow ( "Hello" ) ]
184
+ [ DataRow ( "1, 2" ) ]
185
+ [ DataRow ( "1, 2, 3" ) ]
186
+ [ DataRow ( "1, 2, 3, 99, 100" ) ]
187
+ [ DataRow ( "<1, 2, 3>" ) ]
188
+ [ DataRow ( "<1, 2, 3, 4" ) ]
189
+ [ DataRow ( "<1, 2, 3, 4, 5>" ) ]
190
+ [ ExpectedException ( typeof ( FormatException ) ) ]
191
+ public void Test_StringExtensions_ToVector4_Fail ( string text )
192
+ {
193
+ _ = text . ToVector4 ( ) ;
194
+ }
195
+
196
+ [ TestCategory ( "StringExtensions" ) ]
197
+ [ TestMethod ]
198
+ [ DataRow ( 0f , 0f , 0f , 0f ) ]
199
+ [ DataRow ( 0f , 0f , 22f , 6.89f ) ]
200
+ [ DataRow ( 3.14f , 6.55f , 3838f , 3.24724928f ) ]
201
+ [ DataRow ( float . MaxValue / 2 , float . Epsilon , 22f , 0.3248f ) ]
202
+ public void Test_StringExtensions_ToQuaternion_XYZW ( float x , float y , float z , float w )
203
+ {
204
+ string text = $ "{ x . ToString ( "R" , CultureInfo . InvariantCulture ) } ,{ y . ToString ( "R" , CultureInfo . InvariantCulture ) } ,{ z . ToString ( "R" , CultureInfo . InvariantCulture ) } ,{ w . ToString ( "R" , CultureInfo . InvariantCulture ) } ";
205
+
206
+ Quaternion
207
+ expected = new ( x , y , z , w ) ,
208
+ result = text . ToQuaternion ( ) ;
209
+
210
+ // Test the "1,2,3,4" format
211
+ Assert . AreEqual ( expected , result ) ;
212
+
213
+ result = text . Replace ( "," , ", " ) . ToQuaternion ( ) ;
214
+
215
+ // Test the "1, 2, 3, 4" format
216
+ Assert . AreEqual ( expected , result ) ;
217
+
218
+ // Test the "<1, 2, 3, 4>" format
219
+ result = $ "<{ text } >". ToQuaternion ( ) ;
220
+
221
+ Assert . AreEqual ( expected , result ) ;
222
+ }
223
+
224
+ [ TestCategory ( "StringExtensions" ) ]
225
+ [ TestMethod ]
226
+ [ DataRow ( "" ) ]
227
+ [ DataRow ( "Hello" ) ]
228
+ [ DataRow ( "1, 2" ) ]
229
+ [ DataRow ( "1, 2, 3" ) ]
230
+ [ DataRow ( "1, 2, 3, 99, 100" ) ]
231
+ [ DataRow ( "<1, 2, 3>" ) ]
232
+ [ DataRow ( "<1, 2, 3, 4" ) ]
233
+ [ DataRow ( "<1, 2, 3, 4, 5>" ) ]
234
+ [ ExpectedException ( typeof ( FormatException ) ) ]
235
+ public void Test_StringExtensions_ToQuaternion_Fail ( string text )
236
+ {
237
+ _ = text . ToQuaternion ( ) ;
238
+ }
239
+ }
240
+ }
0 commit comments