1
ļ»æ// Copyright (c) 2010-2013 AlphaSierraPapa for the SharpDevelop Team
3
// Permission is hereby granted, free of charge, to any person obtaining a copy of this
4
// software and associated documentation files (the "Software"), to deal in the Software
5
// without restriction, including without limitation the rights to use, copy, modify, merge,
6
// publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons
7
// to whom the Software is furnished to do so, subject to the following conditions:
9
// The above copyright notice and this permission notice shall be included in all copies or
10
// substantial portions of the Software.
12
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
13
// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
14
// PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE
15
// FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
16
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
17
// DEALINGS IN THE SOFTWARE.
21
using NUnit.Framework;
23
namespace ICSharpCode.NRefactory.CSharp.Parser.Expression
26
public class ArrayCreateExpressionTests
29
public void ArrayCreateExpressionTest1()
31
ParseUtilCSharp.AssertExpression(
33
new ArrayCreateExpression {
34
Type = new PrimitiveType("int"),
35
Arguments = { new PrimitiveExpression(5) }
40
public void MultidimensionalNestedArray()
42
ParseUtilCSharp.AssertExpression(
44
new ArrayCreateExpression {
45
Type = new PrimitiveType("int"),
46
Arguments = { new PrimitiveExpression(5), new PrimitiveExpression(2) },
47
AdditionalArraySpecifiers = {
48
new ArraySpecifier(3),
55
public void ArrayWithImplicitSize()
57
ParseUtilCSharp.AssertExpression(
59
new ArrayCreateExpression {
60
Type = new PrimitiveType("int"),
61
AdditionalArraySpecifiers = {
64
Initializer = new ArrayInitializerExpression {
65
Elements = { new PrimitiveExpression(1) }
71
public void ArrayWithImplicitSize2D()
73
ParseUtilCSharp.AssertExpression(
74
"new int[,] { { 1 } }",
75
new ArrayCreateExpression {
76
Type = new PrimitiveType("int"),
77
AdditionalArraySpecifiers = { new ArraySpecifier (2) },
78
Initializer = new ArrayInitializerExpression {
80
new ArrayInitializerExpression {
81
Elements = { new PrimitiveExpression(1) }
89
public void ImplicitlyTypedArrayCreateExpression()
91
ParseUtilCSharp.AssertExpression(
92
"new[] { 1, 10, 100, 1000 }",
93
new ArrayCreateExpression {
94
AdditionalArraySpecifiers = {
97
Initializer = new ArrayInitializerExpression {
99
new PrimitiveExpression(1),
100
new PrimitiveExpression(10),
101
new PrimitiveExpression(100),
102
new PrimitiveExpression(1000)
109
public void ImplicitlyTypedArrayCreateExpression2D()
111
ParseUtilCSharp.AssertExpression(
112
"new [,] { { 1, 10 }, { 100, 1000 } }",
113
new ArrayCreateExpression {
114
AdditionalArraySpecifiers = {
115
new ArraySpecifier(2),
117
Initializer = new ArrayInitializerExpression {
119
new ArrayInitializerExpression {
121
new PrimitiveExpression(1),
122
new PrimitiveExpression(10)
125
new ArrayInitializerExpression {
127
new PrimitiveExpression(100),
128
new PrimitiveExpression(1000)
136
public void AssignmentInArrayInitializer()
138
ParseUtilCSharp.AssertExpression(
140
new ArrayCreateExpression {
141
AdditionalArraySpecifiers = {
142
new ArraySpecifier(0)
144
Initializer = new ArrayInitializerExpression {
146
new AssignmentExpression(new IdentifierExpression("a"), new PrimitiveExpression(10))
152
public void EmptyArrayCreation()
154
var ace = ParseUtilCSharp.ParseExpression<ArrayCreateExpression>("new [] { }");
155
Assert.AreEqual(new Role[] {
158
}, ace.Initializer.Children.Select(c => c.Role).ToArray());
162
public void ArrayInitializerWithCommaAtEnd()
164
var ace = ParseUtilCSharp.ParseExpression<ArrayCreateExpression>("new [] { 1, }");
165
Assert.AreEqual(new Role[] {
170
}, ace.Initializer.Children.Select(c => c.Role).ToArray());