Ejemplo n.º 1
0
        public void ShouldEnumerateLinesOfFile()
        {
            var block = FileLinesEnumerator.GetFileLinesEnumeratorBlock();
            var file  = new File {
                FullPath = @"TestFolder\TextFile1.txt"
            };

            block.Post(file);
            var line = block.ReceiveWithTimeout();

            block.Complete();
            block.EnsureCompleted();
            Assert.AreSame(file, line.File);
            Assert.AreEqual(1, line.Row);
            Assert.AreEqual("Мама мыла раму", line.Line);
        }
Ejemplo n.º 2
0
        public void ShouldSkipEmptyLinesOfFile()
        {
            var block = FileLinesEnumerator.GetFileLinesEnumeratorBlock();
            var file  = new File {
                FullPath = @"TestFolder\Subfolder\TextFile2.txt"
            };

            block.Post(file);
            block.ReceiveWithTimeout();
            var line = block.ReceiveWithTimeout();

            block.ReceiveWithTimeout();
            block.Complete();
            block.EnsureCompleted();
            Assert.AreSame(file, line.File);
            Assert.AreEqual(3, line.Row);
            Assert.AreEqual("Mother was washing window frame", line.Line);
        }
Ejemplo n.º 3
0
        public void ShouldThrowFileNotFoundExceptionWhenFileIsNotFound()
        {
            var block = FileLinesEnumerator.GetFileLinesEnumeratorBlock();
            var file  = new File {
                FullPath = @"TestFolder\UnkownFile.txt"
            };

            block.Post(file);
            try
            {
                block.EnsureCompleted();
                Assert.Fail();
            }
            catch (AggregateException ex)
            {
                Assert.IsInstanceOfType(ex.GetBaseException(), typeof(System.IO.FileNotFoundException));
            }
        }
        public async Task ParseFilesAsync(string folderPath, string searchPattern)
        {
            var repository = repositoryFactory();
            await repository.TruncateDataAsync();

            var filesEnumerator = FilesEnumerator.GetFilesEnumeratorBlock();
            var fileCreator     = FileCreator.GetFileCreatorBlock();

            filesEnumerator.LinkToAndPropagateCompleted(fileCreator);

            var fileLinesEnumerator = FileLinesEnumerator.GetFileLinesEnumeratorBlock();

            fileCreator.LinkToAndPropagateCompleted(fileLinesEnumerator);

            var lineSplitter = LineSplitter.GetLineSplitterBlock();

            fileLinesEnumerator.LinkToAndPropagateCompleted(lineSplitter);

            var fileWordCreator = FileWordCreator.GetFileWordCreatorBlock();

            lineSplitter.LinkToAndPropagateCompleted(fileWordCreator);

            var fileWordSaver = FileWordSaver.GetFileWordSaverBlock(repositoryFactory);

            fileWordCreator.LinkToAndPropagateCompleted(fileWordSaver);

            var nullTarget = DataflowBlock.NullTarget <FileWord>();

            fileWordSaver.LinkTo(nullTarget);

            filesEnumerator.Post(new FilesEnumerator.EnumerateFolderTask
            {
                Folder        = folderPath,
                SearchPattern = searchPattern
            });
            filesEnumerator.Complete();
            await fileWordSaver.Completion;
        }