Пример #1
0
        //-------------------------------------------------------------------------------------------------------------------------------------------------

        public static Operand <T> operator !(Operand <T> x)
        {
            if (TypeTemplate.Resolve <T>() == typeof(bool))
            {
                object result = new UnaryExpressionOperand <bool, bool>(
                    @operator: new UnaryOperators.OperatorLogicalNot(),
                    operand: (IOperand <bool>)x.OrNullConstant <T>());

                return((Operand <T>)result);
            }
            else
            {
                throw new ArgumentException("Operator ! can only be applied to type Boolean.");
            }
        }
Пример #2
0
        public void RegisterExpressionStatement_AddedToStatementList()
        {
            //-- Arrange

            var statements = new StatementBlock();
            var rootScope  = new StatementScope(m_Class, m_Method, statements);

            //-- Act

            var expression = new UnaryExpressionOperand <int, int>(new UnaryOperators.OperatorNegation <int>(), new Constant <int>(111));

            //-- Assert

            Assert.That(statements.Count, Is.EqualTo(1));
            Assert.That(statements[0], Is.InstanceOf <ExpressionStatement>());
            Assert.That(((ExpressionStatement)statements[0]).Expression, Is.SameAs(expression));
        }
Пример #3
0
        public void RegisterExpressionAndContainingExpression_ContainedExpressionConsumed()
        {
            //-- Arrange

            var statements = new StatementBlock();
            var rootScope  = new StatementScope(m_Class, m_Method, statements);

            //-- Act

            var innerExpression = new UnaryExpressionOperand <int, int>(new UnaryOperators.OperatorNegation <int>(), m_Method.TransparentWriter.Const(111));
            var outerExpression = new UnaryExpressionOperand <int, int>(new UnaryOperators.OperatorPlus <int>(), innerExpression);

            //-- Assert

            Assert.That(statements.Count, Is.EqualTo(1));
            Assert.That(statements[0], Is.InstanceOf <ExpressionStatement>());
            Assert.That(((ExpressionStatement)statements[0]).Expression, Is.SameAs(outerExpression));
        }