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; }