public void ShouldIncludeAReturnKeywordForACoalesce() { var stringVariable1 = Expression.Variable(typeof(string), "myString"); var stringVariable2 = Expression.Variable(typeof(string), "yourString"); var assignStrings = Expression.Assign(stringVariable1, stringVariable2); var stringEmpty = Expression.Field(null, typeof(string), "Empty"); var variableOrNull = Expression.Coalesce(stringVariable1, stringEmpty); var coalesceBlock = Expression.Block(assignStrings, variableOrNull); var translated = ToReadableString(coalesceBlock); const string EXPECTED = @" var myString = yourString; return (myString ?? string.Empty);"; translated.ShouldBe(EXPECTED.TrimStart()); }
public void ShouldTranslateAnIfStatementWithAConditional() { var guidVariable = Expression.Variable(typeof(Guid), "guid"); var defaultGuid = Expression.Default(typeof(Guid)); var guidNotDefault = Expression.NotEqual(guidVariable, defaultGuid); var guidEmpty = Expression.Field(null, typeof(Guid), "Empty"); var guidNotEmpty = Expression.NotEqual(guidVariable, guidEmpty); var falseConstant = Expression.Constant(false); var guidNotEmptyOrFalse = Expression.Condition(guidNotDefault, guidNotEmpty, falseConstant); var writeGuidFun = CreateLambda(() => Console.Write("GUID FUN!")); var ifNotEmptyThenWrite = Expression.IfThen(guidNotEmptyOrFalse, writeGuidFun.Body); var translated = ToReadableString(ifNotEmptyThenWrite); const string EXPECTED = @" if ((guid != default(Guid)) ? guid != Guid.Empty : false) { Console.Write(""GUID FUN!""); }"; translated.ShouldBe(EXPECTED.TrimStart()); }