public void FunctionalCEnum( [DataSources] string context, [Values] bool withNullCompares) { using var _ = new CompareNullsAsValuesOption(withNullCompares); using var db = GetDataContext(context); using var src = SetupSrcTable(db); int?result; result = FetchId(s => s.CEnum.In(ConvertedEnum.Value3, ConvertedEnum.Value4)); result.Should().Be(0); result = FetchId(s => s.CEnum.In(ConvertedEnum.Value3, null)); result.Should().Be(withNullCompares ? 1 : 0); result = FetchId(s => s.CEnum.In(ConvertedEnum.Value3, ConvertedEnum.Value2)); result.Should().Be(2); result = FetchId(s => s.CEnum.NotIn(null, ConvertedEnum.Value2)); result.Should().Be(0); result = FetchId(s => s.CEnum.NotIn(ConvertedEnum.Value3, ConvertedEnum.Value2)); result.Should().Be(withNullCompares ? 1 : 0); int FetchId(Expression <Func <Src, bool> > predicate) => src.Where(predicate).Select(x => x.Id).FirstOrDefault(); }
public void Test4WithoutComparasionNullCheck([DataSources] string context) { using var _ = new CompareNullsAsValuesOption(false); using var db = GetDataContext(context); var bigintFilter = new long?[] { 2 }; AreEqual(FixData, Types2.Where(_ => !bigintFilter.Contains(_.BigIntValue) && _.BigIntValue != null), db.Types2.Where(_ => !bigintFilter.Contains(_.BigIntValue))); }
public void AllNullsCEnum( // Excluded Access from tests because it seems to have non compliant behavior. // It is the only DB that returns 1 for `WHERE CEnum NOT IN (null, null)` [DataSources(TestProvName.AllAccess)] string context, [Values] bool withNullCompares) { using var _ = new CompareNullsAsValuesOption(withNullCompares); using var db = GetDataContext(context); using var src = SetupSrcTable(db); int count; count = src.Count(s => s.CEnum.In(null, null)); count.Should().Be(withNullCompares ? 1 : 0); count = src.Count(s => s.CEnum.NotIn(null, null)); count.Should().Be(withNullCompares ? 1 : 0); }
public void EmptyCEnum( [DataSources] string context, [Values] bool withNullCompares) { using var _ = new CompareNullsAsValuesOption(withNullCompares); using var db = GetDataContext(context); using var src = SetupSrcTable(db); int count; count = src.Count(s => s.CEnum.In(Array.Empty <ConvertedEnum?>())); count.Should().Be(0); count = src.Count(s => s.CEnum.NotIn(Array.Empty <ConvertedEnum?>())); count.Should().Be(2); count = src.Count(s => !s.CEnum.In(Array.Empty <ConvertedEnum?>())); count.Should().Be(2); }