コード例 #1
0
        public void testBloomFilterBytes()
        {
            BloomFilter bf = new BloomFilter(10000);
            byte[] val = new byte[] { 1, 2, 3 };
            byte[] val1 = new byte[] { 1, 2, 3, 4 };
            byte[] val2 = new byte[] { 1, 2, 3, 4, 5 };
            byte[] val3 = new byte[] { 1, 2, 3, 4, 5, 6 };

            Assert.Equal(false, bf.test(val));
            Assert.Equal(false, bf.test(val1));
            Assert.Equal(false, bf.test(val2));
            Assert.Equal(false, bf.test(val3));
            bf.add(val);
            Assert.Equal(true, bf.test(val));
            Assert.Equal(false, bf.test(val1));
            Assert.Equal(false, bf.test(val2));
            Assert.Equal(false, bf.test(val3));
            bf.add(val1);
            Assert.Equal(true, bf.test(val));
            Assert.Equal(true, bf.test(val1));
            Assert.Equal(false, bf.test(val2));
            Assert.Equal(false, bf.test(val3));
            bf.add(val2);
            Assert.Equal(true, bf.test(val));
            Assert.Equal(true, bf.test(val1));
            Assert.Equal(true, bf.test(val2));
            Assert.Equal(false, bf.test(val3));
            bf.add(val3);
            Assert.Equal(true, bf.test(val));
            Assert.Equal(true, bf.test(val1));
            Assert.Equal(true, bf.test(val2));
            Assert.Equal(true, bf.test(val3));

            byte[] randVal = new byte[COUNT];
            for (int i = 0; i < COUNT; i++)
            {
                rand.NextBytes(randVal);
                bf.add(randVal);
            }
            // last value should be present
            Assert.Equal(true, bf.test(randVal));
            // most likely this value should not exist
            randVal[0] = 0;
            randVal[1] = 0;
            randVal[2] = 0;
            randVal[3] = 0;
            randVal[4] = 0;
            Assert.Equal(false, bf.test(randVal));

            Assert.Equal(7800, bf.sizeInBytes());
        }