public void CSharpExtensionMethodTest() { MethodDeclaration md = ParseUtilCSharp.ParseTypeMember <MethodDeclaration>( "public static int ToInt32(this string s) { return int.Parse(s); }" ); Assert.AreEqual("ToInt32", md.Name); Assert.IsTrue(md.IsExtensionMethod); Assert.AreEqual("s", md.Parameters[0].ParameterName); Assert.AreEqual("System.String", md.Parameters[0].TypeReference.Type); }
public void CSharpIncompleteConstraintsTest() { MethodDeclaration md = ParseUtilCSharp.ParseTypeMember <MethodDeclaration>( "void a<T>() where T { }", true /* expect errors */ ); Assert.AreEqual("a", md.Name); Assert.AreEqual(1, md.Templates.Count); Assert.AreEqual("T", md.Templates[0].Name); Assert.AreEqual(0, md.Templates[0].Bases.Count); }
public void CSharpVoidExtensionMethodTest() { MethodDeclaration md = ParseUtilCSharp.ParseTypeMember <MethodDeclaration>( "public static void Print(this string s) { Console.WriteLine(s); }" ); Assert.AreEqual("Print", md.Name); Assert.IsTrue(md.IsExtensionMethod); Assert.AreEqual("s", md.Parameters[0].ParameterName); Assert.AreEqual("System.String", md.Parameters[0].TypeReference.Type); }
public void CSharpIndexerImplementingGenericInterfaceTest() { IndexerDeclaration id = ParseUtilCSharp.ParseTypeMember <IndexerDeclaration>("int MyInterface<string>.this[int a, string b] { get { } set { } }"); Assert.AreEqual(2, id.Parameters.Count); Assert.IsTrue(id.HasGetRegion, "No get region found!"); Assert.IsTrue(id.HasSetRegion, "No set region found!"); Assert.AreEqual("MyInterface", id.InterfaceImplementations[0].InterfaceType.Type); Assert.AreEqual("System.String", id.InterfaceImplementations[0].InterfaceType.GenericTypes[0].Type); }
public void CSharpIndexerImplementingInterfaceTest() { PropertyDeclaration id = ParseUtilCSharp.ParseTypeMember <PropertyDeclaration>("int MyInterface.this[int a, string b] { get { } set { } }"); Assert.AreEqual(2, id.Parameters.Count); Assert.IsTrue(id.HasGetRegion, "No get region found!"); Assert.IsTrue(id.HasSetRegion, "No set region found!"); Assert.IsTrue(id.IsIndexer, "No Default modifier set!"); Assert.AreEqual("MyInterface", id.InterfaceImplementations[0].InterfaceType.Type); }
public void CSharpPropertyImplementingGenericInterfaceTest() { PropertyDeclaration pd = ParseUtilCSharp.ParseTypeMember <PropertyDeclaration>("int MyInterface<string>.MyProperty { get {} } "); Assert.AreEqual("MyProperty", pd.Name); Assert.IsTrue(pd.HasGetRegion); Assert.IsTrue(!pd.HasSetRegion); Assert.AreEqual("MyInterface", pd.InterfaceImplementations[0].InterfaceType.Type); Assert.AreEqual("System.String", pd.InterfaceImplementations[0].InterfaceType.GenericTypes[0].SystemType); }
public void CSharpGenericMethodDeclarationTest() { MethodDeclaration md = ParseUtilCSharp.ParseTypeMember <MethodDeclaration>("T MyMethod<T>(T a) {} "); Assert.AreEqual("T", md.TypeReference.Type); Assert.AreEqual(1, md.Parameters.Count); Assert.AreEqual("T", ((ParameterDeclarationExpression)md.Parameters[0]).TypeReference.Type); Assert.AreEqual("a", ((ParameterDeclarationExpression)md.Parameters[0]).ParameterName); Assert.AreEqual(1, md.Templates.Count); Assert.AreEqual("T", md.Templates[0].Name); }
public void CSharpEventImplementingInterfaceDeclarationTest() { EventDeclaration ed = ParseUtilCSharp.ParseTypeMember <EventDeclaration>("event EventHandler MyInterface.MyEvent;"); Assert.AreEqual("MyEvent", ed.Name); Assert.AreEqual("EventHandler", ed.TypeReference.Type); Assert.IsFalse(ed.HasAddRegion); Assert.IsFalse(ed.HasRemoveRegion); Assert.AreEqual("MyInterface", ed.InterfaceImplementations[0].InterfaceType.Type); Assert.AreEqual("MyEvent", ed.InterfaceImplementations[0].MemberName); }
public void CSharpMethodWithModifiersRegionTest() { const string program = @" public static void MyMethod() { OtherMethod(); } "; MethodDeclaration md = ParseUtilCSharp.ParseTypeMember <MethodDeclaration>(program); Assert.AreEqual(2, md.StartLocation.Line, "StartLocation.Y"); Assert.AreEqual(2, md.EndLocation.Line, "EndLocation.Y"); Assert.AreEqual(3, md.StartLocation.Column, "StartLocation.X"); }
public void CSharpMethodWithEmptyAssignmentErrorInBody() { MethodDeclaration md = ParseUtilCSharp.ParseTypeMember <MethodDeclaration>( "void A\n" + "{\n" + "int a = 3;\n" + " = 4;\n" + "}", true /* expect errors */ ); Assert.AreEqual("A", md.Name); Assert.AreEqual(new Location(1, 2), md.Body.StartLocation); Assert.AreEqual(new Location(2, 5), md.Body.EndLocation); }
public void CSharpGenericMethodDeclarationWithConstraintTest() { string program = "T MyMethod<T>(T a) where T : ISomeInterface {} "; MethodDeclaration md = ParseUtilCSharp.ParseTypeMember <MethodDeclaration>(program); Assert.AreEqual("T", md.TypeReference.Type); Assert.AreEqual(1, md.Parameters.Count); Assert.AreEqual("T", ((ParameterDeclarationExpression)md.Parameters[0]).TypeReference.Type); Assert.AreEqual("a", ((ParameterDeclarationExpression)md.Parameters[0]).ParameterName); Assert.AreEqual(1, md.Templates.Count); Assert.AreEqual("T", md.Templates[0].Name); Assert.AreEqual(1, md.Templates[0].Bases.Count); Assert.AreEqual("ISomeInterface", md.Templates[0].Bases[0].Type); }
public void CSharpSimpleMethodRegionTest() { const string program = @" void MyMethod() { OtherMethod(); } "; MethodDeclaration md = ParseUtilCSharp.ParseTypeMember <MethodDeclaration>(program); Assert.AreEqual(2, md.StartLocation.Line, "StartLocation.Y"); Assert.AreEqual(2, md.EndLocation.Line, "EndLocation.Y"); Assert.AreEqual(3, md.StartLocation.Column, "StartLocation.X"); // endLocation.X is currently 20. It should be 18, but that error is not critical //Assert.AreEqual(18, md.EndLocation.X, "EndLocation.X"); }
public void CSharpOptionalParameterTest() { MethodDeclaration md = ParseUtilCSharp.ParseTypeMember <MethodDeclaration>( "public void Foo(string bar = null, int baz = 0) { }" ); Assert.AreEqual("Foo", md.Name); Assert.AreEqual("bar", md.Parameters[0].ParameterName); Assert.AreEqual("System.String", md.Parameters[0].TypeReference.Type); Assert.AreEqual(ParameterModifiers.In | ParameterModifiers.Optional, md.Parameters[0].ParamModifier); Assert.IsNull(((PrimitiveExpression)md.Parameters[0].DefaultValue).Value); Assert.AreEqual("baz", md.Parameters[1].ParameterName); Assert.AreEqual("System.Int32", md.Parameters[1].TypeReference.Type); Assert.AreEqual(ParameterModifiers.In | ParameterModifiers.Optional, md.Parameters[1].ParamModifier); Assert.AreEqual(0, ((PrimitiveExpression)md.Parameters[1].DefaultValue).Value); }
public void CSharpUnsafeDestructorDeclarationTest() { DestructorDeclaration dd = ParseUtilCSharp.ParseTypeMember <DestructorDeclaration>("unsafe ~MyClass() {}"); Assert.AreEqual(Modifiers.Unsafe, dd.Modifier); }
public void CSharpConstructorDeclarationTest1() { ConstructorDeclaration cd = ParseUtilCSharp.ParseTypeMember <ConstructorDeclaration>("MyClass() {}"); Assert.IsTrue(cd.ConstructorInitializer.IsNull); }
public void CSharpDestructorDeclarationTest() { DestructorDeclaration dd = ParseUtilCSharp.ParseTypeMember <DestructorDeclaration>("~MyClass() {}"); }
public void CSharpExternDestructorDeclarationTest() { DestructorDeclaration dd = ParseUtilCSharp.ParseTypeMember <DestructorDeclaration>("extern ~MyClass();"); Assert.AreEqual(Modifiers.Extern, dd.Modifier); }