Пример #1
0
        public void ProcessFile_PoolOverflow()
        {
            var fileProcessor = new FileProcessor(new TestFileFactory(), 2);

            var fileId1 = fileProcessor.AddFile(null);
            var fileId2 = fileProcessor.AddFile(null);
            var fileId3 = fileProcessor.AddFile(null);

            fileProcessor.ProcessFile(fileId1);
            fileProcessor.ProcessFile(fileId2);
            fileProcessor.ProcessFile(fileId3);

            // Первые 2 файла должны обрабатываться, а третий зависнуть в очереди, так как пул всего на 2.
            Assert.IsTrue(TestFile.ProcessFilesId.Contains(fileId1));
            Assert.IsTrue(TestFile.ProcessFilesId.Contains(fileId2));
            Assert.IsFalse(TestFile.ProcessFilesId.Contains(fileId3));
        }
Пример #2
0
        public void CancelProcess_NextFileToProcess()
        {
            var fileProcessor = new FileProcessor(new TestFileFactory(), 2);

            var fileId1 = fileProcessor.AddFile(null);
            var fileId2 = fileProcessor.AddFile(null);
            var fileId3 = fileProcessor.AddFile(null);

            fileProcessor.ProcessFile(fileId1);
            fileProcessor.ProcessFile(fileId2);
            fileProcessor.ProcessFile(fileId3);

            fileProcessor.CancelProcess(fileId2);

            Assert.IsTrue(TestFile.CanceledProcessFilesId.Contains(fileId2));
            Assert.IsTrue(TestFile.ProcessFilesId.Contains(fileId3),
                          "После отмены обработки второго файла, в обработку должен поступить третий.");
        }