public void LineCount_OnManyThreads_ShouldAlwaysGetTheSameResult([ValueSource("Files")] ITextFile file) { const int NumCalls = 10; var countedFile = new CountedTextFile(file, f => new DiyLazy<FileLineCount>(f)); var lineCounts = Enumerable.Range(0, NumCalls).AsParallel().Select(i => countedFile.LineCount).ToList(); Assert.That(lineCounts.Distinct().Count(), Is.EqualTo(1)); }
public void LineCount_OnManyThreads_ShouldAlwaysGetTheSameResult([ValueSource("Files")] ITextFile file) { const int NumCalls = 10; var countedFile = new CountedTextFile(file); var lineCounts = Enumerable.Range(0, NumCalls).AsParallel().Select(i => countedFile.LineCount).ToList(); Assert.That(lineCounts.Distinct().Count(), Is.EqualTo(1)); }
public void LineCount_OnManyThreads_ShouldOnlyReadFileOnce([ValueSource("Files")] ITextFile file) { const int NumCalls = 10; var countedFile = new CountedTextFile(file); Enumerable.Range(0, NumCalls).AsParallel().Select(i => countedFile.LineCount).ToList(); Assert.That(countedFile.NumberOfCallsToCountLines, Is.EqualTo(1)); }
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; } }
public void LineCount_ShouldNotReadTheFile_UntilLineCountIsCalled() { var countedFile = new CountedTextFile(EmbeddedFiles.Medium); Assert.That(countedFile.NumberOfCallsToCountLines, Is.EqualTo(0)); }
public void LineCount_ShouldNotReadTheFile_UntilLineCountIsCalled() { var countedFile = new CountedTextFile(EmbeddedFiles.Medium, f => new DiyLazy<FileLineCount>(f)); Assert.That(countedFile.NumberOfCallsToCountLines, Is.EqualTo(0)); }