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);
        }
示例#5
0
        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);
        }
示例#6
0
        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);
        }
示例#15
0
        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);
        }