public void ShouldAssignAVariableInAConditionalTest() { var intVariable = Expression.Variable(typeof(int), "i"); var assignVariable = Expression.Assign(intVariable, Expression.Constant(10)); var isAssignmentFive = Expression.Equal(assignVariable, Expression.Constant(5)); var ifFiveDoNothing = Expression.IfThen(isAssignmentFive, Expression.Empty()); var translated = ToReadableString(ifFiveDoNothing); const string EXPECTED = @" if ((i = 10) == 5) { }"; translated.ShouldBe(EXPECTED.TrimStart()); }
public void ShouldTranslateATryCatch() { var writeHello = CreateLambda(() => Console.Write("Hello")); var exception = Expression.Variable(typeof(TimeoutException), "timeoutEx"); var timeoutCatch = Expression.Catch(exception, Expression.Empty()); var tryCatch = Expression.TryCatch(writeHello.Body, timeoutCatch); var translated = ToReadableString(tryCatch); const string EXPECTED = @" try { Console.Write(""Hello""); } catch (TimeoutException) { }"; translated.ShouldBe(EXPECTED.TrimStart()); }
public void ShouldTranslateATryWithAFilteredCatch() { var writeHello = CreateLambda(() => Console.Write("Hello")); var filter = CreateLambda((TimeoutException timeoutEx) => timeoutEx.Data != null); var exception = filter.Parameters.First(); var timeoutCatch = Expression.Catch(exception, Expression.Empty(), filter.Body); var tryCatch = Expression.TryCatch(writeHello.Body, timeoutCatch); var translated = ToReadableString(tryCatch); const string EXPECTED = @" try { Console.Write(""Hello""); } catch (TimeoutException timeoutEx) when (timeoutEx.Data != null) { }"; translated.ShouldBe(EXPECTED.TrimStart()); }