コード例 #1
0
        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());
        }