@ -21,20 +21,21 @@ using System.Collections.Generic;
@@ -21,20 +21,21 @@ using System.Collections.Generic;
public class InitializerTests
{
enum MyEnum
private enum MyEnum
{
a ,
b
}
enum MyEnum2
private enum MyEnum2
{
c ,
d
}
class Data
private class Data
{
public List < InitializerTests . MyEnum2 > FieldList = new List < InitializerTests . MyEnum2 > ( ) ;
public InitializerTests . MyEnum a
{
get ;
@ -45,218 +46,414 @@ public class InitializerTests
@@ -45,218 +46,414 @@ public class InitializerTests
get ;
set ;
}
public List < InitializerTests . MyEnum2 > FieldList = new List < InitializerTests . MyEnum2 > ( ) ;
public InitializerTests . Data MoreData { get ; set ; }
public InitializerTests . Data MoreData
{
get ;
set ;
}
}
// Helper methods used to ensure initializers used within expressions work correctly
static void X ( object a , object b )
private static void X ( object a , object b )
{
}
static object Y ( )
private static object Y ( )
{
return null ;
}
#region Array Initializers
public static void Array1 ( )
{
X ( Y ( ) , new int [ ] { 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 1 0 } ) ;
InitializerTests . X ( InitializerTests . Y ( ) , new int [ ]
{
1 ,
2 ,
3 ,
4 ,
5 ,
6 ,
7 ,
8 ,
9 ,
1 0
} ) ;
}
public static void Array2 ( int a , int b , int c )
{
X ( Y ( ) , new int [ ] { a , 0 , b , 0 , c } ) ;
InitializerTests . X ( InitializerTests . Y ( ) , new int [ ]
{
a ,
0 ,
b ,
0 ,
c
} ) ;
}
public static void NestedArray ( int a , int b , int c )
{
X ( Y ( ) , new int [ ] [ ] {
new int [ ] { 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 1 0 } ,
new int [ ] { a , b , c } ,
new int [ ] { 1 , 2 , 3 , 4 , 5 , 6 }
InitializerTests . X ( InitializerTests . Y ( ) , new int [ ] [ ]
{
new int [ ]
{
1 ,
2 ,
3 ,
4 ,
5 ,
6 ,
7 ,
8 ,
9 ,
1 0
} ,
new int [ ]
{
a ,
b ,
c
} ,
new int [ ]
{
1 ,
2 ,
3 ,
4 ,
5 ,
6
}
} ) ;
}
public static void ArrayBoolean ( )
{
X ( Y ( ) , new bool [ ] { true , false , true , false , false , false , true , true } ) ;
InitializerTests . X ( InitializerTests . Y ( ) , new bool [ ]
{
true ,
false ,
true ,
false ,
false ,
false ,
true ,
true
} ) ;
}
public static void ArrayByte ( )
{
X ( Y ( ) , new byte [ ] { 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 2 5 4 , 2 5 5 } ) ;
InitializerTests . X ( InitializerTests . Y ( ) , new byte [ ]
{
1 ,
2 ,
3 ,
4 ,
5 ,
6 ,
7 ,
8 ,
2 5 4 ,
2 5 5
} ) ;
}
public static void ArraySByte ( )
{
X ( Y ( ) , new sbyte [ ] { - 1 2 8 , - 1 2 7 , 0 , 1 , 2 , 3 , 4 , 1 2 7 } ) ;
InitializerTests . X ( InitializerTests . Y ( ) , new sbyte [ ]
{
- 1 2 8 ,
- 1 2 7 ,
0 ,
1 ,
2 ,
3 ,
4 ,
1 2 7
} ) ;
}
public static void ArrayShort ( )
{
X ( Y ( ) , new short [ ] { - 3 2 7 6 8 , - 1 , 0 , 1 , 3 2 7 6 7 } ) ;
InitializerTests . X ( InitializerTests . Y ( ) , new short [ ]
{
- 3 2 7 6 8 ,
- 1 ,
0 ,
1 ,
3 2 7 6 7
} ) ;
}
public static void ArrayUShort ( )
{
X ( Y ( ) , new ushort [ ] { 0 , 1 , 3 2 7 6 7 , 3 2 7 6 8 , 6 5 5 3 4 , 6 5 5 3 5 } ) ;
InitializerTests . X ( InitializerTests . Y ( ) , new ushort [ ]
{
0 ,
1 ,
3 2 7 6 7 ,
3 2 7 6 8 ,
6 5 5 3 4 ,
6 5 5 3 5
} ) ;
}
public static void ArrayInt ( )
{
X ( Y ( ) , new int [ ] { 1 , - 2 , 2 0 0 0 0 0 0 0 0 0 , 4 , 5 , - 6 , 7 , 8 , 9 , 1 0 } ) ;
InitializerTests . X ( InitializerTests . Y ( ) , new int [ ]
{
1 ,
- 2 ,
2 0 0 0 0 0 0 0 0 0 ,
4 ,
5 ,
- 6 ,
7 ,
8 ,
9 ,
1 0
} ) ;
}
public static void ArrayUInt ( )
{
X ( Y ( ) , new uint [ ] { 1 , 2 0 0 0 0 0 0 0 0 0 , 3 0 0 0 0 0 0 0 0 0 , 4 , 5 , 6 , 7 , 8 , 9 , 1 0 } ) ;
InitializerTests . X ( InitializerTests . Y ( ) , new uint [ ]
{
1 u ,
2 0 0 0 0 0 0 0 0 0 u ,
3 0 0 0 0 0 0 0 0 0 u ,
4 u ,
5 u ,
6 u ,
7 u ,
8 u ,
9 u ,
1 0 u
} ) ;
}
public static void ArrayLong ( )
{
X ( Y ( ) , new long [ ] { - 4 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 , - 1 , 0 , 1 , 4 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 } ) ;
InitializerTests . X ( InitializerTests . Y ( ) , new long [ ]
{
- 4 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9L ,
- 1L ,
0L ,
1L ,
4 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9L
} ) ;
}
public static void ArrayULong ( )
{
X ( Y ( ) , new ulong [ ] { 1 , 2 0 0 0 0 0 0 0 0 0 , 3 0 0 0 0 0 0 0 0 0 , 4 , 5 , 6 , 7 , 8 , 4 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 , 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 } ) ;
InitializerTests . X ( InitializerTests . Y ( ) , new ulong [ ]
{
1 uL ,
2 0 0 0 0 0 0 0 0 0 uL ,
3 0 0 0 0 0 0 0 0 0 uL ,
4 uL ,
5 uL ,
6 uL ,
7 uL ,
8 uL ,
4 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 uL ,
9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 uL
} ) ;
}
public static void ArrayFloat ( )
{
X ( Y ( ) , new float [ ] { - 1.5f , 0f , 1.5f , float . NegativeInfinity , float . PositiveInfinity , float . NaN } ) ;
InitializerTests . X ( InitializerTests . Y ( ) , new float [ ]
{
- 1.5f ,
0f ,
1.5f ,
float . NegativeInfinity ,
float . PositiveInfinity ,
float . NaN
} ) ;
}
public static void ArrayDouble ( )
{
X ( Y ( ) , new double [ ] { - 1.5 , 0.0 , 1.5 , double . NegativeInfinity , double . PositiveInfinity , double . NaN } ) ;
InitializerTests . X ( InitializerTests . Y ( ) , new double [ ]
{
- 1.5 ,
0.0 ,
1.5 ,
double . NegativeInfinity ,
double . PositiveInfinity ,
double . NaN
} ) ;
}
public static void ArrayDecimal ( )
{
X ( Y ( ) , new decimal [ ] { - 1 0 0 m , 0 m , 1 0 0 m , decimal . MinValue , decimal . MaxValue , 0.0000001 m } ) ;
InitializerTests . X ( InitializerTests . Y ( ) , new decimal [ ]
{
- 1 0 0 m ,
0 m ,
1 0 0 m ,
decimal . MinValue ,
decimal . MaxValue ,
0.0000001 m
} ) ;
}
public static void ArrayString ( )
{
X ( Y ( ) , new string [ ] { "" , null , "Hello" , "World" } ) ;
InitializerTests . X ( InitializerTests . Y ( ) , new string [ ]
{
"" ,
null ,
"Hello" ,
"World"
} ) ;
}
public static void ArrayEnum ( )
{
X ( Y ( ) , new InitializerTests . MyEnum [ ] { InitializerTests . MyEnum . a , InitializerTests . MyEnum . b , InitializerTests . MyEnum . a , InitializerTests . MyEnum . b } ) ;
InitializerTests . X ( InitializerTests . Y ( ) , new InitializerTests . MyEnum [ ]
{
InitializerTests . MyEnum . a ,
InitializerTests . MyEnum . b ,
InitializerTests . MyEnum . a ,
InitializerTests . MyEnum . b
} ) ;
}
#endregion
public static void CollectionInitializerList ( )
{
X ( Y ( ) , new List < int > { 1 , 2 , 3 } ) ;
InitializerTests . X ( InitializerTests . Y ( ) , new List < int >
{
1 ,
2 ,
3
} ) ;
}
public static void CollectionInitializerDictionary ( )
{
X ( Y ( ) , new Dictionary < string , int > {
{ "First" , 1 } ,
{ "Second" , 2 } ,
{ "Third" , 3 }
InitializerTests . X ( InitializerTests . Y ( ) , new Dictionary < string , int >
{
{
"First" ,
1
} ,
{
"Second" ,
2
} ,
{
"Third" ,
3
}
} ) ;
}
public static void CollectionInitializerDictionaryWithEnumTypes ( )
{
X ( Y ( ) , new Dictionary < InitializerTests . MyEnum , InitializerTests . MyEnum2 > {
{ InitializerTests . MyEnum . a , InitializerTests . MyEnum2 . c } ,
{ InitializerTests . MyEnum . b , InitializerTests . MyEnum2 . d }
InitializerTests . X ( InitializerTests . Y ( ) , new Dictionary < InitializerTests . MyEnum , InitializerTests . MyEnum2 >
{
{
InitializerTests . MyEnum . a ,
InitializerTests . MyEnum2 . c
} ,
{
InitializerTests . MyEnum . b ,
InitializerTests . MyEnum2 . d
}
} ) ;
}
public static void NotACollectionInitializer ( )
{
List < int > list = new List < int > ( ) ;
list . Add ( 1 ) ;
list . Add ( 2 ) ;
list . Add ( 3 ) ;
X ( Y ( ) , list ) ;
InitializerTests . X ( InitializerTests . Y ( ) , list ) ;
}
public static void ObjectInitializer ( )
{
X ( Y ( ) , new Data
InitializerTests . X ( InitializerTests . Y ( ) , new InitializerTests . Data
{
a = InitializerTests . MyEnum . a
a = InitializerTests . MyEnum . a
} ) ;
}
public static void NotAObjectInitializer ( )
{
Data data = new InitializerTests . Data ( ) ;
InitializerTests . Data data = new InitializerTests . Data ( ) ;
data . a = InitializerTests . MyEnum . a ;
X ( Y ( ) , data ) ;
InitializerTests . X ( InitializerTests . Y ( ) , data ) ;
}
public static void ObjectInitializerAssignCollectionToField ( )
{
X ( Y ( ) , new InitializerTests . Data
InitializerTests . X ( InitializerTests . Y ( ) , new InitializerTests . Data
{
a = InitializerTests . MyEnum . a ,
FieldList = new List < InitializerTests . MyEnum2 >
{
InitializerTests . MyEnum2 . c ,
InitializerTests . MyEnum2 . d
}
a = InitializerTests . MyEnum . a ,
FieldList = new List < InitializerTests . MyEnum2 >
{
InitializerTests . MyEnum2 . c ,
InitializerTests . MyEnum2 . d
}
} ) ;
}
public static void ObjectInitializerAddToCollectionInField ( )
{
X ( Y ( ) , new InitializerTests . Data
InitializerTests . X ( InitializerTests . Y ( ) , new InitializerTests . Data
{
a = InitializerTests . MyEnum . a ,
FieldList =
{
InitializerTests . MyEnum2 . c ,
InitializerTests . MyEnum2 . d
}
a = InitializerTests . MyEnum . a ,
FieldList =
{
InitializerTests . MyEnum2 . c ,
InitializerTests . MyEnum2 . d
}
} ) ;
}
public static void ObjectInitializerAssignCollectionToProperty ( )
{
X ( Y ( ) , new InitializerTests . Data
InitializerTests . X ( InitializerTests . Y ( ) , new InitializerTests . Data
{
a = InitializerTests . MyEnum . a ,
PropertyList = new List < InitializerTests . MyEnum2 >
{
InitializerTests . MyEnum2 . c ,
InitializerTests . MyEnum2 . d
}
a = InitializerTests . MyEnum . a ,
PropertyList = new List < InitializerTests . MyEnum2 >
{
InitializerTests . MyEnum2 . c ,
InitializerTests . MyEnum2 . d
}
} ) ;
}
public static void ObjectInitializerAddToCollectionInProperty ( )
{
X ( Y ( ) , new InitializerTests . Data
InitializerTests . X ( InitializerTests . Y ( ) , new InitializerTests . Data
{
a = InitializerTests . MyEnum . a ,
PropertyList =
{
InitializerTests . MyEnum2 . c ,
InitializerTests . MyEnum2 . d
}
a = InitializerTests . MyEnum . a ,
PropertyList =
{
InitializerTests . MyEnum2 . c ,
InitializerTests . MyEnum2 . d
}
} ) ;
}
public static void ObjectInitializerWithInitializationOfNestedObjects ( )
{
X ( Y ( ) , new InitializerTests . Data
InitializerTests . X ( InitializerTests . Y ( ) , new InitializerTests . Data
{
MoreData =
{
a = InitializerTests . MyEnum . a
}
MoreData =
{
a = InitializerTests . MyEnum . a
}
} ) ;
}
}