1
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
2
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
7
using ICSharpCode.NRefactory.VB.Parser;
8
using ICSharpCode.NRefactory.VB.Ast;
10
namespace ICSharpCode.NRefactory.VB.Tests.Ast
13
public class TypeOfExpressionTests
17
public void VBSimpleTypeOfExpressionTest()
19
TypeOfExpression toe = ParseUtil.ParseExpression<TypeOfExpression>("GetType(MyNamespace.N1.MyType)");
20
Assert.AreEqual("MyNamespace.N1.MyType", toe.TypeReference.Type);
25
public void VBGlobalTypeOfExpressionTest()
27
TypeOfExpression toe = ParseUtil.ParseExpression<TypeOfExpression>("GetType(Global.System.Console)");
28
Assert.AreEqual("System.Console", toe.TypeReference.Type);
32
public void VBPrimitiveTypeOfExpressionTest()
34
TypeOfExpression toe = ParseUtil.ParseExpression<TypeOfExpression>("GetType(integer)");
35
Assert.AreEqual("System.Int32", toe.TypeReference.Type);
39
public void VBVoidTypeOfExpressionTest()
41
TypeOfExpression toe = ParseUtil.ParseExpression<TypeOfExpression>("GetType(void)");
42
Assert.AreEqual("void", toe.TypeReference.Type);
46
public void VBArrayTypeOfExpressionTest()
48
TypeOfExpression toe = ParseUtil.ParseExpression<TypeOfExpression>("GetType(MyType())");
49
Assert.AreEqual("MyType", toe.TypeReference.Type);
50
Assert.AreEqual(new int[] {0}, toe.TypeReference.RankSpecifier);
54
public void VBGenericTypeOfExpressionTest()
56
TypeOfExpression toe = ParseUtil.ParseExpression<TypeOfExpression>("GetType(MyNamespace.N1.MyType(Of string))");
57
Assert.AreEqual("MyNamespace.N1.MyType", toe.TypeReference.Type);
58
Assert.AreEqual("System.String", toe.TypeReference.GenericTypes[0].Type);
62
public void VBUnboundTypeOfExpressionTest()
64
TypeOfExpression toe = ParseUtil.ParseExpression<TypeOfExpression>("GetType(MyType(Of ,))");
65
Assert.AreEqual("MyType", toe.TypeReference.Type);
66
Assert.IsTrue(toe.TypeReference.GenericTypes[0].IsNull);
67
Assert.IsTrue(toe.TypeReference.GenericTypes[1].IsNull);
71
public void VBNestedGenericTypeOfExpressionTest()
73
TypeOfExpression toe = ParseUtil.ParseExpression<TypeOfExpression>("GetType(MyType(Of string).InnerClass(of integer).InnerInnerClass)");
74
InnerClassTypeReference ic = (InnerClassTypeReference)toe.TypeReference;
75
Assert.AreEqual("InnerInnerClass", ic.Type);
76
Assert.AreEqual(0, ic.GenericTypes.Count);
77
ic = (InnerClassTypeReference)ic.BaseType;
78
Assert.AreEqual("InnerClass", ic.Type);
79
Assert.AreEqual(1, ic.GenericTypes.Count);
80
Assert.AreEqual("System.Int32", ic.GenericTypes[0].Type);
81
Assert.AreEqual("MyType", ic.BaseType.Type);
82
Assert.AreEqual(1, ic.BaseType.GenericTypes.Count);
83
Assert.AreEqual("System.String", ic.BaseType.GenericTypes[0].Type);