public async Task Can_pass_single_string(bool async, bool cancellation)
        {
            using var context = new ThudContext();
            var commandBuilder = (TestRawSqlCommandBuilder)context.GetService <IRawSqlCommandBuilder>();

            if (async)
            {
                if (cancellation)
                {
                    var cancellationToken = new CancellationToken();
                    await context.Database.ExecuteSqlRawAsync("<Some query>", new[] { "Branston" }, cancellationToken);
                }
                else
                {
                    await context.Database.ExecuteSqlRawAsync("<Some query>", "Branston");
                }
            }
            else
            {
                context.Database.ExecuteSqlRaw("<Some query>", "Branston");
            }

            Assert.Equal("<Some query>", commandBuilder.Sql);
            Assert.Equal(
                new List <object> {
                "Branston"
            }, commandBuilder.Parameters);
        }
        public async Task Can_pass_array_of_int_params_as_object(bool async, bool cancellation)
        {
            using var context = new ThudContext();
            var commandBuilder = (TestRawSqlCommandBuilder)context.GetService <IRawSqlCommandBuilder>();

            if (async)
            {
                if (cancellation)
                {
                    var cancellationToken = new CancellationToken();
                    await context.Database.ExecuteSqlRawAsync("<Some query>", new object[] { 1, 2 }, cancellationToken);
                }
                else
                {
                    await context.Database.ExecuteSqlRawAsync("<Some query>", 1, 2);
                }
            }
            else
            {
                context.Database.ExecuteSqlRaw("<Some query>", 1, 2);
            }

            Assert.Equal("<Some query>", commandBuilder.Sql);
            Assert.Equal(
                new List <object> {
                1, 2
            }, commandBuilder.Parameters);
        }
        public async Task Can_pass_no_params(bool async, bool cancellation)
        {
            using (var context = new ThudContext())
            {
                var commandBuilder = (TestRawSqlCommandBuilder)context.GetService <IRawSqlCommandBuilder>();

                if (async)
                {
                    if (cancellation)
                    {
                        var cancellationToken = new CancellationToken();
                        await context.Database.ExecuteSqlCommandAsync("<Some query>", cancellationToken);
                    }
                    else
                    {
                        await context.Database.ExecuteSqlCommandAsync("<Some query>");
                    }
                }
                else
                {
                    context.Database.ExecuteSqlCommand("<Some query>");
                }

                Assert.Equal("<Some query>", commandBuilder.Sql);
                Assert.Equal(new List <object>(), commandBuilder.Parameters);
            }
        }
        public async Task Can_pass_ints_as_params(bool async)
        {
            using var context = new ThudContext();
            var commandBuilder = (TestRawSqlCommandBuilder)context.GetService <IRawSqlCommandBuilder>();

            if (async)
            {
                await context.Database.ExecuteSqlRawAsync("<Some query>", 1, 2);
            }
            else
            {
                context.Database.ExecuteSqlRaw("<Some query>", 1, 2);
            }

            Assert.Equal("<Some query>", commandBuilder.Sql);
            Assert.Equal(
                new List <object> {
                1, 2
            }, commandBuilder.Parameters);
        }