public Media GetContent(int id) { if (_cache.ContainsKey(id)) { return(_cache.Get(id)); } var content = _storage.GetContent(id); var probablyFetchedBefore = _cuckoo.Contains(id); if (probablyFetchedBefore) { _cache.Add(id, content); } _cuckoo.Insert(id); return(content); }
public void Insert_ValidInput_Success() { int positives = 1000; // Arrange var filter = new CuckooFilter(2 * positives, 0.01); // Act for (int i = 0; i < positives; i++) { filter.Insert(i); } // Assert for (int i = 0; i < positives; i++) { Assert.That(filter.Contains(i), Is.True, $"{i} is not tested positive"); } for (int i = positives; i < 2 * positives; i++) { Assert.That(filter.Contains(i), Is.False, $"{i} is a false positive"); } }
public void Remove_ValidInput_Success() { // Arrange int numElements = 10000; var filter = new CuckooFilter(numElements, 0.01); // Act for (int i = 0; i < numElements; i++) { filter.Insert(i); } for (int i = 0; i < numElements; i++) { filter.Remove(i); } // Assert for (int i = 0; i < numElements; i++) { Assert.That(filter.Contains(i), Is.False, $"{i} is not removed"); } }