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)
5
using ICSharpCode.NRefactory.VB.Ast;
8
namespace ICSharpCode.NRefactory.VB.Tests.Ast
11
public class TypeDeclarationTests
15
// public void VBNetSimpleClassTypeDeclarationTest()
17
// string program = "Class TestClass\n" +
19
// TypeDeclaration td = ParseUtil.ParseGlobal<TypeDeclaration>(program);
21
// Assert.AreEqual("TestClass", td.Name);
22
// Assert.AreEqual(ClassType.Class, td.Type);
23
// Assert.AreEqual(1, td.StartLocation.Line, "start line");
24
// Assert.AreEqual(1, td.BodyStartLocation.Line, "bodystart line");
25
// Assert.AreEqual(16, td.BodyStartLocation.Column, "bodystart col");
26
// Assert.AreEqual(2, td.EndLocation.Line, "end line");
27
// Assert.AreEqual(10, td.EndLocation.Column, "end col");
31
// public void VBNetMissingBaseClassTest()
33
// // SD2-1499: test that this invalid code doesn't crash
34
// TypeDeclaration td = ParseUtil.ParseGlobal<TypeDeclaration>("public class test inherits", true);
35
// Assert.AreEqual(0, td.BaseTypes.Count);
39
// public void VBNetEnumWithBaseClassDeclarationTest()
41
// string program = "Enum TestEnum As Byte\n" +
43
// TypeDeclaration td = ParseUtil.ParseGlobal<TypeDeclaration>(program);
45
// Assert.AreEqual("TestEnum", td.Name);
46
// Assert.AreEqual(ClassType.Enum, td.Type);
47
// Assert.AreEqual("System.Byte", td.BaseTypes[0].Type);
48
// Assert.AreEqual(0, td.Children.Count);
52
// public void VBNetEnumOnSingleLine()
54
// string program = "Enum TestEnum : A : B = 1 : C : End Enum";
55
// TypeDeclaration td = ParseUtil.ParseGlobal<TypeDeclaration>(program);
57
// Assert.AreEqual("TestEnum", td.Name);
58
// Assert.AreEqual(ClassType.Enum, td.Type);
59
// Assert.AreEqual(3, td.Children.Count);
63
// public void VBNetEnumOnSingleLine2()
65
// string program = "Enum TestEnum : A : : B = 1 :: C : End Enum";
66
// TypeDeclaration td = ParseUtil.ParseGlobal<TypeDeclaration>(program);
68
// Assert.AreEqual("TestEnum", td.Name);
69
// Assert.AreEqual(ClassType.Enum, td.Type);
70
// Assert.AreEqual(3, td.Children.Count);
75
// public void VBNetEnumWithSystemBaseClassDeclarationTest()
77
// string program = "Enum TestEnum As System.UInt16\n" +
79
// TypeDeclaration td = ParseUtil.ParseGlobal<TypeDeclaration>(program);
81
// Assert.AreEqual("TestEnum", td.Name);
82
// Assert.AreEqual(ClassType.Enum, td.Type);
83
// Assert.AreEqual("System.UInt16", td.BaseTypes[0].Type);
84
// Assert.AreEqual(0, td.Children.Count);
88
// public void VBNetSimpleClassTypeDeclarationWithoutLastNewLineTest()
90
// string program = "Class TestClass\n" +
92
// TypeDeclaration td = ParseUtil.ParseGlobal<TypeDeclaration>(program);
94
// Assert.AreEqual("TestClass", td.Name);
95
// Assert.AreEqual(ClassType.Class, td.Type);
96
// Assert.AreEqual(1, td.StartLocation.Line, "start line");
97
// Assert.AreEqual(2, td.EndLocation.Line, "end line");
101
// public void VBNetSimpleClassTypeDeclarationWithColon()
103
// string program = "Class TestClass\n" +
106
// TypeDeclaration td = ParseUtil.ParseGlobal<TypeDeclaration>(program);
108
// Assert.AreEqual("TestClass", td.Name);
109
// Assert.AreEqual(ClassType.Class, td.Type);
113
// public void VBNetSimplePartialClassTypeDeclarationTest()
115
// string program = "Partial Class TestClass\n" +
117
// TypeDeclaration td = ParseUtil.ParseGlobal<TypeDeclaration>(program);
119
// Assert.AreEqual("TestClass", td.Name);
120
// Assert.AreEqual(ClassType.Class, td.Type);
121
// Assert.AreEqual(Modifiers.Partial, td.Modifier);
125
// public void VBNetPartialPublicClass()
127
// string program = "Partial Public Class TestClass\nEnd Class\n";
128
// TypeDeclaration td = ParseUtil.ParseGlobal<TypeDeclaration>(program);
130
// Assert.AreEqual("TestClass", td.Name);
131
// Assert.AreEqual(ClassType.Class, td.Type);
132
// Assert.AreEqual(Modifiers.Partial | Modifiers.Public, td.Modifier);
136
// public void VBNetGenericClassTypeDeclarationTest()
139
//Public Class Test(Of T)
143
// TypeDeclaration td = ParseUtil.ParseGlobal<TypeDeclaration>(declr);
145
// Assert.AreEqual(ClassType.Class, td.Type);
146
// Assert.AreEqual("Test", td.Name);
147
// Assert.AreEqual(Modifiers.Public, td.Modifier);
148
// Assert.AreEqual(0, td.BaseTypes.Count);
149
// Assert.AreEqual(1, td.Templates.Count);
150
// Assert.AreEqual("T", td.Templates[0].Name);
154
// public void VBNetGenericClassWithConstraint()
157
//Public Class Test(Of T As IMyInterface)
161
// TypeDeclaration td = ParseUtil.ParseGlobal<TypeDeclaration>(declr);
163
// Assert.AreEqual(ClassType.Class, td.Type);
164
// Assert.AreEqual("Test", td.Name);
166
// Assert.AreEqual(1, td.Templates.Count);
167
// Assert.AreEqual("T", td.Templates[0].Name);
168
// Assert.AreEqual("IMyInterface", td.Templates[0].Bases[0].Type);
172
// public void VBNetComplexGenericClassTypeDeclarationTest()
175
//Public Class Generic(Of T As MyNamespace.IMyInterface, S As {G(Of T()), IAnotherInterface})
176
// Implements System.IComparable
180
// TypeDeclaration td = ParseUtil.ParseGlobal<TypeDeclaration>(declr);
182
// Assert.AreEqual(ClassType.Class, td.Type);
183
// Assert.AreEqual("Generic", td.Name);
184
// Assert.AreEqual(Modifiers.Public, td.Modifier);
185
// Assert.AreEqual(1, td.BaseTypes.Count);
186
// Assert.AreEqual("System.IComparable", td.BaseTypes[0].Type);
188
// Assert.AreEqual(2, td.Templates.Count);
189
// Assert.AreEqual("T", td.Templates[0].Name);
190
// Assert.AreEqual("MyNamespace.IMyInterface", td.Templates[0].Bases[0].Type);
192
// Assert.AreEqual("S", td.Templates[1].Name);
193
// Assert.AreEqual(2, td.Templates[1].Bases.Count);
194
// Assert.AreEqual("G", td.Templates[1].Bases[0].Type);
195
// Assert.AreEqual(1, td.Templates[1].Bases[0].GenericTypes.Count);
196
// Assert.IsTrue(td.Templates[1].Bases[0].GenericTypes[0].IsArrayType);
197
// Assert.AreEqual("T", td.Templates[1].Bases[0].GenericTypes[0].Type);
198
// Assert.AreEqual(new int[] {0}, td.Templates[1].Bases[0].GenericTypes[0].RankSpecifier);
199
// Assert.AreEqual("IAnotherInterface", td.Templates[1].Bases[1].Type);