public void ShouldReturnTheSameWordInstanceForAllOccurrencesOfThisWord()
        {
            var block = FileWordCreator.GetFileWordCreatorBlock();

            block.Post(new LineSplitter.FileLineWord(new File(), "TEST", 1, 1));
            var file = new File();

            block.Post(new LineSplitter.FileLineWord(file, "TEST", 3, 14));
            var word1 = block.ReceiveWithTimeout();
            var word2 = block.ReceiveWithTimeout();

            block.Complete();
            block.EnsureCompleted();
            Assert.AreSame(word1.Word, word2.Word);
            Assert.AreEqual("TEST", word2.Word.Term);
            Assert.AreSame(file, word2.File);
            Assert.AreEqual(3, word2.Row);
            Assert.AreEqual(14, word2.Col);
        }
        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;
        }