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());
        }
Example #2
0
        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());
        }