예제 #1
0
        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();
        }
예제 #2
0
        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)));
        }
예제 #3
0
        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);
        }
예제 #4
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);
        }