예제 #1
0
        public void AddMultipleDifferentItemsToBloomTest()
        {
            BloomConfiguration config = new BloomConfiguration {
                BloomFilterSize = 8 * (long)BloomFilterSizeMultipliers.Bits,
            };

            BloomFilter bloomFilter = new BloomFilter(config);

            string testString = $"TestString";

            byte[] testByteArray1 = Encoding.ASCII.GetBytes(testString);

            string testString2 = $"TestString2";

            byte[] testByteArray2 = Encoding.ASCII.GetBytes(testString2);

            bloomFilter.Add(testByteArray1);
            bloomFilter.Add(testByteArray2);

            bool[] actual   = bloomFilter.Filter;
            bool[] expected = { true, false, true, true, false, true, false, true };

            Assert.True(CompareBoolArrays(expected, actual));
            Assert.True(bloomFilter.Contains(testByteArray1));
            Assert.True(bloomFilter.Contains(testByteArray2));
        }
예제 #2
0
        public void UseAdditionalHashFunctionsTest()
        {
            BloomConfiguration config = new BloomConfiguration {
                BloomFilterSize = 1 * (long)BloomFilterSizeMultipliers.Bytes,
                HashAlgorithms  = new List <Type> {
                    typeof(MD5CryptoServiceProvider),
                    typeof(SHA1CryptoServiceProvider),
                    typeof(SHA256CryptoServiceProvider),
                    typeof(SHA384CryptoServiceProvider),
                    typeof(SHA512CryptoServiceProvider)
                }
            };

            BloomFilter bloomFilter = new BloomFilter(config);

            string testString = $"TestString";

            byte[] testByteArray1 = Encoding.ASCII.GetBytes(testString);

            string testString2 = $"TestString2";

            byte[] testByteArray2 = Encoding.ASCII.GetBytes(testString2);

            bloomFilter.Add(testByteArray1);
            bloomFilter.Add(testByteArray2);

            bool[] actual = bloomFilter.Filter;

            PrintFilterResults(actual);

            bool[] expected = { true,  false, false, false, false, false, true,  false, false, false, false, false, false, false, false, false, false, false,
                                false, false, false, false, false, false, false, false, false, false, false, false, false, true,  false, false, false, false,
                                false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false,
                                false, true,  false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false,
                                false, false, false, false, false, true,  false, false, false, false, false, false, false, true,  true,  false, false, false,
                                false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false,
                                false, false, false, false, false, false, true,  false, false, false, false, false, true,  false, false, true,  false, false,false,
                                false };

            Assert.True(CompareBoolArrays(expected, actual));
            Assert.True(bloomFilter.Contains(testByteArray1));
            Assert.True(bloomFilter.Contains(testByteArray2));
        }
예제 #3
0
 public BloomFilter(BloomConfiguration configuration)
 {
     _size           = configuration.BloomFilterSize;
     _hashAlgorithms = configuration.HashAlgorithms;
     _filter         = new bool[_size];
 }