public void LineCount_OnManyThreads_ShouldOnlyReadFileOnce([ValueSource("Files")] ITextFile file) { const int NumCalls = 10; ILazy<FileLineCount> lazy = null; var countedFile = new CountedTextFile(file, f => lazy = new DiyLazy<FileLineCount>(f)); Enumerable.Range(0, NumCalls).AsParallel().Select(i => countedFile.LineCount).ToList(); switch (lazy.Mode) { case LazyThreadSafetyMode.PublicationOnly: Assert.Ignore("This lazy does not guarantee only one execution, on all threads - not an error"); break; case LazyThreadSafetyMode.ExecutionAndPublication: Assert.That(countedFile.NumberOfCallsToCountLines, Is.EqualTo(1)); break; } }
public void LineCount_OnManyThreads_ShouldOnlyReadFileOnce([ValueSource("Files")] ITextFile file) { const int NumCalls = 10; ILazy <FileLineCount> lazy = null; var countedFile = new CountedTextFile(file, f => lazy = new DiyLazy <FileLineCount>(f)); Enumerable.Range(0, NumCalls).AsParallel().Select(i => countedFile.LineCount).ToList(); switch (lazy.Mode) { case LazyThreadSafetyMode.PublicationOnly: Assert.Ignore("This lazy does not guarantee only one execution, on all threads - not an error"); break; case LazyThreadSafetyMode.ExecutionAndPublication: Assert.That(countedFile.NumberOfCallsToCountLines, Is.EqualTo(1)); break; } }