public void link_files_the_clear_cache() { theCache.LinkFilesToResource(resource1, new AssetFile[] { file1, file2 }); theCache.LinkFilesToResource(resource2, new AssetFile[] { file1, file2, file3 }); theCache.LinkFilesToResource(resource3, new AssetFile[] { file2, file3, file4 }); var output1A = storeAgainstResource(resource1); var output2A = storeAgainstResource(resource2); var output3A = storeAgainstResource(resource3); Func <IRecordedOutput> shouldNotBeCalled = () => { Assert.Fail("Do not call me"); return(null); }; // 2nd pass theCache.Retrieve(resource1, shouldNotBeCalled).ShouldBeTheSameAs(output1A); theCache.Retrieve(resource2, shouldNotBeCalled).ShouldBeTheSameAs(output2A); theCache.Retrieve(resource3, shouldNotBeCalled).ShouldBeTheSameAs(output3A); theCache.Changed(file1); var output1B = getOutputWithEtag("2345"); var output2B = getOutputWithEtag("23456"); var output3B = getOutputWithEtag("23457"); theCache.Retrieve(resource1, () => output1B).ShouldBeTheSameAs(output1B); theCache.Retrieve(resource1, shouldNotBeCalled).ShouldBeTheSameAs(output1B); theCache.Retrieve(resource1, shouldNotBeCalled).ShouldBeTheSameAs(output1B); theCache.Retrieve(resource2, () => output2B).ShouldBeTheSameAs(output2B); theCache.Current(resource2).ShouldEqual("23456"); // Was not cleared because it does not depend on file1 theCache.Retrieve(resource3, shouldNotBeCalled).ShouldBeTheSameAs(output3A); }
public void flush_all_removes_the_content_and_ejects_all_of_the_header_cache() { var hash1 = "12345"; var hash2 = "23456"; var hash3 = "34567"; theCache.LinkFilesToResource(hash1, new AssetFile[] { file1, file2, file3 }); theCache.LinkFilesToResource(hash2, new AssetFile[] { file2, file3, file4 }); theCache.LinkFilesToResource(hash3, new AssetFile[] { file5 }); theCache.FlushAll(); headersCache.AssertWasCalled(x => x.Eject(hash1)); headersCache.AssertWasCalled(x => x.Eject(hash2)); headersCache.AssertWasCalled(x => x.Eject(hash3)); theOutputCache.AssertWasCalled(x => x.Eject(hash1)); theOutputCache.AssertWasCalled(x => x.Eject(hash2)); theOutputCache.AssertWasCalled(x => x.Eject(hash3)); }