1. 程式人生 > >Util應用程式框架公共操作類(二):資料型別轉換公共操作類(原始碼篇)

Util應用程式框架公共操作類(二):資料型別轉換公共操作類(原始碼篇)

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