public void Arrays_WithinArrays_Empty_NonPrimitiveTypes()
{
var arrayMethod = new CodeMemberMethod();
arrayMethod.Name = "MoreArrayTests";
arrayMethod.Attributes = (arrayMethod.Attributes & ~MemberAttributes.AccessMask) | MemberAttributes.Public;
arrayMethod.ReturnType = new CodeTypeReference(typeof(int));
arrayMethod.Parameters.Add(new CodeParameterDeclarationExpression(typeof(int), "i"));
arrayMethod.Statements.Add(new CodeVariableDeclarationStatement(new CodeTypeReference(typeof(int[][])),
"arrayOfArrays", new CodeArrayCreateExpression(typeof(int[][]),
new CodeArrayCreateExpression(typeof(int[]), new CodePrimitiveExpression(3), new CodePrimitiveExpression(4)),
new CodeArrayCreateExpression(typeof(int[]), new CodePrimitiveExpression(1)), new CodeArrayCreateExpression(typeof(int[])))));
arrayMethod.Statements.Add(new CodeVariableDeclarationStatement(
new CodeTypeReference("System.Int32", 1), "array2",
new CodeArrayCreateExpression(typeof(int[]), new CodePrimitiveExpression(0))));
arrayMethod.Statements.Add(new CodeVariableDeclarationStatement(new CodeTypeReference("Class2", 1),
"arrayType", new CodeArrayCreateExpression(new CodeTypeReference("Class2", 1), new CodePrimitiveExpression(2))));
arrayMethod.Statements.Add(new CodeAssignStatement(new CodeArrayIndexerExpression(new CodeVariableReferenceExpression("arrayType"),
new CodePrimitiveExpression(1)), new CodeObjectCreateExpression(new CodeTypeReference("Class2"))));
arrayMethod.Statements.Add(new CodeAssignStatement(new CodeFieldReferenceExpression
(new CodeArrayIndexerExpression(new CodeVariableReferenceExpression("arrayType"),
new CodePrimitiveExpression(1)), "number"),
new CodeBinaryOperatorExpression(new CodeArrayIndexerExpression(
new CodeArrayIndexerExpression(new CodeVariableReferenceExpression("arrayOfArrays"), new CodePrimitiveExpression(0)), new CodePrimitiveExpression(1)),
CodeBinaryOperatorType.Add, new CodeVariableReferenceExpression("i"))));
arrayMethod.Statements.Add(new CodeMethodReturnStatement(new CodeFieldReferenceExpression
(new CodeArrayIndexerExpression(new CodeVariableReferenceExpression("arrayType"),
new CodePrimitiveExpression(1)), "number")));
AssertEqual(arrayMethod,
@"public int MoreArrayTests(int i)
{
int[][] arrayOfArrays = new int[][] { new int[] { 3,
4},
new int[1],
new int[0]};
int[] array2 = new int[0];
Class2[] arrayType = new Class2[2];
arrayType[1] = new Class2();
arrayType[1].number = (arrayOfArrays[0][1] + i);
return arrayType[1].number;
}");
}