Util應用程式框架公共操作類(二):資料型別轉換公共操作類(原始碼篇)
阿新 • • 發佈:2018-12-27
1 using System;
2 using Microsoft.VisualStudio.TestTools.UnitTesting;
3
4 namespace Util.Tests {
5 /// <summary>
6 /// 型別轉換公共操作類測試
7 /// </summary>
8 [TestClass]
9 public class ConvTest {
10
11 #region ToInt(轉換為整型)
12
13 /// <summary>
14 ///轉換為整型,值為null
15 ///</summary>
16 [TestMethod]
17 public void TestToInt_Null() {
18 Assert.AreEqual( 0, Util.Conv.ToInt( null ) );
19 }
20
21 /// <summary>
22 ///轉換為整型,值為空字串
23 ///</summary>
24 [TestMethod]
25 public void TestToInt_Empty() {
26 Assert.AreEqual( 0, Util.Conv.ToInt( "" ) );
27 }
28
29 /// <summary>
30 ///轉換為整型,無效值
31 ///</summary>
32 [TestMethod]
33 public void TestToInt_Invalid() {
34 Assert.AreEqual( 0 , Util.Conv.ToInt( "1A" ) );
35 }
36
37 /// <summary>
38 ///轉換為整型,有效值
39 ///</summary>
40 [TestMethod]
41 public void TestToInt() {
42 Assert.AreEqual( 1, Util.Conv.ToInt( "1" ) );
43 Assert.AreEqual( 1778020, Util.Conv.ToInt( "1778019.7801684" ) );
44 }
45
46 #endregion
47
48 #region ToIntOrNull(轉換為可空整型)
49
50 /// <summary>
51 ///轉換為可空整型,值為null
52 ///</summary>
53 [TestMethod]
54 public void TestToIntOrNull_Null() {
55 Assert.IsNull( Util.Conv.ToIntOrNull( null ) );
56 }
57
58 /// <summary>
59 ///轉換為可空整型,值為空字串
60 ///</summary>
61 [TestMethod]
62 public void TestToIntOrNull_Empty() {
63 Assert.IsNull( Util.Conv.ToIntOrNull( "" ) );
64 }
65
66 /// <summary>
67 ///轉換為可空整型,無效值
68 ///</summary>
69 [TestMethod]
70 public void TestToIntOrNull_Invalid() {
71 Assert.IsNull( Util.Conv.ToIntOrNull( "1A" ) );
72 }
73
74 /// <summary>
75 ///轉換為可空整型,值為0
76 ///</summary>
77 [TestMethod]
78 public void TestToIntOrNull_0() {
79 Assert.AreEqual( 0, Util.Conv.ToIntOrNull( "0" ) );
80 }
81
82 /// <summary>
83 ///轉換為可空整型,有效值
84 ///</summary>
85 [TestMethod]
86 public void TestToIntOrNull() {
87 Assert.AreEqual( 1, Util.Conv.ToIntOrNull( "1" ) );
88 }
89
90 #endregion
91
92 #region ToDouble(轉換為雙精度浮點數)
93
94 /// <summary>
95 ///轉換為雙精度浮點數,值為null
96 ///</summary>
97 [TestMethod]
98 public void TestToDouble_Null() {
99 Assert.AreEqual( 0, Util.Conv.ToDouble( null ) );
100 }
101
102 /// <summary>
103 ///轉換為雙精度浮點數,值為空字串
104 ///</summary>
105 [TestMethod]
106 public void TestToDouble_Empty() {
107 Assert.AreEqual( 0, Util.Conv.ToDouble( "" ) );
108 }
109
110 /// <summary>
111 ///轉換為雙精度浮點數,無效值
112 ///</summary>
113 [TestMethod]
114 public void TestToDouble_Invalid() {
115 Assert.AreEqual( 0, Util.Conv.ToDouble( "1A" ) );
116 }
117
118 /// <summary>
119 ///轉換為雙精度浮點數,有效值
120 ///</summary>
121 [TestMethod]
122 public void TestToDouble() {
123 Assert.AreEqual( 1.2, Util.Conv.ToDouble( "1.2" ) );
124 }
125
126 /// <summary>
127 /// 轉換為雙精度浮點數,指定2位小數位數
128 ///</summary>
129 [TestMethod()]
130 public void TestToDouble_DigitsIs2() {
131 Assert.AreEqual( 12.36, Util.Conv.ToDouble( "12.355", 2 ) );
132 }
133
134 #endregion
135
136 #region ToDoubleOrNull(轉換為可空雙精度浮點數)
137
138 /// <summary>
139 ///轉換為可空雙精度浮點數,值為null
140 ///</summary>
141 [TestMethod]
142 public void TestToDoubleOrNull_Null() {
143 Assert.IsNull( Util.Conv.ToDoubleOrNull( null ) );
144 }
145
146 /// <summary>
147 ///轉換為可空雙精度浮點數,值為空字串
148 ///</summary>
149 [TestMethod]
150 public void TestToDoubleOrNull_Empty() {
151 Assert.IsNull( Util.Conv.ToDoubleOrNull( "" ) );
152 }
153
154 /// <summary>
155 ///轉換為可空雙精度浮點數,無效值
156 ///</summary>
157 [TestMethod]
158 public void TestToDoubleOrNull_Invalid() {
159 Assert.IsNull( Util.Conv.ToDoubleOrNull( "1A" ) );
160 }
161
162 /// <summary>
163 ///轉換為可空雙精度浮點數,值為0
164 ///</summary>
165 [TestMethod]
166 public void TestToDoubleOrNull_0() {
167 Assert.AreEqual( 0, Util.Conv.ToDoubleOrNull( "0" ) );
168 }
169
170 /// <summary>
171 ///轉換為可空雙精度浮點數,有效值
172 ///</summary>
173 [TestMethod]
174 public void TestToDoubleOrNull() {
175 Assert.AreEqual( 1.2, Util.Conv.ToDoubleOrNull( "1.2" ) );
176 }
177
178 #endregion
179
180 #region ToDecimal(轉換為高精度浮點數)
181
182 /// <summary>
183 ///轉換為高精度浮點數,值為null
184 ///</summary>
185 [TestMethod]
186 public void TestToDecimal_Null() {
187 Assert.AreEqual( 0, Util.Conv.ToDecimal( null ) );
188 }
189
190 /// <summary>
191 ///轉換為高精度浮點數,值為空字串
192 ///</summary>
193 [TestMethod]
194 public void TestToDecimal_Empty() {
195 Assert.AreEqual( 0, Util.Conv.ToDecimal( "" ) );
196 }
197
198 /// <summary>
199 ///轉換為高精度浮點數,無效值
200 ///</summary>
201 [TestMethod]
202 public void TestToDecimal_Invalid() {
203 Assert.AreEqual( 0, Util.Conv.ToDecimal( "1A" ) );
204 }
205
206 /// <summary>
207 ///轉換為高精度浮點數,有效值
208 ///</summary>
209 [TestMethod]
210 public void TestToDecimal() {
211 Assert.AreEqual( 1.2M, Util.Conv.ToDecimal( "1.2" ) );
212 }
213
214 /// <summary>
215 /// 轉換為高精度浮點數,指定2位小數位數
216 ///</summary>
217 [TestMethod()]
218 public void TestToDecimal_DigitsIs2() {
219 Assert.AreEqual( 12.24M, Util.Conv.ToDecimal( "12.235", 2 ) );
220 }
221
222 #endregion
223
224 #region ToDecimalOrNull(轉換為可空高精度浮點數)
225
226 /// <summary>
227 ///轉換為可空高精度浮點數,值為null
228 ///</summary>
229 [TestMethod]
230 public void TestToDecimalOrNull_Null() {
231 Assert.IsNull( Util.Conv.ToDecimalOrNull( null ) );
232 }
233
234 /// <summary>
235 ///轉換為可空高精度浮點數,值為空字串
236 ///</summary>
237 [TestMethod]
238 public void TestToDecimalOrNull_Empty() {
239 Assert.IsNull( Util.Conv.ToDecimalOrNull( "" ) );
240 }
241
242 /// <summary>
243 ///轉換為可空高精度浮點數,無效值
244 ///</summary>
245 [TestMethod]
246 public void TestToDecimalOrNull_Invalid() {
247 Assert.IsNull( Util.Conv.ToDecimalOrNull( "1A" ) );
248 }
249
250 /// <summary>
251 ///轉換為可空高精度浮點數,無效值,指定2位小數位數
252 ///</summary>
253 [TestMethod]
254 public void TestToDecimalOrNull_Invalid_DigitsIs2() {
255 Assert.IsNull( Util.Conv.ToDecimalOrNull( "1A", 2 ) );
256 }
257
258 /// <summary>
259 ///轉換為可空高精度浮點數,值為0
260 ///</summary>
261 [TestMethod]
262 public void TestToDecimalOrNull_0() {
263 Assert.AreEqual( 0, Util.Conv.ToDecimalOrNull( "0" ) );
264 }
265
266 /// <summary>
267 ///轉換為可空高精度浮點數,有效值
268 ///</summary>
269 [TestMethod]
270 public void TestToDecimalOrNull() {
271 Assert.AreEqual( 1.2M, Util.Conv.ToDecimalOrNull( "1.2" ) );
272 }
273
274 /// <summary>
275 /// 轉換為可空高精度浮點數,指定2位小數位數
276 ///</summary>
277 [TestMethod()]
278 public void ToDecimalOrNull_DigitsIs2() {
279 Assert.AreEqual( 12.24M, Util.Conv.ToDecimalOrNull( "12.235", 2 ) );
280 }
281
282 #endregion
283
284 #region ToGuid(轉換為Guid)
285
286 /// <summary>
287 ///轉換為Guid,值為null
288 ///</summary>
289 [TestMethod]
290 public void TestToGuid_Null() {
291 Assert.AreEqual( Guid.Empty, Util.Conv.ToGuid( null ) );
292 }
293
294 /// <summary>
295 ///轉換為Guid,值為空字串
296 ///</summary>
297 [TestMethod]
298 public void TestToGuid_Empty() {
299 Assert.AreEqual( Guid.Empty, Util.Conv.ToGuid( "" ) );
300 }
301
302 /// <summary>
303 ///轉換為Guid,無效值
304 ///</summary>
305 [TestMethod]
306 public void TestToGuid_Invalid() {
307 Assert.AreEqual( Guid.Empty, Util.Conv.ToGuid( "1A" ) );
308 }
309
310 /// <summary>
311 ///轉換為Guid,有效值
312 ///</summary>
313 [TestMethod]
314 public void TestToGuid() {
315 Assert.AreEqual( new Guid( "B9EB56E9-B720-40B4-9425-00483D311DDC" ), Util.Conv.ToGuid( "B9EB56E9-B720-40B4-9425-00483D311DDC" ) );
316 }
317
318 #endregion
319
320 #region ToGuidOrNull(轉換為可空Guid)
321
322 /// <summary>
323 ///轉換為可空Guid,值為null
324 ///</summary>
325 [TestMethod]
326 public void TestToGuidOrNull_Null() {
327 Assert.IsNull( Util.Conv.ToGuidOrNull( null ) );
328 }
329
330 /// <summary>
331 ///轉換為可空Guid,值為空字串
332 ///</summary>
333 [TestMethod]
334 public void TestToGuidOrNull_Empty() {
335 Assert.IsNull( Util.Conv.ToGuidOrNull( "" ) );
336 }
337
338 /// <summary>
339 ///轉換為可空Guid,無效值
340 ///</summary>
341 [TestMethod]
342 public void TestToGuidOrNull_Invalid() {
343 Assert.IsNull( Util.Conv.ToGuidOrNull( "1A" ) );
344 }
345
346 /// <summary>
347 ///轉換為可空Guid,有效值
348 ///</summary>
349 [TestMethod]
350 public void TestToGuidOrNull() {
351 Assert.AreEqual( new Guid( "B9EB56E9-B720-40B4-9425-00483D311DDC" ), Util.Conv.ToGuidOrNull( "B9EB56E9-B720-40B4-9425-00483D311DDC" ) );
352 }
353
354 #endregion
355
356 #region ToGuidList(轉換為Guid集合)
357
358 /// <summary>
359 /// 轉換為Guid集合,驗證空字串
360 /// </summary>
361 [TestMethod]
362 public void TestToGuidList_Empty() {
363 Assert.AreEqual( 0, Util.Conv.ToGuidList( "" ).Count );
364 }
365
366 /// <summary>
367 /// 轉換為Guid集合,驗證最後為逗號
368 /// </summary>
369 [TestMethod]
370 public void TestToGuidList_LastIsComma() {
371 Assert.AreEqual( 1, Util.Conv.ToGuidList( "83B0233C-A24F-49FD-8083-1337209EBC9A," ).Count );
372 }
373
374 /// <summary>
375 /// 轉換為Guid集合,驗證中間包含逗號
376 /// </summary>
377 [TestMethod]
378 public void TestToGuidList_MiddleIsComma() {
379 const string guid = "83B0233C-A24F-49FD-8083-1337209EBC9A,,EAB523C6-2FE7-47BE-89D5-C6D440C3033A,";
380 Assert.AreEqual( 2, Util.Conv.ToGuidList( guid ).Count );
381 Assert.AreEqual( new Guid( "83B0233C-A24F-49FD-8083-1337209EBC9A" ), Util.Conv.ToGuidList( guid )[0] );
382 Assert.AreEqual( new Guid( "EAB523C6-2FE7-47BE-89D5-C6D440C3033A" ), Util.Conv.ToGuidList( guid )[1] );
383 }
384
385 /// <summary>
386 /// 轉換為Guid集合,僅1個Guid
387 /// </summary>
388 [TestMethod]
389 public void TestToGuidList_1Guid() {
390 const string guid = "83B0233C-A24F-49FD-8083-1337209EBC9A";
391 Assert.AreEqual( 1, Util.Conv.ToGuidList( guid ).Count );
392 Assert.AreEqual( new Guid( guid ), Util.Conv.ToGuidList( guid )[0] );
393 }
394
395 /// <summary>
396 /// 轉換為Guid集合,2個Guid
397 /// </summary>
398 [TestMethod]
399 public void TestToGuidList_2Guid() {
400 const string guid = "83B0233C-A24F-49FD-8083-1337209EBC9A,EAB523C6-2FE7-47BE-89D5-C6D440C3033A";
401 Assert.AreEqual( 2, Util.Conv.ToGuidList( guid ).Count );
402 Assert.AreEqual( new Guid( "83B0233C-A24F-49FD-8083-1337209EBC9A" ), Util.Conv.ToGuidList( guid )[0] );
403 Assert.AreEqual( new Guid( "EAB523C6-2FE7-47BE-89D5-C6D440C3033A" ), Util.Conv.ToGuidList( guid )[1] );
404 }
405
406 #endregion
407
408 #region ToDate(轉換為日期)
409
410 /// <summary>
411 ///轉換為日期,值為null
412 ///</summary>
413 [TestMethod]
414 public void TestToDate_Null() {
415 Assert.AreEqual( DateTime.MinValue, Util.Conv.ToDate( null ) );
416 }
417
418 /// <summary>
419 ///轉換為日期,值為空字串
420 ///</summary>
421 [TestMethod]
422 public void TestToDate_Empty() {
423 Assert.AreEqual( DateTime.MinValue, Util.Conv.ToDate( "" ) );
424 }
425
426 /// <summary>
427 ///轉換為日期,無效值
428 ///</summary>
429 [TestMethod]
430 public void TestToDate_Invalid() {
431 Assert.AreEqual( DateTime.MinValue, Util.Conv.ToDate( "1A" ) );
432 }
433
434 /// <summary>
435 ///轉換為日期,有效值
436 ///</summary>
437 [TestMethod]
438 public void TestToDate() {
439 Assert.AreEqual( new DateTime( 2000, 1, 1 ), Util.Conv.ToDate( "2000-1-1" ) );
440 }
441
442 #endregion
443
444 #region ToDateOrNull(轉換為可空日期)
445
446 /// <summary>
447 ///轉換為可空日期,值為null
448 ///</summary>
449 [TestMethod]
450 public void TestToDateOrNull_Null() {
451 Assert.IsNull( Util.Conv.ToDateOrNull( null ) );
452 }
453
454 /// <summary>
455 ///轉換為可空日期,值為空字串
456 ///</summary>
457 [TestMethod]
458 public void TestToDateOrNull_Empty() {
459 Assert.IsNull( Util.Conv.ToDateOrNull( "" ) );
460 }
461
462 /// <summary>
463 ///轉換為可空日期,無效值
464 ///</summary>
465 [TestMethod]
466 public void TestToDateOrNull_Invalid() {
467 Assert.IsNull( Util.Conv.ToDateOrNull( "1A" ) );
468