public void OneLine() { string source = @"I am amazing."; var expected = new TokenListBuilder() .String(0, 0, "I am amazing."); Tokenizer nizer = new Tokenizer(); List<Token> actual = nizer.Tokenize(source); CollectionAssert.AreEqual(expected.List, actual); }
public void AccidentalOrderedList() { string source = @"1987\. What a great year to be born."; var expected = new TokenListBuilder() .String(0, 0, "1987. What a great year to be born."); Tokenizer nizer = new Tokenizer(); List<Token> actual = nizer.Tokenize(source); CollectionAssert.AreEqual(expected.List, actual); }
public void Plus_OneItem() { string source = @"+ Item"; var expected = new TokenListBuilder() .UnorderedList(0, 0) .String(0, 2, "Item"); Tokenizer nizer = new Tokenizer(); List<Token> actual = nizer.Tokenize(source); CollectionAssert.AreEqual(expected.List, actual); }
public void OneLine_Header3() { var tokens = new TokenListBuilder() .Header3(0, 0) .String(0, 4, "Header 3"); string expected = "<h3>Header 3</h3>"; HtmlEmitter emitter = new HtmlEmitter(); string actual = emitter.Emit(tokens.List); Assert.AreEqual(expected, actual); }
public void OneItemLargeIndexNumber() { string source = @"123. Item"; var expected = new TokenListBuilder() .OrderedList(0, 0) .String(0, 5, "Item"); Tokenizer nizer = new Tokenizer(); List<Token> actual = nizer.Tokenize(source); CollectionAssert.AreEqual(expected.List, actual); }
public void Header1_OneLine_Valid() { string source = @"# Header1"; var expected = new TokenListBuilder() .Header1(0, 0) .String(0, 2, "Header1"); Tokenizer nizer = new Tokenizer(); List<Token> actual = nizer.Tokenize(source); CollectionAssert.AreEqual(expected.List, actual); }
public void StartText_OneLink_Http() { string source = @"[A link](http://domain.tld/folder/file.ext) in a text"; var expected = new TokenListBuilder() .LinkLabel(0, 0, "A link") .LinkUrl(0, 8, "http://domain.tld/folder/file.ext") .String(0, 43, " in a text"); Tokenizer nizer = new Tokenizer(); List<Token> actual = nizer.Tokenize(source); CollectionAssert.AreEqual(expected.List, actual); }
public void EndText_OneLink_Http() { string source = @"This is a text with [a link](http://domain.tld/folder/file.ext)"; var expected = new TokenListBuilder() .String(0, 0, "This is a text with ") .LinkLabel(0, 20, "a link") .LinkUrl(0, 28, "http://domain.tld/folder/file.ext"); Tokenizer nizer = new Tokenizer(); List<Token> actual = nizer.Tokenize(source); CollectionAssert.AreEqual(expected.List, actual); }
public void PlainText_SingleParagraph() { var tokens = new TokenListBuilder() .String(0, 0, "First part of ") .Newline(0, 13) .String(1, 0, "a long string"); string expected = "<p>First part of a long string</p>"; HtmlEmitter emitter = new HtmlEmitter(); string actual = emitter.Emit(tokens.List); Assert.AreEqual(expected, actual); }
public void NestedOneLine() { string source = @">> something quoted"; var expected = new TokenListBuilder() .Blockquote(0, 0) .Blockquote(0, 1) .String(0, 3, "something quoted"); Tokenizer nizer = new Tokenizer(); List<Token> actual = nizer.Tokenize(source); CollectionAssert.AreEqual(expected.List, actual); }
public void Header1_NewlineBefore_Valid() { string source = "\n# Header1"; var expected = new TokenListBuilder() .Newline(0, 0) .Header1(1, 0) .String(1, 2, "Header1"); Tokenizer nizer = new Tokenizer(); List<Token> actual = nizer.Tokenize(source); CollectionAssert.AreEqual(expected.List, actual); }
public void Emphasis_EndText() { string source = @"He looks _strong_"; var expected = new TokenListBuilder() .String(0, 0, "He looks ") .Emphasis(0, 9) .String(0, 10, "strong") .Emphasis(0, 16); Tokenizer nizer = new Tokenizer(); List<Token> actual = nizer.Tokenize(source); CollectionAssert.AreEqual(expected.List, actual); }
public void Header2_NewlineAfter_Valid() { string source = @"## Header2 "; var expected = new TokenListBuilder() .Header2(0, 0) .String(0, 3, "Header2") .Newline(0, 10); Tokenizer nizer = new Tokenizer(); List<Token> actual = nizer.Tokenize(source); CollectionAssert.AreEqual(expected.List, actual); }
public void MultipleLines() { string source = @"I am amazing. And everyone knows it :)"; var expected = new TokenListBuilder() .String(0, 0, "I am amazing.") .Newline(0, 13) .String(1, 0, "And everyone knows it :)"); Tokenizer nizer = new Tokenizer(); List<Token> actual = nizer.Tokenize(source); CollectionAssert.AreEqual(expected.List, actual); }
public void Emphasis_StartText() { string source = @"_Strong_ words, sir."; var expected = new TokenListBuilder() .Emphasis(0, 0) .String(0, 1, "Strong") .Emphasis(0, 7) .String(0, 8, " words, sir."); Tokenizer nizer = new Tokenizer(); List<Token> actual = nizer.Tokenize(source); CollectionAssert.AreEqual(expected.List, actual); }
public void Empty_WithLang() { string source = @"```javascript ```"; var expected = new TokenListBuilder() .CodeOpen(0, 0, "javascript") .Newline(0, 13) .CodeClose(1, 0); Tokenizer nizer = new Tokenizer(); List<Token> actual = nizer.Tokenize(source); CollectionAssert.AreEqual(expected.List, actual); }
public void WithFormatting_Emphasis() { var tokens = new TokenListBuilder() .String(0, 0, "String with ") .Emphasis(0, 12) .String(0, 13, "emphasis") .Emphasis(0, 21) .String(0, 22, " formatting"); string expected = "<p>String with <em>emphasis</em> formatting</p>"; HtmlEmitter emitter = new HtmlEmitter(); string actual = emitter.Emit(tokens.List); Assert.AreEqual(expected, actual); }
public void OneLevel() { var tokens = new TokenListBuilder() .Blockquote(0, 0) .String(0, 2, "Something quoted") .Newline(0, 18) .Blockquote(1, 0) .String(1, 2, "Second line of quote"); string expected = "<blockquote><p>Something quoted</p><p>Second line of quote</p></blockquote>"; HtmlEmitter emitter = new HtmlEmitter(); string actual = emitter.Emit(tokens.List); Assert.AreEqual(expected, actual); }
public void MultipleLines() { string source = @"> something quoted > second line"; var expected = new TokenListBuilder() .Blockquote(0, 0) .String(0, 2, "something quoted") .Newline(0, 18) .Blockquote(1, 0) .String(1, 2, "second line"); Tokenizer nizer = new Tokenizer(); List<Token> actual = nizer.Tokenize(source); CollectionAssert.AreEqual(expected.List, actual); }
public void Nested() { var tokens = new TokenListBuilder() .Blockquote(0, 0) .Blockquote(0, 1) .String(0, 2, "Oldest quote") .Newline(0, 19) .Blockquote(1, 0) .String(1, 2, "Newer quote"); string expected = "<blockquote><blockqoute><p>Oldest quote</p></blockquote><p>Newer quote</p></blockquote>"; HtmlEmitter emitter = new HtmlEmitter(); string actual = emitter.Emit(tokens.List); Assert.AreEqual(expected, actual); }
public void Mixed_MidText() { string source = @"He looks *_strong_* tonight."; var expected = new TokenListBuilder() .String(0, 0, "He looks ") .Strong(0, 9) .Emphasis(0, 10) .String(0, 11, "strong") .Emphasis(0, 17) .Strong(0, 18) .String(0, 19, " tonight."); Tokenizer nizer = new Tokenizer(); List<Token> actual = nizer.Tokenize(source); CollectionAssert.AreEqual(expected.List, actual); }
public void WithFormatting_Mixed() { var tokens = new TokenListBuilder() .String(0, 0, "He looks ") .Strong(0, 9) .Emphasis(0, 10) .String(0, 11, "strong") .Emphasis(0, 17) .Strong(0, 18) .String(0, 19, " tonight."); string expected = "<p>He looks <strong><em>strong</em></strong> tonight.</p>"; HtmlEmitter emitter = new HtmlEmitter(); string actual = emitter.Emit(tokens.List); Assert.AreEqual(expected, actual); }
public void Unordered() { var tokens = new TokenListBuilder() .UnorderedList(0, 0) .String(0, 2, "Item 1") .Newline(0, 8) .UnorderedList(1, 0) .String(1, 2, "Item 2") .Newline(1, 8) .UnorderedList(2, 0) .String(2, 2, "Item 3"); string expected = "<ul><li>Item 1</li><li>Item 2</li><li>Item 3</li></ul>"; HtmlEmitter emitter = new HtmlEmitter(); string actual = emitter.Emit(tokens.List); Assert.AreEqual(expected, actual); }
public void MixedNesting() { string source = @">> something quoted > more recent quote And this is now"; var expected = new TokenListBuilder() .Blockquote(0, 0) .Blockquote(0, 1) .String(0, 3, "something quoted") .Newline(0, 19) .Blockquote(1, 0) .String(1, 2, "more recent quote") .Newline(1, 19) .String(2, 0, "And this is now"); Tokenizer nizer = new Tokenizer(); List<Token> actual = nizer.Tokenize(source); CollectionAssert.AreEqual(expected.List, actual); }
public void Mixed_ThreeItems() { string source = @"- Item 1 * Item 2 + Item 3"; var expected = new TokenListBuilder() .UnorderedList(0, 0) .String(0, 2, "Item 1") .Newline(0, 8) .UnorderedList(1, 0) .String(1, 2, "Item 2") .Newline(1, 8) .UnorderedList(2, 0) .String(2, 2, "Item 3"); Tokenizer nizer = new Tokenizer(); List<Token> actual = nizer.Tokenize(source); CollectionAssert.AreEqual(expected.List, actual); }
public void Underline_Header1() { var tokens = new TokenListBuilder() .String(0, 0, "Header 1") .Newline(0, 8) .StrongLine(1, 0) .StrongLine(1, 1) .StrongLine(1, 2) .StrongLine(1, 3) .StrongLine(1, 4) .StrongLine(1, 5) .StrongLine(1, 6) .StrongLine(1, 7); string expected = "<h1>Header 1</h1>"; HtmlEmitter emitter = new HtmlEmitter(); string actual = emitter.Emit(tokens.List); Assert.AreEqual(expected, actual); }
public void ThreeItems() { string source = @"1. Item 1 2. Item 2 3. Item 3"; var expected = new TokenListBuilder() .OrderedList(0, 0) .String(0, 3, "Item 1") .Newline(0, 9) .OrderedList(1, 0) .String(1, 3, "Item 2") .Newline(1, 9) .OrderedList(2, 0) .String(2, 3, "Item 3"); Tokenizer nizer = new Tokenizer(); List<Token> actual = nizer.Tokenize(source); CollectionAssert.AreEqual(expected.List, actual); }
public void ThreeLines_NewlineAfter_Valid() { string source = @"Header1 ======= "; var expected = new TokenListBuilder() .String(0, 0, "Header1") .Newline(0, 7) .StrongLine(1, 0) .StrongLine(1, 1) .StrongLine(1, 2) .StrongLine(1, 3) .StrongLine(1, 4) .StrongLine(1, 5) .StrongLine(1, 6) .Newline(1, 7); Tokenizer nizer = new Tokenizer(); List<Token> actual = nizer.Tokenize(source); CollectionAssert.AreEqual(expected.List, actual); }
public void Plain_WithCode() { var tokens = new TokenListBuilder() .CodeOpen(0, 0, "plain") .Newline(0, 3) .Verbatim(1, 0, "for (var i=0; i<10; i++) {") .Newline(1, 26) .Verbatim(2, 0, "\t// do something") .Newline(2, 16) .Verbatim(3, 0, "}") .Newline(3, 1) .CodeClose(4, 0); string expected = @"<pre>for (var i=0; i<10; i++) { // do something }</pre>"; HtmlEmitter emitter = new HtmlEmitter(); string actual = emitter.Emit(tokens.List); Assert.AreEqual(expected, actual); }
public void ThreeLines_NewlineBefore_Valid() { string source = @" Header2 -------"; var expected = new TokenListBuilder() .Newline(0, 0) .String(1, 0, "Header2") .Newline(1, 7) .Line(2, 0) .Line(2, 1) .Line(2, 2) .Line(2, 3) .Line(2, 4) .Line(2, 5) .Line(2, 6); Tokenizer nizer = new Tokenizer(); List<Token> actual = nizer.Tokenize(source); CollectionAssert.AreEqual(expected.List, actual); }