public async Task EmptyFirstLineWithoutDelimiterTreatsAsFrontMatter() { // Given TestExecutionContext context = new TestExecutionContext(); TestDocument[] inputs = { new TestDocument(@" FM1 FM2 --- Content1 Content2") }; string frontMatterContent = null; ExtractFrontMatter frontMatter = new ExtractFrontMatter(new ExecuteConfig(Config.FromDocument(async x => { frontMatterContent = await x.GetStringAsync(); return(new[] { x }); }))); // When IEnumerable <IDocument> documents = await ExecuteAsync(inputs, context, frontMatter); // Then Assert.AreEqual(1, documents.Count()); Assert.AreEqual( @" FM1 FM2 ", frontMatterContent); Assert.AreEqual( @"Content1 Content2", await documents.First().GetStringAsync()); }
public async Task MultipleInputDocumentsResultsInMultipleOutputs() { // Given TestExecutionContext context = new TestExecutionContext(); TestDocument[] inputs = { new TestDocument(@"AA - XX"), new TestDocument(@"BB - YY") }; string frontMatterContent = string.Empty; ExtractFrontMatter frontMatter = new ExtractFrontMatter(new ExecuteConfig(Config.FromDocument(async x => { frontMatterContent += await x.GetStringAsync(); return(new[] { x }); }))); // When IEnumerable <IDocument> documents = await ExecuteAsync(inputs, context, frontMatter); // Then Assert.AreEqual(2, documents.Count()); Assert.AreEqual( @"AA BB ", frontMatterContent); Assert.AreEqual("XX", await documents.First().GetStringAsync()); Assert.AreEqual("YY", await documents.Skip(1).First().GetStringAsync()); }
public async Task SingleCharWithRepeatedDelimiterWithLeadingSpacesDoesNotSplit() { // Given TestExecutionContext context = new TestExecutionContext(); TestDocument[] inputs = { new TestDocument(@"FM1 FM2 !!!! Content1 Content2") }; bool executed = false; ExtractFrontMatter frontMatter = new ExtractFrontMatter('!', new ExecuteConfig(Config.FromDocument(x => { executed = true; return(new[] { x }); }))); // When IEnumerable <IDocument> documents = await ExecuteAsync(inputs, context, frontMatter); // Then Assert.AreEqual(1, documents.Count()); Assert.IsFalse(executed); Assert.AreEqual( @"FM1 FM2 !!!! Content1 Content2", await documents.First().GetStringAsync()); }
public async Task SingleCharWithSingleDelimiterSplitsAtCorrectLocation() { // Given TestExecutionContext context = new TestExecutionContext(); TestDocument[] inputs = { new TestDocument(@"FM1 FM2 ! Content1 Content2") }; string frontMatterContent = null; ExtractFrontMatter frontMatter = new ExtractFrontMatter('!', new ExecuteConfig(Config.FromDocument(async x => { frontMatterContent = await x.GetStringAsync(); return(new[] { x }); }))); // When IEnumerable <IDocument> documents = await ExecuteAsync(inputs, context, frontMatter); // Then Assert.AreEqual(1, documents.Count()); Assert.AreEqual( @"FM1 FM2 ", frontMatterContent); Assert.AreEqual( @"Content1 Content2", await documents.First().GetStringAsync()); }
public async Task DashStringDoesNotSplitAtNonmatchingDashes() { // Given TestExecutionContext context = new TestExecutionContext(); TestDocument[] inputs = { new TestDocument(@"FM1 FM2 --- Content1 Content2") }; bool executed = false; ExtractFrontMatter frontMatter = new ExtractFrontMatter("-", new ExecuteConfig(Config.FromDocument(x => { executed = true; return(new[] { x }); }))); // When IEnumerable <IDocument> documents = await ExecuteAsync(inputs, context, frontMatter); // Then Assert.AreEqual(1, documents.Count()); Assert.IsFalse(executed); Assert.AreEqual( @"FM1 FM2 --- Content1 Content2", await documents.First().GetStringAsync()); }