Ejemplo n.º 1
0
        public void GetCharCounts_ShouldReturnDoubledValues_WhenSameFileAddedSecondTime()
        {
            var counter = new MultiFileCharacterCounter();

            counter.Add(EmbeddedFiles.Large);
            var firstResults = counter.GetCharCounts();

            counter.Add(EmbeddedFiles.Large);
            Assert.That(counter.GetCharCounts().All(secondResult => IsDoubled(secondResult, firstResults)));
        }
        public void GetCharCounts_ShouldReturnRevisedCountWhenAnotherFileAddedAfterGettingInitialResults()
        {
            using (var counter = new MultiFileCharacterCounter())
            {
                counter.Add(EmbeddedFiles.Large);
                counter.Add(EmbeddedFiles.Huge);

                Thread.Sleep(50);
                IReadOnlyDictionary <char, int> result1 = counter.GetCharCounts();

                counter.Add(EmbeddedFiles.Medium);

                Thread.Sleep(250);
                IReadOnlyDictionary <char, int> result2 = counter.GetCharCounts();

                Assert.That(result2.Count, Is.GreaterThan(result1.Count));
            }
        }
        public void GetCharCounts_ShouldReturnTheFinalCountForAllAddedFiles()
        {
            using (var counter = new MultiFileCharacterCounter())
            {
                counter.Add(EmbeddedFiles.Medium);
                counter.Add(EmbeddedFiles.Large);
                counter.Add(EmbeddedFiles.Huge);

                IReadOnlyDictionary <char, int> result1 = counter.GetCharCounts();
                Assert.That(result1, Is.Not.Empty);

                Thread.Sleep(250);

                IReadOnlyDictionary <char, int> result2 = counter.GetCharCounts();
                Assert.That(result2, Is.Not.Empty);

                Assert.That(result2, Is.EqualTo(result1));
            }
        }
Ejemplo n.º 4
0
        public void GetCharCounts_ShouldReturnValue_WhenCalledWhileAddsAreOccurringOnOtherThreads()
        {
            const int NumAdds = 1000, NumGets = 10000;
            var       counter = new MultiFileCharacterCounter();

            Task[] addTasks = Enumerable.Range(0, NumAdds).Select(i => Task.Factory.StartNew(() => counter.Add(EmbeddedFiles.Medium))).ToArray();
            var    results  = Enumerable.Range(0, NumGets).Select(i => counter.GetCharCounts()).ToList();

            Assert.That(results.All(d => d != null));
            Task.WaitAll(addTasks);
        }