コード例 #1
0
ファイル: FrontMatterTests.cs プロジェクト: ibebbs/Wyam
            public void DashStringDoesNotSplitAtNonmatchingDashes()
            {
                // Given
                Engine engine = new Engine();
                Pipeline pipeline = new Pipeline("Pipeline", null);
                IExecutionContext context = new ExecutionContext(engine, pipeline);
                IDocument[] inputs = 
                {
                    context.GetDocument(@"FM1
FM2
---
Content1
Content2")
                };
                bool executed = false;
                FrontMatter frontMatter = new FrontMatter("-", new Execute((x, ctx) =>
                {
                    executed = true;
                    return new[] {x};
                }));

                // When
                IEnumerable<IDocument> documents = frontMatter.Execute(inputs, context);

                // Then
                Assert.AreEqual(1, documents.Count());
                Assert.IsFalse(executed);
                Assert.AreEqual(@"FM1
FM2
---
Content1
Content2", documents.First().Content);
            }
コード例 #2
0
ファイル: FrontMatterTests.cs プロジェクト: ibebbs/Wyam
            public void DefaultCtorSplitsAtDashes()
            {
                // Given
                Engine engine = new Engine();
                Pipeline pipeline = new Pipeline("Pipeline", null);
                IExecutionContext context = new ExecutionContext(engine, pipeline);
                IDocument[] inputs = 
                {
                    context.GetDocument(@"FM1
FM2
---
Content1
Content2")
                };
                string frontMatterContent = null;
                FrontMatter frontMatter = new FrontMatter(new Execute((x, ctx) =>
                {
                    frontMatterContent = x.Content;
                    return new[] {x};
                }));

                // When
                IEnumerable<IDocument> documents = frontMatter.Execute(inputs, context);

                // Then
                Assert.AreEqual(1, documents.Count());
                Assert.AreEqual(@"FM1
FM2
", frontMatterContent);
                Assert.AreEqual(@"Content1
Content2", documents.First().Content);
            }
コード例 #3
0
ファイル: UnwrittenFilesTests.cs プロジェクト: ibebbs/Wyam
 public void SetUp()
 {
     Engine = new Engine();
     Engine.FileSystem.FileProviders.Add(NormalizedPath.DefaultFileProvider.Scheme, GetFileProvider());
     Engine.FileSystem.RootPath = "/";
     Pipeline = new Pipeline("Pipeline", null);
     Context = new ExecutionContext(Engine, Pipeline);
 }
コード例 #4
0
ファイル: CopyFilesTests.cs プロジェクト: ibebbs/Wyam
 public void SetUp()
 {
     Engine = new Engine();
     Engine.FileSystem.FileProviders.Add(NormalizedPath.DefaultFileProvider.Scheme, GetFileProvider());
     Engine.FileSystem.RootPath = "/";
     Engine.FileSystem.InputPaths.Clear();
     Engine.FileSystem.InputPaths.Add("/TestFiles/Input");
     Pipeline = new Pipeline("Pipeline", null);
     Context = new ExecutionContext(Engine, Pipeline);
     Inputs = new[] { Context.GetDocument() };
 }
コード例 #5
0
ファイル: PipelineCollection.cs プロジェクト: ibebbs/Wyam
 public IPipeline Add(string name, bool processDocumentsOnce, params IModule[] modules)
 {
     if (string.IsNullOrWhiteSpace(name))
     {
         name = "Pipeline " + (_pipelines.Count + 1);
     }
     if (_pipelines.ContainsKey(name))
     {
         throw new ArgumentException("Pipelines must have a unique name.");
     }
     Pipeline pipeline = new Pipeline(name, processDocumentsOnce, modules);
     _pipelines.Add(name, pipeline);
     return pipeline;
 }
コード例 #6
0
ファイル: FileNameTests.cs プロジェクト: ibebbs/Wyam
            public void FileNameIsConvertedCorrectly(string input, string output)
            {
                // Given
                Engine engine = new Engine();
                Pipeline pipeline = new Pipeline("Pipeline", null);
                IExecutionContext context = new ExecutionContext(engine, pipeline);
                IDocument[] inputs = { context.GetDocument(new MetadataItems
                {
                    new MetadataItem(Keys.SourceFileName, input)
                }) };
                FileName fileName = new FileName();

                // When
                IEnumerable<IDocument> documents = fileName.Execute(inputs, context);

                // Then
                Assert.AreEqual(output, documents.First().FilePath(Keys.WriteFileName).FullPath);
            }
コード例 #7
0
ファイル: FileNameTests.cs プロジェクト: ibebbs/Wyam
		    public void FileNameShouldBeLowercase()
		    {
			    // Given
			    string input = "FileName With MiXeD CapS";
			    string output = "filename-with-mixed-caps";

                Engine engine = new Engine();
			    Pipeline pipeline = new Pipeline("Pipeline", null);
			    IExecutionContext context = new ExecutionContext(engine, pipeline);
			    IDocument[] inputs = { context.GetDocument(new MetadataItems
			    {
                    new MetadataItem(Keys.SourceFileName, new FilePath(input))
			    }) };
			    FileName fileName = new FileName();

			    // When
			    IEnumerable<IDocument> documents = fileName.Execute(inputs, context);

			    // Then
			    Assert.AreEqual(output, documents.First().FilePath(Keys.WriteFileName).FullPath);
		    }
コード例 #8
0
ファイル: FileNameTests.cs プロジェクト: ibebbs/Wyam
		    public void WithAllowedCharactersDoesNotReplaceProvidedCharacters()
		    {
			    // Given
			    string input = "this-is-a-.net-tag";
			    string output = "this-is-a-.net-tag";

			    Engine engine = new Engine();
			    Pipeline pipeline = new Pipeline("Pipeline", null);
			    IExecutionContext context = new ExecutionContext(engine, pipeline);
			    IDocument[] inputs = { context.GetDocument(new MetadataItems
			    {
                    new MetadataItem(Keys.SourceFileName, new FilePath(input))
			    }) };
			    FileName fileName = new FileName();

			    // When
			    fileName = fileName.WithAllowedCharacters(new string[] { "-" });
			    IEnumerable<IDocument> documents = fileName.Execute(inputs, context);

			    // Then
			    Assert.AreEqual(output, documents.First().FilePath(Keys.WriteFileName).FullPath);
            }
コード例 #9
0
ファイル: SitemapTests.cs プロジェクト: ibebbs/Wyam
            public void SitemapGeneratedWithSitemapItemAsString(string hostname, string formatterString, string expected)
            {
                // Given
                Engine engine = new Engine();
                if (!string.IsNullOrWhiteSpace(hostname))
                {
                    engine.Settings.Host = hostname;
                }
                Pipeline contentPipeline = new Pipeline("Content", null);
                IExecutionContext context = new ExecutionContext(engine, contentPipeline);

                IDocument doc = context.GetDocument("Test", new[]
                {
                    new KeyValuePair<string, object>(Keys.RelativeFilePath, "sub/testfile.html")
                });
                IDocument[] inputs = {doc};

                Core.Modules.Metadata.Meta m = new Core.Modules.Metadata.Meta(Keys.SitemapItem,
                    (d, c) => d[Keys.RelativeFilePath].ToString());
                var outputs = m.Execute(inputs, context);

                Func<string, string> formatter = null;

                if (!string.IsNullOrWhiteSpace(formatterString))
                    formatter = f => string.Format(formatterString, f);

                // When
                Sitemap sitemap = new Sitemap(formatter);
                List<IDocument> results = sitemap.Execute(outputs.ToList(), context).ToList();

                foreach (IDocument document in inputs.Concat(outputs.ToList()))
                {
                    ((IDisposable) document).Dispose();
                }

                // Then
                Assert.AreEqual(1, results.Count);
                Assert.That(results[0].Content, Does.Contain($"<loc>{expected}</loc>"));
            }
コード例 #10
0
ファイル: FileNameTests.cs プロジェクト: ibebbs/Wyam
            public void TrimWhitespace()
            {
                // Given
                string input = "   myfile.html   ";
                string output = "myfile.html";

                Engine engine = new Engine();
                Pipeline pipeline = new Pipeline("Pipeline", null);
                IExecutionContext context = new ExecutionContext(engine, pipeline);
                IDocument[] inputs =
                {
                    context.GetDocument(new MetadataItems
                    {
                        new MetadataItem("MyKey", input)
                    })
                };
                FileName fileName = new FileName("MyKey");

                // When
                IEnumerable<IDocument> documents = fileName.Execute(inputs, context);

                // Then
                Assert.AreEqual(output, documents.First().FilePath(Keys.WriteFileName).FullPath);
            }
コード例 #11
0
ファイル: FileNameTests.cs プロジェクト: ibebbs/Wyam
            public void IgnoresNullOrWhiteSpaceStrings(string input)
            {
                // Given
                Engine engine = new Engine();
                Pipeline pipeline = new Pipeline("Pipeline", null);
                IExecutionContext context = new ExecutionContext(engine, pipeline);
                IDocument[] inputs = { context.GetDocument(new MetadataItems
                {
                    new MetadataItem(Keys.SourceFileName, input)
                }) };
                FileName fileName = new FileName();

                // When
                IEnumerable<IDocument> documents = fileName.Execute(inputs, context);

                // Then
                Assert.IsFalse(documents.First().ContainsKey(Keys.WriteFileName));
            }
コード例 #12
0
ファイル: FileNameTests.cs プロジェクト: ibebbs/Wyam
            public void FileNameIsConvertedCorrectlyWithReservedChar(string character)
            {
                // Given
                Engine engine = new Engine();
                Pipeline pipeline = new Pipeline("Pipeline", null);
                IExecutionContext context = new ExecutionContext(engine, pipeline);
                string manyCharactersWow = new String(character[0], 10);
                IDocument[] inputs = { context.GetDocument(new MetadataItems
                {
                    new MetadataItem(Keys.SourceFileName, 
                        string.Format("testing {0} some of {0} these {0}", manyCharactersWow))
                }) };
                FileName fileName = new FileName();

                // When
                IEnumerable<IDocument> documents = fileName.Execute(inputs, context);

                // Then
                Assert.AreEqual("testing-some-of-these-", documents.First().FilePath(Keys.WriteFileName).FullPath);
            }
コード例 #13
0
ファイル: FrontMatterTests.cs プロジェクト: ibebbs/Wyam
            public void MultipleInputDocumentsResultsInMultipleOutputs()
            {
                // Given
                Engine engine = new Engine();
                Pipeline pipeline = new Pipeline("Pipeline", null);
                IExecutionContext context = new ExecutionContext(engine, pipeline);
                IDocument[] inputs = 
                {
                    context.GetDocument(@"AA
-
XX"),
                    context.GetDocument(@"BB
-
YY")
                };
                string frontMatterContent = string.Empty;
                FrontMatter frontMatter = new FrontMatter(new Execute((x, ctx) =>
                {
                    frontMatterContent += x.Content;
                    return new[] {x};
                }));

                // When
                IEnumerable<IDocument> documents = frontMatter.Execute(inputs, context);

                // Then
                Assert.AreEqual(2, documents.Count());
                Assert.AreEqual(@"AA
BB
", frontMatterContent);
                Assert.AreEqual(@"XX", documents.First().Content);
                Assert.AreEqual(@"YY", documents.Skip(1).First().Content);
            }
コード例 #14
0
ファイル: FrontMatterTests.cs プロジェクト: ibebbs/Wyam
            public void SingleCharWithSingleDelimiterSplitsAtCorrectLocation()
            {
                // Given
                Engine engine = new Engine();
                Pipeline pipeline = new Pipeline("Pipeline", null);
                IExecutionContext context = new ExecutionContext(engine, pipeline);
                IDocument[] inputs = 
                {
                    context.GetDocument(@"FM1
FM2
!
Content1
Content2")
                };
                string frontMatterContent = null;
                FrontMatter frontMatter = new FrontMatter('!', new Execute((x, ctx) =>
                {
                    frontMatterContent = x.Content;
                    return new[] {x};
                }));

                // When
                IEnumerable<IDocument> documents = frontMatter.Execute(inputs, context);

                // Then
                Assert.AreEqual(1, documents.Count());
                Assert.AreEqual(@"FM1
FM2
", frontMatterContent);
                Assert.AreEqual(@"Content1
Content2", documents.First().Content);
            }
コード例 #15
0
ファイル: FrontMatterTests.cs プロジェクト: ibebbs/Wyam
            public void SingleCharWithRepeatedDelimiterWithLeadingSpacesDoesNotSplit()
            {
                // Given
                Engine engine = new Engine();
                Pipeline pipeline = new Pipeline("Pipeline", null);
                IExecutionContext context = new ExecutionContext(engine, pipeline);
                IDocument[] inputs = 
                {
                    context.GetDocument(@"FM1
FM2
  !!!!
Content1
Content2")
                };
                bool executed = false;
                FrontMatter frontMatter = new FrontMatter('!', new Execute((x, ctx) =>
                {
                    executed = true;
                    return new[] {x};
                }));

                // When
                IEnumerable<IDocument> documents = frontMatter.Execute(inputs, context);

                // Then
                Assert.AreEqual(1, documents.Count());
                Assert.IsFalse(executed);
                Assert.AreEqual(@"FM1
FM2
  !!!!
Content1
Content2", documents.First().Content);
            }