public void MacroStatement_with_no_arguments_and_no_block_is_transformed_to_ReferenceExpression()
        {
            const string referenceName = "some_reference";

            MacroStatement statementInBlock = new MacroStatement();
            statementInBlock.Name = referenceName;

            MacroStatement fixture = GetMacroStatement("DoStuff", statementInBlock);

            BlockToArgumentsTransformer transformer = new BlockToArgumentsTransformer("DoStuff");
            transformer.Visit(fixture);

            Assert.IsAssignableFrom(typeof (ReferenceExpression), fixture.Arguments[0]);
            Assert.AreEqual(referenceName, (fixture.Arguments[0] as ReferenceExpression).Name);
        }
        public void Expression_statement_is_transformed()
        {
            LiteralExpression exp = new StringLiteralExpression("arg1");
            ExpressionStatement doStuffStatement = new ExpressionStatement(exp);

            MacroStatement fixture = new MacroStatement(new LexicalInfo("test", 1, 1));
            fixture.Name = "DoStuff";
            fixture.Block = new Block();
            fixture.Block.Add(doStuffStatement);

            BlockToArgumentsTransformer transformer = new BlockToArgumentsTransformer("DoStuff");
            transformer.Visit(fixture);

            Assert.AreEqual(exp, fixture.Arguments[0]);
            Assert.IsFalse(fixture.Block.HasStatements, "MacroStatement block should be empty after transformation.");
        }
Esempio n. 3
0
        public void MacroStatement_with_no_arguments_and_no_block_is_transformed_to_ReferenceExpression()
        {
            const string referenceName = "some_reference";

            MacroStatement statementInBlock = new MacroStatement();

            statementInBlock.Name = referenceName;

            MacroStatement fixture = GetMacroStatement("DoStuff", statementInBlock);

            BlockToArgumentsTransformer transformer = new BlockToArgumentsTransformer("DoStuff");

            transformer.Visit(fixture);

            Assert.IsAssignableFrom(typeof(ReferenceExpression), fixture.Arguments[0]);
            Assert.Equal(referenceName, (fixture.Arguments[0] as ReferenceExpression).Name);
        }
        public void MacroStatement_with_arguments_is_transformed_to_MethodInvocationExpression()
        {
            const string methodInBlockName = "some_method";

            MacroStatement statementInBlock = new MacroStatement();
            statementInBlock.Name = methodInBlockName;
            statementInBlock.Arguments.Add(new StringLiteralExpression("arg1"));

            MacroStatement fixture = GetMacroStatement("DoStuff", statementInBlock);

            BlockToArgumentsTransformer transformer = new BlockToArgumentsTransformer("DoStuff");
            transformer.Visit(fixture);

            MethodInvocationExpression mie = fixture.Arguments[0] as MethodInvocationExpression;

            Assert.IsNotNull(mie, "Could not cast argument one of MacroStatement to MethodInvocationExpression.");
            Assert.AreEqual(methodInBlockName, (mie.Target as ReferenceExpression).Name);
        }
Esempio n. 5
0
        public void Expression_statement_is_transformed()
        {
            LiteralExpression   exp = new StringLiteralExpression("arg1");
            ExpressionStatement doStuffStatement = new ExpressionStatement(exp);

            MacroStatement fixture = new MacroStatement(new LexicalInfo("test", 1, 1));

            fixture.Name = "DoStuff";
            fixture.Body = new Block();
            fixture.Body.Add(doStuffStatement);

            BlockToArgumentsTransformer transformer = new BlockToArgumentsTransformer("DoStuff");

            transformer.Visit(fixture);

            Assert.Equal(exp, fixture.Arguments[0]);
            Assert.True(fixture.Body.IsEmpty, "MacroStatement block should be empty after transformation.");
        }
Esempio n. 6
0
        public void MacroStatement_with_arguments_is_transformed_to_MethodInvocationExpression()
        {
            const string methodInBlockName = "some_method";

            MacroStatement statementInBlock = new MacroStatement();

            statementInBlock.Name = methodInBlockName;
            statementInBlock.Arguments.Add(new StringLiteralExpression("arg1"));

            MacroStatement fixture = GetMacroStatement("DoStuff", statementInBlock);

            BlockToArgumentsTransformer transformer = new BlockToArgumentsTransformer("DoStuff");

            transformer.Visit(fixture);

            MethodInvocationExpression mie = fixture.Arguments[0] as MethodInvocationExpression;

            Assert.NotNull(mie);//, "Could not cast argument one of MacroStatement to MethodInvocationExpression."
            Assert.Equal(methodInBlockName, (mie.Target as ReferenceExpression).Name);
        }
        public void MacroStatement_with_block_is_transformed_to_MethodInvocationExpression()
        {
            const string methodInBlockName = "some_method";
            const string doStuff = "DoStuff";

            Expression argInBlockExpression = new StringLiteralExpression("argInBlock");
            Statement argInBlockStatement = new ExpressionStatement(argInBlockExpression);

            MacroStatement statementInBlock = GetMacroStatement(methodInBlockName, argInBlockStatement);

            MacroStatement doStuffStatement = GetMacroStatement(doStuff, statementInBlock);

            BlockToArgumentsTransformer transformer = new BlockToArgumentsTransformer(doStuff, methodInBlockName);
            transformer.Visit(doStuffStatement);

            MethodInvocationExpression mie = doStuffStatement.Arguments[0] as MethodInvocationExpression;

            Assert.IsNotNull(mie, "Could not cast argument one of MacroStatement to MethodInvocationExpression.");
            Assert.AreEqual(methodInBlockName, (mie.Target as ReferenceExpression).Name);
            Assert.IsAssignableFrom(typeof (BlockExpression), mie.Arguments[0]);
        }
Esempio n. 8
0
        public void MacroStatement_with_block_is_transformed_to_MethodInvocationExpression()
        {
            const string methodInBlockName = "some_method";
            const string doStuff           = "DoStuff";

            Expression argInBlockExpression = new StringLiteralExpression("argInBlock");
            Statement  argInBlockStatement  = new ExpressionStatement(argInBlockExpression);

            MacroStatement statementInBlock = GetMacroStatement(methodInBlockName, argInBlockStatement);

            MacroStatement doStuffStatement = GetMacroStatement(doStuff, statementInBlock);

            BlockToArgumentsTransformer transformer = new BlockToArgumentsTransformer(doStuff, methodInBlockName);

            transformer.Visit(doStuffStatement);

            MethodInvocationExpression mie = doStuffStatement.Arguments[0] as MethodInvocationExpression;

            Assert.NotNull(mie);
            Assert.Equal(methodInBlockName, (mie.Target as ReferenceExpression).Name);
            Assert.IsAssignableFrom(typeof(BlockExpression), mie.Arguments[0]);
        }