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)); }
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)); }
public BloomFilter(BloomConfiguration configuration) { _size = configuration.BloomFilterSize; _hashAlgorithms = configuration.HashAlgorithms; _filter = new bool[_size]; }