public void testDoubleNullSafeEqualsBloomFilter()
        {
            PredicateLeaf pred = TestSearchArgumentImpl.createPredicateLeaf(
                PredicateLeaf.Operator.NULL_SAFE_EQUALS, PredicateLeaf.Type.FLOAT, "x", 15.0, null);
            BloomFilter bf = new BloomFilter(10000);
            for (int i = 20; i < 1000; i++)
            {
                bf.addDouble(i);
            }
            ColumnStatistics cs = ColumnStatisticsImpl.deserialize(createDoubleStats(10.0, 100.0));
            Assert.Equal(TruthValue.NO, RecordReaderImpl.evaluatePredicate(cs, pred, bf));

            bf.addDouble(15.0);
            Assert.Equal(TruthValue.YES_NO, RecordReaderImpl.evaluatePredicate(cs, pred, bf));
        }
        public void testBloomFilterFloat()
        {
            BloomFilter bf = new BloomFilter(10000);
            float val = Single.MinValue;
            float val1 = 1.1f;
            float val2 = 2.2f;
            float val3 = Single.MaxValue;

            Assert.Equal(false, bf.testDouble(val));
            Assert.Equal(false, bf.testDouble(val1));
            Assert.Equal(false, bf.testDouble(val2));
            Assert.Equal(false, bf.testDouble(val3));
            bf.addDouble(val);
            Assert.Equal(true, bf.testDouble(val));
            Assert.Equal(false, bf.testDouble(val1));
            Assert.Equal(false, bf.testDouble(val2));
            Assert.Equal(false, bf.testDouble(val3));
            bf.addDouble(val1);
            Assert.Equal(true, bf.testDouble(val));
            Assert.Equal(true, bf.testDouble(val1));
            Assert.Equal(false, bf.testDouble(val2));
            Assert.Equal(false, bf.testDouble(val3));
            bf.addDouble(val2);
            Assert.Equal(true, bf.testDouble(val));
            Assert.Equal(true, bf.testDouble(val1));
            Assert.Equal(true, bf.testDouble(val2));
            Assert.Equal(false, bf.testDouble(val3));
            bf.addDouble(val3);
            Assert.Equal(true, bf.testDouble(val));
            Assert.Equal(true, bf.testDouble(val1));
            Assert.Equal(true, bf.testDouble(val2));
            Assert.Equal(true, bf.testDouble(val3));

            float randVal = 0;
            for (int i = 0; i < COUNT; i++)
            {
                randVal = rand.NextFloat();
                bf.addDouble(randVal);
            }
            // last value should be present
            Assert.Equal(true, bf.testDouble(randVal));
            // most likely this value should not exist
            Assert.Equal(false, bf.testDouble(-120.2f));

            Assert.Equal(7800, bf.sizeInBytes());
        }
        public void testDoubleInBloomFilter()
        {
            List<object> args = new List<object>();
            args.Add(15.0);
            args.Add(19.0);
            PredicateLeaf pred = TestSearchArgumentImpl.createPredicateLeaf
                (PredicateLeaf.Operator.IN, PredicateLeaf.Type.FLOAT,
                    "x", null, args);
            BloomFilter bf = new BloomFilter(10000);
            for (int i = 20; i < 1000; i++)
            {
                bf.addDouble(i);
            }
            ColumnStatistics cs = ColumnStatisticsImpl.deserialize(createDoubleStats(10.0, 100.0));
            Assert.Equal(TruthValue.NO_NULL, RecordReaderImpl.evaluatePredicate(cs, pred, bf));

            bf.addDouble(19.0);
            Assert.Equal(TruthValue.YES_NO_NULL, RecordReaderImpl.evaluatePredicate(cs, pred, bf));

            bf.addDouble(15.0);
            Assert.Equal(TruthValue.YES_NO_NULL, RecordReaderImpl.evaluatePredicate(cs, pred, bf));
        }