@@ -1340,5 +1340,87 @@ public void Can_convert_between_KVP_ints_and_IEnumerable()
1340
1340
object [ ] arrayObjs = kvps . Cast < object > ( ) . ToArray ( ) ;
1341
1341
Assert . That ( arrayObjs . ConvertTo < List < KeyValuePair < string , object > > > ( ) , Is . EquivalentTo ( arrayObjs ) ) ;
1342
1342
}
1343
+
1344
+ public enum TestEnum { A , B , C }
1345
+
1346
+ [ Test ]
1347
+ public void Can_convert_between_list_of_value_types ( )
1348
+ {
1349
+ var enumArrays = new [ ] { TestEnum . A , TestEnum . B , TestEnum . C } ;
1350
+ var strArrays = new List < string > { "A" , "B" , "C" } ;
1351
+ Assert . That ( enumArrays . ConvertTo < List < TestEnum > > ( ) , Is . EquivalentTo ( enumArrays . ToList ( ) ) ) ;
1352
+ Assert . That ( enumArrays . ConvertTo < List < string > > ( ) , Is . EquivalentTo ( strArrays ) ) ;
1353
+
1354
+ var strNums = new List < string > { "1" , "2" , "3" } ;
1355
+ var intNums = new List < int > { 1 , 2 , 3 } ;
1356
+ Assert . That ( strNums . ConvertTo < List < int > > ( ) , Is . EquivalentTo ( intNums ) ) ;
1357
+ Assert . That ( intNums . ConvertTo < List < string > > ( ) , Is . EquivalentTo ( strNums ) ) ;
1358
+ }
1359
+
1360
+ public class TestClassA
1361
+ {
1362
+ public IList < string > IListStrings { get ; set ; }
1363
+ public ArrayOfString ListStrings { get ; set ; }
1364
+ public IList < TestEnum > ListEnums { get ; set ; }
1365
+ }
1366
+ public class TestClassB
1367
+ {
1368
+ public ArrayOfString IListStrings { get ; set ; }
1369
+ public IList < string > ListStrings { get ; set ; }
1370
+ public ArrayOfString ListEnums { get ; set ; }
1371
+ }
1372
+ public class TestClassC
1373
+ {
1374
+ public IList < string > ListStrings { get ; protected set ; }
1375
+ }
1376
+
1377
+ [ Test ]
1378
+ public void Can_translate_generic_lists ( )
1379
+ {
1380
+
1381
+ var values = new [ ] { "A" , "B" , "C" } ;
1382
+ var testA = new TestClassA
1383
+ {
1384
+ IListStrings = new List < string > ( values ) ,
1385
+ ListStrings = new ArrayOfString ( values ) ,
1386
+ ListEnums = new List < TestEnum > { TestEnum . A , TestEnum . B , TestEnum . C } ,
1387
+ } ;
1388
+
1389
+ var fromTestA = testA . ConvertTo < TestClassB > ( ) ;
1390
+
1391
+ AssertAreEqual ( testA , fromTestA ) ;
1392
+
1393
+ var userFileTypeValues = testA . ListEnums . Map ( x => x . ToString ( ) ) ;
1394
+ var testB = new TestClassB
1395
+ {
1396
+ IListStrings = new ArrayOfString ( values ) ,
1397
+ ListStrings = new List < string > ( values ) ,
1398
+ ListEnums = new ArrayOfString ( userFileTypeValues ) ,
1399
+ } ;
1400
+
1401
+ var fromTestB = testB . ConvertTo < TestClassA > ( ) ;
1402
+ AssertAreEqual ( fromTestB , testB ) ;
1403
+ }
1404
+
1405
+ private static void AssertAreEqual ( TestClassA testA , TestClassB testB )
1406
+ {
1407
+ Assert . That ( testA , Is . Not . Null ) ;
1408
+ Assert . That ( testB , Is . Not . Null ) ;
1409
+
1410
+ Assert . That ( testA . IListStrings , Is . Not . Null ) ;
1411
+ Assert . That ( testB . IListStrings , Is . Not . Null ) ;
1412
+ Assert . That ( testA . IListStrings ,
1413
+ Is . EquivalentTo ( new List < string > ( testB . IListStrings ) ) ) ;
1414
+
1415
+ Assert . That ( testA . ListStrings , Is . Not . Null ) ;
1416
+ Assert . That ( testB . ListStrings , Is . Not . Null ) ;
1417
+ Assert . That ( testA . ListStrings , Is . EquivalentTo ( testB . ListStrings ) ) ;
1418
+
1419
+ Assert . That ( testA . ListEnums , Is . Not . Null ) ;
1420
+ Assert . That ( testB . ListEnums , Is . Not . Null ) ;
1421
+ Assert . That ( testA . ListEnums ,
1422
+ Is . EquivalentTo ( testB . ListEnums . ConvertAll ( x => x . ToEnum < TestEnum > ( ) ) ) ) ;
1423
+ }
1424
+
1343
1425
}
1344
1426
}
0 commit comments