public void ShouldParseSqlDate()
        {
            var stuff = new SqlMergeQueryObject.ExpressionToSql();

            var start = new DateTime(2019, 7, 1);
            var end   = new DateTime(2019, 7, 2);
            var sql1  = stuff.GenerateWhereClause <ExpressionToSqlTestsDto>(w => w.TimeStamp >= start && w.TimeStamp <= end);

            sql1.Should().Be("WHERE (([TimeStamp] >= '2019-07-01') AND ([TimeStamp] <= '2019-07-02'))");

            var sql2 = stuff.GenerateWhereClause <ExpressionToSqlTestsDto>(w => w.TimeStamp > start || w.TimeStamp < end);

            sql2.Should().Be("WHERE (([TimeStamp] > '2019-07-01') OR ([TimeStamp] < '2019-07-02'))");
        }
        public void ShouldParseSingleOperationWithVariable()
        {
            var stuff = new SqlMergeQueryObject.ExpressionToSql();

            var abc  = 10;
            var sql1 = stuff.GenerateWhereClause <ExpressionToSqlTestsDto>(w => w.IntValue > abc);

            sql1.Should().Be("WHERE ([IntValue] > 10)");

            var sql1a = stuff.GenerateWhereClause <ExpressionToSqlTestsDto>(w => abc < w.IntValue);

            sql1a.Should().Be("WHERE (10 < [IntValue])");

            var eee  = 10;
            var abc2 = eee;
            var sql2 = stuff.GenerateWhereClause <ExpressionToSqlTestsDto>(w => w.IntValue > abc2);

            sql2.Should().Be("WHERE ([IntValue] > 10)");
        }
        public void ShouldParseSingleOperation()
        {
            var stuff = new SqlMergeQueryObject.ExpressionToSql();

            var sql1aa = stuff.GenerateWhereClause <ExpressionToSqlTestsDto>(w => w.IntValue >= 10);

            sql1aa.Should().Be("WHERE ([IntValue] >= 10)");

            var sql1bb = stuff.GenerateWhereClause <ExpressionToSqlTestsDto>(w => w.IntValue <= 10);

            sql1bb.Should().Be("WHERE ([IntValue] <= 10)");

            var sql1 = stuff.GenerateWhereClause <ExpressionToSqlTestsDto>(w => w.IntValue > 10);

            sql1.Should().Be("WHERE ([IntValue] > 10)");

            var sql1a = stuff.GenerateWhereClause <ExpressionToSqlTestsDto>(w => w.IntValue < 10);

            sql1a.Should().Be("WHERE ([IntValue] < 10)");

            var sql2 = stuff.GenerateWhereClause <ExpressionToSqlTestsDto>(w => 10 > w.IntValue);

            sql2.Should().Be("WHERE (10 > [IntValue])");

            var sql3 = stuff.GenerateWhereClause <ExpressionToSqlTestsDto>(w => w.TextValue == "10");

            sql3.Should().Be("WHERE ([TextValue] = '10')");

            var sql4 = stuff.GenerateWhereClause <ExpressionToSqlTestsDto>(w => "10" == w.TextValue);

            sql4.Should().Be("WHERE ('10' = [TextValue])");

            var sql5 = stuff.GenerateWhereClause <ExpressionToSqlTestsDto>(w => w.TextValue != "10");

            sql5.Should().Be("WHERE ([TextValue] <> '10')");

            var sql6 = stuff.GenerateWhereClause <ExpressionToSqlTestsDto>(w => "10" != w.TextValue);

            sql6.Should().Be("WHERE ('10' <> [TextValue])");
        }
        public void ShouldParseMultipleOperation()
        {
            var stuff = new SqlMergeQueryObject.ExpressionToSql();

            var sql1 = stuff.GenerateWhereClause <ExpressionToSqlTestsDto>(w => w.IntValue > 10 && w.TextValue == "Jason");

            sql1.Should().Be("WHERE (([IntValue] > 10) AND ([TextValue] = 'Jason'))");

            var sql2b = stuff.GenerateWhereClause <ExpressionToSqlTestsDto>(w =>
                                                                            w.IntValue > 10 || w.TextValue == "Jason" && w.DecimalValue == 100m);

            sql2b.Should().Be("WHERE (([IntValue] > 10) OR (([TextValue] = 'Jason') AND ([DecimalValue] = 100)))");

            var sql2a = stuff.GenerateWhereClause <ExpressionToSqlTestsDto>(w =>
                                                                            (w.IntValue > 10 || w.TextValue == "Jason") && w.DecimalValue == 100m);

            sql2a.Should().Be("WHERE ((([IntValue] > 10) OR ([TextValue] = 'Jason')) AND ([DecimalValue] = 100))");

            var sql2 = stuff.GenerateWhereClause <ExpressionToSqlTestsDto>(w =>
                                                                           w.IntValue > 10 && (w.TextValue == "Jason" || w.DecimalValue == 100m));

            sql2.Should().Be("WHERE (([IntValue] > 10) AND (([TextValue] = 'Jason') OR ([DecimalValue] = 100)))");
        }