示例#1
0
        public string MixedExpressionSimpleArithmetic()
        {
            // Expression: 2 * 3 + 10
            var translationUnit = BinaryExpressionTranslationUnit.Create(
                BinaryExpressionTranslationUnit.Create(
                    LiteralTranslationUnit <int> .Create(2),
                    LiteralTranslationUnit <int> .Create(3),
                    OperatorToken.Multiplication),
                LiteralTranslationUnit <int> .Create(10),
                OperatorToken.Addition);

            return(translationUnit.Translate());
        }
示例#2
0
        public void IntegerDivide()
        {
            ITranslationUnit number1 = Expressions.RandomIntegerLiteral;
            ITranslationUnit number2 = Expressions.RandomIntegerLiteral;

            ITranslationUnit translationUnit = BinaryExpressionTranslationUnit.Create(number1, number2, OperatorToken.Divide);

            string typescript = translationUnit.Translate();

            new Utils.FileWriter(TestSuite.Context).WriteToFile(typescript,
                                                                string.Format("{0}.Code", nameof(this.IntegerDivide)),
                                                                Utils.FileType.TypeScript);

            Assert.AreEqual(string.Format("{0} / {1}", number1.Translate(), number2.Translate()),
                            typescript, "Expression does not match expected!");
        }
示例#3
0
        private static ITranslationUnit BuildBinaryExpressionTranslationUnit(BinaryExpressionSyntax expression, SemanticModel semanticModel)
        {
            OperatorToken token = OperatorToken.Undefined;

            switch (expression.Kind())
            {
            case SyntaxKind.AddExpression:
                token = OperatorToken.Addition;
                break;

            case SyntaxKind.MultiplyExpression:
                token = OperatorToken.Multiplication;
                break;

            case SyntaxKind.DivideExpression:
                token = OperatorToken.Divide;
                break;

            case SyntaxKind.SubtractExpression:
                token = OperatorToken.Subtraction;
                break;

            case SyntaxKind.EqualsExpression:
                token = OperatorToken.LogicalEquals;
                break;

            case SyntaxKind.NotEqualsExpression:
                token = OperatorToken.NotEquals;
                break;
            }

            if (token == OperatorToken.Undefined)
            {
                throw new InvalidOperationException("Binary operator could not be detected!");
            }

            BinaryExpression binaryExpressionHelper = new BinaryExpression(expression, semanticModel);
            ITranslationUnit leftHandOperand        = new ExpressionTranslationUnitBuilder(binaryExpressionHelper.LeftHandOperand, semanticModel).Build();
            ITranslationUnit rightHandOperand       = new ExpressionTranslationUnitBuilder(binaryExpressionHelper.RightHandOperand, semanticModel).Build();

            return(BinaryExpressionTranslationUnit.Create(leftHandOperand, rightHandOperand, token));
        }
示例#4
0
        public string MixedExpressionSimpleParentheticArithmetic()
        {
            // Expression: 2 * 3 + 100++ * (200 - 300)
            var translationUnit = BinaryExpressionTranslationUnit.Create(
                BinaryExpressionTranslationUnit.Create(
                    LiteralTranslationUnit <int> .Create(2),
                    LiteralTranslationUnit <int> .Create(3),
                    OperatorToken.Multiplication),
                BinaryExpressionTranslationUnit.Create(
                    UnaryExpressionTranslationUnit.Create(
                        LiteralTranslationUnit <int> .Create(100),
                        OperatorToken.Increment,
                        UnaryExpressionTranslationUnit.UnaryPosition.Postfix),
                    ParenthesizedExpressionTranslationUnit.Create(
                        BinaryExpressionTranslationUnit.Create(
                            LiteralTranslationUnit <int> .Create(200),
                            LiteralTranslationUnit <int> .Create(300),
                            OperatorToken.Subtraction)),
                    OperatorToken.Multiplication),
                OperatorToken.Addition);

            return(translationUnit.Translate());
        }
 /// <summary>
 ///
 /// </summary>
 /// <param name="operatorToken"></param>
 /// <param name="number1"></param>
 /// <param name="number2"></param>
 /// <returns></returns>
 public static ITranslationUnit BuildExpressionTranslationUnit(OperatorToken operatorToken, int number1, int number2)
 {
     return(BinaryExpressionTranslationUnit.Create(
                LiteralTranslationUnit <int> .Create(number1), LiteralTranslationUnit <int> .Create(number2), operatorToken));
 }