示例#1
0
        public void ShouldTranslateAMultipleClauseIfStatement()
        {
            var intVariable            = Expression.Variable(typeof(int), "i");
            var one                    = Expression.Constant(1);
            var intVariableLessThanOne = Expression.LessThan(intVariable, one);
            var intVariableMoreThanOne = Expression.GreaterThan(intVariable, one);
            var intVariableInRange     = Expression.AndAlso(intVariableLessThanOne, intVariableMoreThanOne);
            var writeHello             = CreateLambda(() => Console.WriteLine("Hello"));
            var ifLessThanOneThenWrite = Expression.IfThen(intVariableInRange, writeHello.Body);

            var translated = ToReadableString(ifLessThanOneThenWrite);

            const string EXPECTED = @"
if ((i < 1) && (i > 1))
{
    Console.WriteLine(""Hello"");
}";

            translated.ShouldBe(EXPECTED.TrimStart());
        }
示例#2
0
        public void ShouldBreakLongMultipleConditionsOntoMultipleLines()
        {
            var intVariable1          = Expression.Variable(typeof(int), "thisVariableHasALongName");
            var intVariable2          = Expression.Variable(typeof(int), "thisOtherVariableHasALongNameToo");
            var int1IsGreaterThanInt2 = Expression.GreaterThan(intVariable1, intVariable2);
            var int1IsNotEqualToInt2  = Expression.NotEqual(intVariable1, intVariable2);

            var intIsInRange     = Expression.AndAlso(int1IsGreaterThanInt2, int1IsNotEqualToInt2);
            var writeYo          = CreateLambda(() => Console.WriteLine("Yo!"));
            var ifInRangeWriteYo = Expression.IfThen(intIsInRange, writeYo.Body);


            var translated = ToReadableString(ifInRangeWriteYo);

            const string EXPECTED = @"
if ((thisVariableHasALongName > thisOtherVariableHasALongNameToo) &&
    (thisVariableHasALongName != thisOtherVariableHasALongNameToo))
{
    Console.WriteLine(""Yo!"");
}";

            translated.ShouldBe(EXPECTED.TrimStart());
        }