Ejemplo n.º 1
0
        public void VBNetCustomEventsStatementTest()
        {
            string           code            = @" Public Custom Event TestEvent As EventHandler
        AddHandler(ByVal value As EventHandler)
            Handlers = CType([Delegate].Combine(Handlers, value), _
                EventHandler)
        End AddHandler

        RemoveHandler(ByVal value as EventHandler)
            Handlers = CType([Delegate].Remove(Handlers, value), _
                EventHandler)
        End RemoveHandler

        RaiseEvent(ByVal sender As Object, ByVal e As EventArgs)
            Dim TempHandlers As EventHandler = Handlers

            If TempHandlers IsNot Nothing Then
                TempHandlers(sender, e)
            End If
        End RaiseEvent
    End Event";
            EventDeclaration customEventDecl = ParseUtilVBNet.ParseTypeMember <EventDeclaration>(code);

            Assert.IsNotNull(customEventDecl);
            Assert.AreEqual("TestEvent", customEventDecl.Name);
        }
Ejemplo n.º 2
0
        public void VBNetConstructorDeclarationTest1()
        {
            string program            = @"Sub New()
								End Sub"                                ;
            ConstructorDeclaration cd = ParseUtilVBNet.ParseTypeMember <ConstructorDeclaration>(program);

            Assert.IsTrue(cd.ConstructorInitializer.IsNull);
        }
Ejemplo n.º 3
0
        public void VBNetSimpleSetPropertyDeclarationTest()
        {
            PropertyDeclaration pd = ParseUtilVBNet.ParseTypeMember <PropertyDeclaration>("Property MyProperty \n Set\nEnd Set\nEnd Property ");

            Assert.AreEqual("MyProperty", pd.Name);
            Assert.IsFalse(pd.HasGetRegion);
            Assert.IsTrue(pd.HasSetRegion);
        }
Ejemplo n.º 4
0
        public void VBNetConstructorDeclarationTest2()
        {
            ConstructorDeclaration cd = ParseUtilVBNet.ParseTypeMember <ConstructorDeclaration>("Sub New(x As Integer, Optional y As String) \nEnd Sub");

            Assert.AreEqual(2, cd.Parameters.Count);
            Assert.AreEqual("System.Int32", cd.Parameters[0].TypeReference.Type);
            Assert.AreEqual("System.String", cd.Parameters[1].TypeReference.Type);
            Assert.AreEqual(ParameterModifiers.Optional, cd.Parameters[1].ParamModifier & ParameterModifiers.Optional);
        }
Ejemplo n.º 5
0
        public void VBNetWriteOnlyAutoPropertyTest()
        {
            PropertyDeclaration pd = ParseUtilVBNet.ParseTypeMember <PropertyDeclaration>("WriteOnly Property MyProperty");

            Assert.AreEqual("MyProperty", pd.Name);
            Assert.IsFalse(pd.HasGetRegion);
            Assert.IsTrue(pd.HasSetRegion);
            Assert.AreEqual(pd.Initializer, Expression.Null);
        }
Ejemplo n.º 6
0
        public void VBNetLabelStatementTest()
        {
            MethodDeclaration method = ParseUtilVBNet.ParseTypeMember <MethodDeclaration>("Sub Test \n myLabel: Console.WriteLine() \n End Sub");

            Assert.AreEqual(2, method.Body.Children.Count);
            LabelStatement labelStmt = (LabelStatement)method.Body.Children[0];

            Assert.AreEqual("myLabel", labelStmt.Label);
        }
Ejemplo n.º 7
0
        public void VBNetMultiFieldDeclarationTest()
        {
            FieldDeclaration fd = ParseUtilVBNet.ParseTypeMember <FieldDeclaration>("a, b As String");

            Assert.AreEqual(2, fd.Fields.Count);

            Assert.AreEqual("String", ((VariableDeclaration)fd.Fields[0]).TypeReference.Type);
            Assert.AreEqual("String", ((VariableDeclaration)fd.Fields[1]).TypeReference.Type);
        }
Ejemplo n.º 8
0
        public void VBNetSimpleInitializerAutoPropertyTest()
        {
            PropertyDeclaration pd = ParseUtilVBNet.ParseTypeMember <PropertyDeclaration>("Property MyProperty = 5");

            Assert.AreEqual("MyProperty", pd.Name);
            Assert.IsTrue(pd.HasGetRegion);
            Assert.IsTrue(pd.HasSetRegion);
            Assert.AreEqual(pd.Initializer.ToString(), new PrimitiveExpression(5).ToString());
        }
        public void VBNetSimpleEventDeclarationTest()
        {
            EventDeclaration ed = ParseUtilVBNet.ParseTypeMember <EventDeclaration>("event MyEvent(x as Integer)");

            Assert.AreEqual(1, ed.Parameters.Count);
            Assert.AreEqual("MyEvent", ed.Name);
            Assert.IsFalse(ed.HasAddRegion);
            Assert.IsFalse(ed.HasRemoveRegion);
        }
Ejemplo n.º 10
0
        public void VBNetSimpleGetPropertyDeclarationTest()
        {
            PropertyDeclaration pd = ParseUtilVBNet.ParseTypeMember <PropertyDeclaration>("ReadOnly Property MyProperty \nGet\nEnd Get\nEnd Property");

            Assert.AreEqual("MyProperty", pd.Name);
            Assert.IsTrue(pd.HasGetRegion);
            Assert.IsFalse(pd.HasSetRegion);
            Assert.IsTrue((pd.Modifier & Modifiers.ReadOnly) == Modifiers.ReadOnly);
        }
Ejemplo n.º 11
0
        public void VBNetSimpleObjectInitializerAutoPropertyTest()
        {
            PropertyDeclaration pd = ParseUtilVBNet.ParseTypeMember <PropertyDeclaration>("Property MyProperty As New List");

            Assert.AreEqual("MyProperty", pd.Name);
            Assert.AreEqual("List", pd.TypeReference.Type);
            Assert.IsTrue(pd.HasGetRegion);
            Assert.IsTrue(pd.HasSetRegion);
            Assert.AreEqual(pd.Initializer.ToString(), new ObjectCreateExpression(new TypeReference("List"), null).ToString());
        }
Ejemplo n.º 12
0
        public void VBNetMethodWithTypeCharactersTest()
        {
            const string program = @"Public Function Func!(ByVal Param&)
				Func! = CSingle(Param&)
			End Function"            ;

            MethodDeclaration md = ParseUtilVBNet.ParseTypeMember <MethodDeclaration>(program);

            Assert.AreEqual(Modifiers.Public, md.Modifier);
        }
Ejemplo n.º 13
0
        public void VBNetDefiningPartialMethodDeclarationTest()
        {
            MethodDeclaration md = ParseUtilVBNet.ParseTypeMember <MethodDeclaration>(@"Partial Sub MyMethod()
			                                                                         End Sub"            );

            Assert.AreEqual(0, md.Parameters.Count);
            Assert.AreEqual("MyMethod", md.Name);
            Assert.IsFalse(md.IsExtensionMethod);
            Assert.AreEqual(Modifiers.Partial, md.Modifier);
        }
Ejemplo n.º 14
0
        public void VBNetDeclareDeclarationTest()
        {
            string             program = "Declare Ansi Function GetUserName Lib \"advapi32.dll\" Alias \"GetUserNameA\" (ByVal lpBuffer As String, ByRef nSize As Integer) As Integer\n";
            DeclareDeclaration dd      = ParseUtilVBNet.ParseTypeMember <DeclareDeclaration>(program);

            Assert.AreEqual("System.Int32", dd.TypeReference.Type);
            Assert.AreEqual("GetUserName", dd.Name);
            Assert.AreEqual("advapi32.dll", dd.Library);
            Assert.AreEqual("GetUserNameA", dd.Alias);
            Assert.AreEqual(CharsetModifier.Ansi, dd.Charset);
        }
Ejemplo n.º 15
0
        public void VBNetMultiFieldDeclarationTest2()
        {
            FieldDeclaration fd = ParseUtilVBNet.ParseTypeMember <FieldDeclaration>("Dim a, b() As String");

            Assert.AreEqual(2, fd.Fields.Count);

            Assert.AreEqual("String", ((VariableDeclaration)fd.Fields[0]).TypeReference.Type);
            Assert.AreEqual("String", ((VariableDeclaration)fd.Fields[1]).TypeReference.Type);
            Assert.IsFalse(((VariableDeclaration)fd.Fields[0]).TypeReference.IsArrayType);
            Assert.IsTrue(((VariableDeclaration)fd.Fields[1]).TypeReference.IsArrayType);
        }
Ejemplo n.º 16
0
        public void VBNetSimpleFieldDeclarationTest()
        {
            FieldDeclaration fd = ParseUtilVBNet.ParseTypeMember <FieldDeclaration>("myField As Integer(,,,)");

            Assert.AreEqual(1, fd.Fields.Count);

            Assert.AreEqual("Integer", ((VariableDeclaration)fd.Fields[0]).TypeReference.Type);
            Assert.AreEqual("System.Int32", ((VariableDeclaration)fd.Fields[0]).TypeReference.SystemType);
            Assert.AreEqual("myField", ((VariableDeclaration)fd.Fields[0]).Name);
            Assert.AreEqual(new int[] { 3 }, ((VariableDeclaration)fd.Fields[0]).TypeReference.RankSpecifier);
        }
Ejemplo n.º 17
0
        public void VBNetGenericMethodDeclarationTest()
        {
            MethodDeclaration md = ParseUtilVBNet.ParseTypeMember <MethodDeclaration>("Function MyMethod(Of T)(a As T) As T\nEnd Function ");

            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);
        }
Ejemplo n.º 18
0
        public void VBNetSubroutineMethodDeclarationTest()
        {
            const string program = @"public Sub MyMethod()
				OtherMethod()
			end Sub"            ;

            MethodDeclaration md = ParseUtilVBNet.ParseTypeMember <MethodDeclaration>(program);

            Assert.AreEqual(Modifiers.Public, md.Modifier);
            Assert.AreEqual(2, md.StartLocation.Line, "StartLocation.Y");
            Assert.AreEqual(2, md.StartLocation.Column, "StartLocation.X");
            Assert.AreEqual(2, md.EndLocation.Line, "EndLocation.Y");
        }
Ejemplo n.º 19
0
        public void VBNetFunctionMethodDeclarationTest()
        {
            const string program = @"public function MyFunction() as Integer
				return 1
			end function"            ;

            MethodDeclaration md = ParseUtilVBNet.ParseTypeMember <MethodDeclaration>(program);

            Assert.AreEqual(Modifiers.Public, md.Modifier);
            Assert.AreEqual(2, md.StartLocation.Line, "StartLocation.Y");
            Assert.AreEqual(2, md.StartLocation.Column, "StartLocation.X");
            Assert.AreEqual(2, md.EndLocation.Line, "EndLocation.Y");
        }
Ejemplo n.º 20
0
        public void VBNetMethodWithModifiersRegionTest()
        {
            const string program = @"public shared sub MyMethod()
				OtherMethod()
			end sub"            ;

            MethodDeclaration md = ParseUtilVBNet.ParseTypeMember <MethodDeclaration>(program);

            Assert.AreEqual(Modifiers.Public | Modifiers.Static, md.Modifier);
            Assert.AreEqual(2, md.StartLocation.Y, "StartLocation.Y");
            Assert.AreEqual(2, md.EndLocation.Y, "EndLocation.Y");
            Assert.AreEqual(2, md.StartLocation.X, "StartLocation.X");
        }
Ejemplo n.º 21
0
        public void VBNetImplictOperatorDeclarationTest()
        {
            string programm = @"Public Shared Operator + (ByVal v As Complex) As Complex
					Return v
				End Operator"                ;

            OperatorDeclaration od = ParseUtilVBNet.ParseTypeMember <OperatorDeclaration>(programm);

            Assert.IsFalse(od.IsConversionOperator);
            Assert.AreEqual(1, od.Parameters.Count);
            Assert.AreEqual(ConversionType.None, od.ConversionType);
            Assert.AreEqual("Complex", od.TypeReference.Type);
        }
Ejemplo n.º 22
0
        public void VBNetGenericMethodDeclarationWithConstraintTest()
        {
            string            program = "Function MyMethod(Of T As { ISomeInterface })(a As T) As T\n End Function";
            MethodDeclaration md      = ParseUtilVBNet.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);
        }
Ejemplo n.º 23
0
        public void VBNetExtensionMethodDeclaration()
        {
            MethodDeclaration md = ParseUtilVBNet.ParseTypeMember <MethodDeclaration>(
                @"<Extension> _
				Sub Print(s As String)
					Console.WriteLine(s)
				End Sub"                );

            Assert.AreEqual("Print", md.Name);

            // IsExtensionMethod is only valid for c#.
            // Assert.IsTrue(md.IsExtensionMethod);

            Assert.AreEqual("s", md.Parameters[0].ParameterName);
            Assert.AreEqual("System.String", md.Parameters[0].TypeReference.Type);
        }
Ejemplo n.º 24
0
        public void VBNetMethodWithHandlesClause()
        {
            MethodDeclaration md = ParseUtilVBNet.ParseTypeMember <MethodDeclaration>(
                @"Public Sub MyMethod(sender As Object, e As EventArgs) Handles x.y
			End Sub"            );

            Assert.AreEqual(new string[] { "x.y" }, md.HandlesClause.ToArray());

            md = ParseUtilVBNet.ParseTypeMember <MethodDeclaration>(
                @"Public Sub MyMethod() Handles Me.FormClosing
			End Sub"            );
            Assert.AreEqual(new string[] { "Me.FormClosing" }, md.HandlesClause.ToArray());

            md = ParseUtilVBNet.ParseTypeMember <MethodDeclaration>(
                @"Public Sub MyMethod() Handles MyBase.Event, Button1.Click
			End Sub"            );
            Assert.AreEqual(new string[] { "MyBase.Event", "Button1.Click" }, md.HandlesClause.ToArray());
        }