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()); }
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()); }