You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
449 lines
18 KiB
C#
449 lines
18 KiB
C#
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
|
|
|
using System.Threading.Tasks;
|
|
using EntityFrameworkCore.Jet.FunctionalTests.TestUtilities;
|
|
using Microsoft.EntityFrameworkCore.Query;
|
|
using Microsoft.EntityFrameworkCore.TestUtilities;
|
|
using Xunit.Abstractions;
|
|
|
|
namespace EntityFrameworkCore.Jet.FunctionalTests.Query
|
|
{
|
|
public class FunkyDataQueryJetTest : FunkyDataQueryTestBase<FunkyDataQueryJetTest.FunkyDataQueryJetFixture>
|
|
{
|
|
public FunkyDataQueryJetTest(FunkyDataQueryJetFixture fixture, ITestOutputHelper testOutputHelper)
|
|
: base(fixture)
|
|
{
|
|
Fixture.TestSqlLoggerFactory.Clear();
|
|
//Fixture.TestSqlLoggerFactory.SetTestOutputHelper(testOutputHelper);
|
|
}
|
|
|
|
public override async Task String_contains_on_argument_with_wildcard_constant(bool isAsync)
|
|
{
|
|
await base.String_contains_on_argument_with_wildcard_constant(isAsync);
|
|
|
|
AssertSql(
|
|
@"SELECT [f].[FirstName]
|
|
FROM [FunkyCustomers] AS [f]
|
|
WHERE CHARINDEX('%B', [f].[FirstName]) > 0",
|
|
//
|
|
@"SELECT [f].[FirstName]
|
|
FROM [FunkyCustomers] AS [f]
|
|
WHERE CHARINDEX('a_', [f].[FirstName]) > 0",
|
|
//
|
|
@"SELECT [f].[FirstName]
|
|
FROM [FunkyCustomers] AS [f]
|
|
WHERE CHARINDEX(NULL, [f].[FirstName]) > 0",
|
|
//
|
|
@"SELECT [f].[FirstName]
|
|
FROM [FunkyCustomers] AS [f]",
|
|
//
|
|
@"SELECT [f].[FirstName]
|
|
FROM [FunkyCustomers] AS [f]
|
|
WHERE CHARINDEX('_Ba_', [f].[FirstName]) > 0",
|
|
//
|
|
@"SELECT [f].[FirstName]
|
|
FROM [FunkyCustomers] AS [f]
|
|
WHERE CHARINDEX('%B%a%r', [f].[FirstName]) <= 0",
|
|
//
|
|
@"SELECT [f].[FirstName]
|
|
FROM [FunkyCustomers] AS [f]
|
|
WHERE False = True",
|
|
//
|
|
@"SELECT [f].[FirstName]
|
|
FROM [FunkyCustomers] AS [f]
|
|
WHERE CHARINDEX(NULL, [f].[FirstName]) <= 0");
|
|
}
|
|
|
|
public override async Task String_contains_on_argument_with_wildcard_parameter(bool isAsync)
|
|
{
|
|
await base.String_contains_on_argument_with_wildcard_parameter(isAsync);
|
|
|
|
AssertSql(
|
|
@"@__prm1_0='%B' (Size = 4000)
|
|
|
|
SELECT [f].[FirstName]
|
|
FROM [FunkyCustomers] AS [f]
|
|
WHERE (@__prm1_0 = '') OR (CHARINDEX(@__prm1_0, [f].[FirstName]) > 0)",
|
|
//
|
|
@"@__prm2_0='a_' (Size = 4000)
|
|
|
|
SELECT [f].[FirstName]
|
|
FROM [FunkyCustomers] AS [f]
|
|
WHERE (@__prm2_0 = '') OR (CHARINDEX(@__prm2_0, [f].[FirstName]) > 0)",
|
|
//
|
|
@"@__prm3_0=NULL (Size = 4000)
|
|
|
|
SELECT [f].[FirstName]
|
|
FROM [FunkyCustomers] AS [f]
|
|
WHERE CHARINDEX(@__prm3_0, [f].[FirstName]) > 0",
|
|
//
|
|
@"@__prm4_0='' (Size = 4000)
|
|
|
|
SELECT [f].[FirstName]
|
|
FROM [FunkyCustomers] AS [f]
|
|
WHERE (@__prm4_0 = '') OR (CHARINDEX(@__prm4_0, [f].[FirstName]) > 0)",
|
|
//
|
|
@"@__prm5_0='_Ba_' (Size = 4000)
|
|
|
|
SELECT [f].[FirstName]
|
|
FROM [FunkyCustomers] AS [f]
|
|
WHERE (@__prm5_0 = '') OR (CHARINDEX(@__prm5_0, [f].[FirstName]) > 0)",
|
|
//
|
|
@"@__prm6_0='%B%a%r' (Size = 4000)
|
|
|
|
SELECT [f].[FirstName]
|
|
FROM [FunkyCustomers] AS [f]
|
|
WHERE (@__prm6_0 <> '') AND (CHARINDEX(@__prm6_0, [f].[FirstName]) <= 0)",
|
|
//
|
|
@"@__prm7_0='' (Size = 4000)
|
|
|
|
SELECT [f].[FirstName]
|
|
FROM [FunkyCustomers] AS [f]
|
|
WHERE (@__prm7_0 <> '') AND (CHARINDEX(@__prm7_0, [f].[FirstName]) <= 0)",
|
|
//
|
|
@"@__prm8_0=NULL (Size = 4000)
|
|
|
|
SELECT [f].[FirstName]
|
|
FROM [FunkyCustomers] AS [f]
|
|
WHERE CHARINDEX(@__prm8_0, [f].[FirstName]) <= 0");
|
|
}
|
|
|
|
public override async Task String_contains_on_argument_with_wildcard_column(bool isAsync)
|
|
{
|
|
await base.String_contains_on_argument_with_wildcard_column(isAsync);
|
|
|
|
AssertSql(
|
|
@"SELECT [f].[FirstName] AS [fn], [f0].[LastName] AS [ln]
|
|
FROM [FunkyCustomers] AS [f],
|
|
[FunkyCustomers] AS [f0]
|
|
WHERE ([f0].[LastName] = '') OR (CHARINDEX([f0].[LastName], [f].[FirstName]) > 0)");
|
|
}
|
|
|
|
public override async Task String_contains_on_argument_with_wildcard_column_negated(bool isAsync)
|
|
{
|
|
await base.String_contains_on_argument_with_wildcard_column_negated(isAsync);
|
|
|
|
AssertSql(
|
|
@"SELECT [f].[FirstName] AS [fn], [f0].[LastName] AS [ln]
|
|
FROM [FunkyCustomers] AS [f],
|
|
[FunkyCustomers] AS [f0]
|
|
WHERE (([f0].[LastName] <> '') OR [f0].[LastName] IS NULL) AND (CHARINDEX([f0].[LastName], [f].[FirstName]) <= 0)");
|
|
}
|
|
|
|
public override async Task String_starts_with_on_argument_with_wildcard_constant(bool isAsync)
|
|
{
|
|
await base.String_starts_with_on_argument_with_wildcard_constant(isAsync);
|
|
|
|
AssertSql(
|
|
@"SELECT [f].[FirstName]
|
|
FROM [FunkyCustomers] AS [f]
|
|
WHERE [f].[FirstName] IS NOT NULL AND ([f].[FirstName] LIKE '\%B%' ESCAPE '\')",
|
|
//
|
|
@"SELECT [f].[FirstName]
|
|
FROM [FunkyCustomers] AS [f]
|
|
WHERE [f].[FirstName] IS NOT NULL AND ([f].[FirstName] LIKE 'a\_%' ESCAPE '\')",
|
|
//
|
|
@"SELECT [f].[FirstName]
|
|
FROM [FunkyCustomers] AS [f]
|
|
WHERE False = True",
|
|
//
|
|
@"SELECT [f].[FirstName]
|
|
FROM [FunkyCustomers] AS [f]",
|
|
//
|
|
@"SELECT [f].[FirstName]
|
|
FROM [FunkyCustomers] AS [f]
|
|
WHERE [f].[FirstName] IS NOT NULL AND ([f].[FirstName] LIKE '\_Ba\_%' ESCAPE '\')",
|
|
//
|
|
@"SELECT [f].[FirstName]
|
|
FROM [FunkyCustomers] AS [f]
|
|
WHERE [f].[FirstName] IS NOT NULL AND NOT ([f].[FirstName] LIKE '\%B\%a\%r%' ESCAPE '\')",
|
|
//
|
|
@"SELECT [f].[FirstName]
|
|
FROM [FunkyCustomers] AS [f]
|
|
WHERE False = True",
|
|
//
|
|
@"SELECT [f].[FirstName]
|
|
FROM [FunkyCustomers] AS [f]
|
|
WHERE False = True");
|
|
}
|
|
|
|
public override async Task String_starts_with_on_argument_with_wildcard_parameter(bool isAsync)
|
|
{
|
|
await base.String_starts_with_on_argument_with_wildcard_parameter(isAsync);
|
|
|
|
AssertSql(
|
|
@"@__prm1_0='%B' (Size = 4000)
|
|
|
|
SELECT [f].[FirstName]
|
|
FROM [FunkyCustomers] AS [f]
|
|
WHERE (@__prm1_0 = '') OR ([f].[FirstName] IS NOT NULL AND (LEFT([f].[FirstName], LEN(@__prm1_0)) = @__prm1_0))",
|
|
//
|
|
@"@__prm2_0='a_' (Size = 4000)
|
|
|
|
SELECT [f].[FirstName]
|
|
FROM [FunkyCustomers] AS [f]
|
|
WHERE (@__prm2_0 = '') OR ([f].[FirstName] IS NOT NULL AND (LEFT([f].[FirstName], LEN(@__prm2_0)) = @__prm2_0))",
|
|
//
|
|
@"SELECT [f].[FirstName]
|
|
FROM [FunkyCustomers] AS [f]
|
|
WHERE False = True",
|
|
//
|
|
@"@__prm4_0='' (Size = 4000)
|
|
|
|
SELECT [f].[FirstName]
|
|
FROM [FunkyCustomers] AS [f]
|
|
WHERE (@__prm4_0 = '') OR ([f].[FirstName] IS NOT NULL AND (LEFT([f].[FirstName], LEN(@__prm4_0)) = @__prm4_0))",
|
|
//
|
|
@"@__prm5_0='_Ba_' (Size = 4000)
|
|
|
|
SELECT [f].[FirstName]
|
|
FROM [FunkyCustomers] AS [f]
|
|
WHERE (@__prm5_0 = '') OR ([f].[FirstName] IS NOT NULL AND (LEFT([f].[FirstName], LEN(@__prm5_0)) = @__prm5_0))",
|
|
//
|
|
@"@__prm6_0='%B%a%r' (Size = 4000)
|
|
|
|
SELECT [f].[FirstName]
|
|
FROM [FunkyCustomers] AS [f]
|
|
WHERE (@__prm6_0 <> '') AND ([f].[FirstName] IS NOT NULL AND ((LEFT([f].[FirstName], LEN(@__prm6_0)) <> @__prm6_0) OR LEFT([f].[FirstName], LEN(@__prm6_0)) IS NULL))",
|
|
//
|
|
@"@__prm7_0='' (Size = 4000)
|
|
|
|
SELECT [f].[FirstName]
|
|
FROM [FunkyCustomers] AS [f]
|
|
WHERE (@__prm7_0 <> '') AND ([f].[FirstName] IS NOT NULL AND ((LEFT([f].[FirstName], LEN(@__prm7_0)) <> @__prm7_0) OR LEFT([f].[FirstName], LEN(@__prm7_0)) IS NULL))",
|
|
//
|
|
@"SELECT [f].[FirstName]
|
|
FROM [FunkyCustomers] AS [f]
|
|
WHERE False = True");
|
|
}
|
|
|
|
public override async Task String_starts_with_on_argument_with_bracket(bool isAsync)
|
|
{
|
|
await base.String_starts_with_on_argument_with_bracket(isAsync);
|
|
|
|
AssertSql(
|
|
@"SELECT [f].[Id], [f].[FirstName], [f].[LastName], [f].[NullableBool]
|
|
FROM [FunkyCustomers] AS [f]
|
|
WHERE [f].[FirstName] IS NOT NULL AND ([f].[FirstName] LIKE '\[%' ESCAPE '\')",
|
|
//
|
|
@"SELECT [f].[Id], [f].[FirstName], [f].[LastName], [f].[NullableBool]
|
|
FROM [FunkyCustomers] AS [f]
|
|
WHERE [f].[FirstName] IS NOT NULL AND ([f].[FirstName] LIKE 'B\[%' ESCAPE '\')",
|
|
//
|
|
@"SELECT [f].[Id], [f].[FirstName], [f].[LastName], [f].[NullableBool]
|
|
FROM [FunkyCustomers] AS [f]
|
|
WHERE [f].[FirstName] IS NOT NULL AND ([f].[FirstName] LIKE 'B\[\[a^%' ESCAPE '\')",
|
|
//
|
|
@"@__prm1_0='[' (Size = 4000)
|
|
|
|
SELECT [f].[Id], [f].[FirstName], [f].[LastName], [f].[NullableBool]
|
|
FROM [FunkyCustomers] AS [f]
|
|
WHERE (@__prm1_0 = '') OR ([f].[FirstName] IS NOT NULL AND (LEFT([f].[FirstName], LEN(@__prm1_0)) = @__prm1_0))",
|
|
//
|
|
@"@__prm2_0='B[' (Size = 4000)
|
|
|
|
SELECT [f].[Id], [f].[FirstName], [f].[LastName], [f].[NullableBool]
|
|
FROM [FunkyCustomers] AS [f]
|
|
WHERE (@__prm2_0 = '') OR ([f].[FirstName] IS NOT NULL AND (LEFT([f].[FirstName], LEN(@__prm2_0)) = @__prm2_0))",
|
|
//
|
|
@"@__prm3_0='B[[a^' (Size = 4000)
|
|
|
|
SELECT [f].[Id], [f].[FirstName], [f].[LastName], [f].[NullableBool]
|
|
FROM [FunkyCustomers] AS [f]
|
|
WHERE (@__prm3_0 = '') OR ([f].[FirstName] IS NOT NULL AND (LEFT([f].[FirstName], LEN(@__prm3_0)) = @__prm3_0))",
|
|
//
|
|
@"SELECT [f].[Id], [f].[FirstName], [f].[LastName], [f].[NullableBool]
|
|
FROM [FunkyCustomers] AS [f]
|
|
WHERE ([f].[LastName] = '') OR ([f].[FirstName] IS NOT NULL AND ([f].[LastName] IS NOT NULL AND (LEFT([f].[FirstName], LEN([f].[LastName])) = [f].[LastName])))");
|
|
}
|
|
|
|
public override async Task String_starts_with_on_argument_with_wildcard_column(bool isAsync)
|
|
{
|
|
await base.String_starts_with_on_argument_with_wildcard_column(isAsync);
|
|
|
|
AssertSql(
|
|
@"SELECT [f].[FirstName] AS [fn], [f0].[LastName] AS [ln]
|
|
FROM [FunkyCustomers] AS [f],
|
|
[FunkyCustomers] AS [f0]
|
|
WHERE ([f0].[LastName] = '') OR ([f].[FirstName] IS NOT NULL AND ([f0].[LastName] IS NOT NULL AND (LEFT([f].[FirstName], LEN([f0].[LastName])) = [f0].[LastName])))");
|
|
}
|
|
|
|
public override async Task String_starts_with_on_argument_with_wildcard_column_negated(bool isAsync)
|
|
{
|
|
await base.String_starts_with_on_argument_with_wildcard_column_negated(isAsync);
|
|
|
|
AssertSql(
|
|
@"SELECT [f].[FirstName] AS [fn], [f0].[LastName] AS [ln]
|
|
FROM [FunkyCustomers] AS [f],
|
|
[FunkyCustomers] AS [f0]
|
|
WHERE (([f0].[LastName] <> '') OR [f0].[LastName] IS NULL) AND ([f].[FirstName] IS NOT NULL AND ([f0].[LastName] IS NOT NULL AND ((LEFT([f].[FirstName], LEN([f0].[LastName])) <> [f0].[LastName]) OR LEFT([f].[FirstName], LEN([f0].[LastName])) IS NULL)))");
|
|
}
|
|
|
|
public override async Task String_ends_with_on_argument_with_wildcard_constant(bool isAsync)
|
|
{
|
|
await base.String_ends_with_on_argument_with_wildcard_constant(isAsync);
|
|
|
|
AssertSql(
|
|
@"SELECT [f].[FirstName]
|
|
FROM [FunkyCustomers] AS [f]
|
|
WHERE [f].[FirstName] IS NOT NULL AND ([f].[FirstName] LIKE '%\%B' ESCAPE '\')",
|
|
//
|
|
@"SELECT [f].[FirstName]
|
|
FROM [FunkyCustomers] AS [f]
|
|
WHERE [f].[FirstName] IS NOT NULL AND ([f].[FirstName] LIKE '%a\_' ESCAPE '\')",
|
|
//
|
|
@"SELECT [f].[FirstName]
|
|
FROM [FunkyCustomers] AS [f]
|
|
WHERE False = True",
|
|
//
|
|
@"SELECT [f].[FirstName]
|
|
FROM [FunkyCustomers] AS [f]",
|
|
//
|
|
@"SELECT [f].[FirstName]
|
|
FROM [FunkyCustomers] AS [f]
|
|
WHERE [f].[FirstName] IS NOT NULL AND ([f].[FirstName] LIKE '%\_Ba\_' ESCAPE '\')",
|
|
//
|
|
@"SELECT [f].[FirstName]
|
|
FROM [FunkyCustomers] AS [f]
|
|
WHERE [f].[FirstName] IS NOT NULL AND NOT ([f].[FirstName] LIKE '%\%B\%a\%r' ESCAPE '\')",
|
|
//
|
|
@"SELECT [f].[FirstName]
|
|
FROM [FunkyCustomers] AS [f]
|
|
WHERE False = True",
|
|
//
|
|
@"SELECT [f].[FirstName]
|
|
FROM [FunkyCustomers] AS [f]
|
|
WHERE False = True");
|
|
}
|
|
|
|
public override async Task String_ends_with_on_argument_with_wildcard_parameter(bool isAsync)
|
|
{
|
|
await base.String_ends_with_on_argument_with_wildcard_parameter(isAsync);
|
|
|
|
AssertSql(
|
|
@"@__prm1_0='%B' (Size = 4000)
|
|
|
|
SELECT [f].[FirstName]
|
|
FROM [FunkyCustomers] AS [f]
|
|
WHERE (@__prm1_0 = '') OR ([f].[FirstName] IS NOT NULL AND (RIGHT([f].[FirstName], LEN(@__prm1_0)) = @__prm1_0))",
|
|
//
|
|
@"@__prm2_0='a_' (Size = 4000)
|
|
|
|
SELECT [f].[FirstName]
|
|
FROM [FunkyCustomers] AS [f]
|
|
WHERE (@__prm2_0 = '') OR ([f].[FirstName] IS NOT NULL AND (RIGHT([f].[FirstName], LEN(@__prm2_0)) = @__prm2_0))",
|
|
//
|
|
@"SELECT [f].[FirstName]
|
|
FROM [FunkyCustomers] AS [f]
|
|
WHERE False = True",
|
|
//
|
|
@"@__prm4_0='' (Size = 4000)
|
|
|
|
SELECT [f].[FirstName]
|
|
FROM [FunkyCustomers] AS [f]
|
|
WHERE (@__prm4_0 = '') OR ([f].[FirstName] IS NOT NULL AND (RIGHT([f].[FirstName], LEN(@__prm4_0)) = @__prm4_0))",
|
|
//
|
|
@"@__prm5_0='_Ba_' (Size = 4000)
|
|
|
|
SELECT [f].[FirstName]
|
|
FROM [FunkyCustomers] AS [f]
|
|
WHERE (@__prm5_0 = '') OR ([f].[FirstName] IS NOT NULL AND (RIGHT([f].[FirstName], LEN(@__prm5_0)) = @__prm5_0))",
|
|
//
|
|
@"@__prm6_0='%B%a%r' (Size = 4000)
|
|
|
|
SELECT [f].[FirstName]
|
|
FROM [FunkyCustomers] AS [f]
|
|
WHERE (@__prm6_0 <> '') AND ([f].[FirstName] IS NOT NULL AND ((RIGHT([f].[FirstName], LEN(@__prm6_0)) <> @__prm6_0) OR RIGHT([f].[FirstName], LEN(@__prm6_0)) IS NULL))",
|
|
//
|
|
@"@__prm7_0='' (Size = 4000)
|
|
|
|
SELECT [f].[FirstName]
|
|
FROM [FunkyCustomers] AS [f]
|
|
WHERE (@__prm7_0 <> '') AND ([f].[FirstName] IS NOT NULL AND ((RIGHT([f].[FirstName], LEN(@__prm7_0)) <> @__prm7_0) OR RIGHT([f].[FirstName], LEN(@__prm7_0)) IS NULL))",
|
|
//
|
|
@"SELECT [f].[FirstName]
|
|
FROM [FunkyCustomers] AS [f]
|
|
WHERE False = True");
|
|
}
|
|
|
|
public override async Task String_ends_with_on_argument_with_wildcard_column(bool isAsync)
|
|
{
|
|
await base.String_ends_with_on_argument_with_wildcard_column(isAsync);
|
|
|
|
AssertSql(
|
|
@"SELECT [f].[FirstName] AS [fn], [f0].[LastName] AS [ln]
|
|
FROM [FunkyCustomers] AS [f],
|
|
[FunkyCustomers] AS [f0]
|
|
WHERE ([f0].[LastName] = '') OR ([f].[FirstName] IS NOT NULL AND ([f0].[LastName] IS NOT NULL AND (RIGHT([f].[FirstName], LEN([f0].[LastName])) = [f0].[LastName])))");
|
|
}
|
|
|
|
public override async Task String_ends_with_on_argument_with_wildcard_column_negated(bool isAsync)
|
|
{
|
|
await base.String_ends_with_on_argument_with_wildcard_column_negated(isAsync);
|
|
|
|
AssertSql(
|
|
@"SELECT [f].[FirstName] AS [fn], [f0].[LastName] AS [ln]
|
|
FROM [FunkyCustomers] AS [f],
|
|
[FunkyCustomers] AS [f0]
|
|
WHERE (([f0].[LastName] <> '') OR [f0].[LastName] IS NULL) AND ([f].[FirstName] IS NOT NULL AND ([f0].[LastName] IS NOT NULL AND ((RIGHT([f].[FirstName], LEN([f0].[LastName])) <> [f0].[LastName]) OR RIGHT([f].[FirstName], LEN([f0].[LastName])) IS NULL)))");
|
|
}
|
|
|
|
public override async Task String_ends_with_inside_conditional(bool isAsync)
|
|
{
|
|
await base.String_ends_with_inside_conditional(isAsync);
|
|
|
|
AssertSql(
|
|
@"SELECT [f].[FirstName] AS [fn], [f0].[LastName] AS [ln]
|
|
FROM [FunkyCustomers] AS [f],
|
|
[FunkyCustomers] AS [f0]
|
|
WHERE IIF(([f0].[LastName] = '') OR ([f].[FirstName] IS NOT NULL AND ([f0].[LastName] IS NOT NULL AND (RIGHT([f].[FirstName], LEN([f0].[LastName])) = [f0].[LastName]))), 1, 0) = True");
|
|
}
|
|
|
|
public override async Task String_ends_with_inside_conditional_negated(bool isAsync)
|
|
{
|
|
await base.String_ends_with_inside_conditional_negated(isAsync);
|
|
|
|
AssertSql(
|
|
@"SELECT [f].[FirstName] AS [fn], [f0].[LastName] AS [ln]
|
|
FROM [FunkyCustomers] AS [f],
|
|
[FunkyCustomers] AS [f0]
|
|
WHERE IIF((([f0].[LastName] <> '') OR [f0].[LastName] IS NULL) AND ([f].[FirstName] IS NOT NULL AND ([f0].[LastName] IS NOT NULL AND ((RIGHT([f].[FirstName], LEN([f0].[LastName])) <> [f0].[LastName]) OR RIGHT([f].[FirstName], LEN([f0].[LastName])) IS NULL))), 1, 0) = True");
|
|
}
|
|
|
|
public override async Task String_ends_with_equals_nullable_column(bool isAsync)
|
|
{
|
|
await base.String_ends_with_equals_nullable_column(isAsync);
|
|
|
|
AssertSql(
|
|
@"SELECT [f].[Id], [f].[FirstName], [f].[LastName], [f].[NullableBool], [f0].[Id], [f0].[FirstName], [f0].[LastName], [f0].[NullableBool]
|
|
FROM [FunkyCustomers] AS [f],
|
|
[FunkyCustomers] AS [f0]
|
|
WHERE IIF((([f0].[LastName] = '') AND [f0].[LastName] IS NOT NULL) OR ([f].[FirstName] IS NOT NULL AND ([f0].[LastName] IS NOT NULL AND ((RIGHT([f].[FirstName], LEN([f0].[LastName])) = [f0].[LastName]) AND RIGHT([f].[FirstName], LEN([f0].[LastName])) IS NOT NULL))), 1, 0) = [f].[NullableBool]");
|
|
}
|
|
|
|
public override async Task String_ends_with_not_equals_nullable_column(bool isAsync)
|
|
{
|
|
await base.String_ends_with_not_equals_nullable_column(isAsync);
|
|
|
|
AssertSql(
|
|
@"SELECT [f].[Id], [f].[FirstName], [f].[LastName], [f].[NullableBool], [f0].[Id], [f0].[FirstName], [f0].[LastName], [f0].[NullableBool]
|
|
FROM [FunkyCustomers] AS [f],
|
|
[FunkyCustomers] AS [f0]
|
|
WHERE (IIF((([f0].[LastName] = '') AND [f0].[LastName] IS NOT NULL) OR ([f].[FirstName] IS NOT NULL AND ([f0].[LastName] IS NOT NULL AND ((RIGHT([f].[FirstName], LEN([f0].[LastName])) = [f0].[LastName]) AND RIGHT([f].[FirstName], LEN([f0].[LastName])) IS NOT NULL))), 1, 0) <> [f].[NullableBool]) OR [f].[NullableBool] IS NULL");
|
|
}
|
|
|
|
protected override void ClearLog()
|
|
=> Fixture.TestSqlLoggerFactory.Clear();
|
|
|
|
private void AssertSql(params string[] expected)
|
|
=> Fixture.TestSqlLoggerFactory.AssertBaseline(expected);
|
|
|
|
public class FunkyDataQueryJetFixture : FunkyDataQueryFixtureBase
|
|
{
|
|
public TestSqlLoggerFactory TestSqlLoggerFactory => (TestSqlLoggerFactory)ListLoggerFactory;
|
|
|
|
protected override ITestStoreFactory TestStoreFactory => JetTestStoreFactory.Instance;
|
|
}
|
|
}
|
|
}
|