package org.asciidoc.intellij.lexer; import com.intellij.lexer.Lexer; import com.intellij.testFramework.LexerTestCase; /** * @author yole */ public class AsciiDocLexerTest extends LexerTestCase { public void testSimple() { doTest("abc\ndef", "AsciiDoc:TEXT ('abc')\n" + "AsciiDoc:LINE_BREAK ('\\n')\n" + "AsciiDoc:TEXT ('def')"); } public void testLineComment() { doTest("// foo\n// bar", "AsciiDoc:LINE_COMMENT ('// foo')\n" + "AsciiDoc:LINE_BREAK ('\\n')\n" + "AsciiDoc:LINE_COMMENT ('// bar')"); } public void testListing() { doTest("some text at start\n----\nbbbb\n----\ncccc", "AsciiDoc:TEXT ('some text at start')\n" + "AsciiDoc:LINE_BREAK ('\\n')\n" + "AsciiDoc:LISTING_BLOCK_DELIMITER ('----\\n')\n" + "AsciiDoc:LISTING_TEXT ('bbbb')\n" + "AsciiDoc:LINE_BREAK ('\\n')\n" + "AsciiDoc:LISTING_BLOCK_DELIMITER ('----\\n')\n" + "AsciiDoc:TEXT ('cccc')"); } public void testHeading() { doTest("= Abc\nabc\n== Def\ndef", "AsciiDoc:HEADING ('= Abc')\n" + "AsciiDoc:LINE_BREAK ('\\n')\n" + "AsciiDoc:TEXT ('abc')\n" + "AsciiDoc:LINE_BREAK ('\\n')\n" + "AsciiDoc:HEADING ('== Def')\n" + "AsciiDoc:LINE_BREAK ('\\n')\n" + "AsciiDoc:TEXT ('def')"); } public void testHeadingOldStyle() { doTest("Abc\n===\ndef", "AsciiDoc:HEADING ('Abc\\n===\\n')\n" + "AsciiDoc:TEXT ('def')"); } public void testCommentBlock() { doTest("////\nfoo bar\n////\nabc", "AsciiDoc:BLOCK_COMMENT ('////\\nfoo bar')\n" + "AsciiDoc:LINE_BREAK ('\\n')\n" + "AsciiDoc:BLOCK_COMMENT ('////\\n')\n" + "AsciiDoc:TEXT ('abc')"); } public void testBlockMacro() { doTest("image::foo.png[Caption]\nabc", "AsciiDoc:BLOCK_MACRO_ID ('image::')\n" + "AsciiDoc:BLOCK_MACRO_BODY ('foo.png')\n" + "AsciiDoc:BLOCK_MACRO_ATTRIBUTES ('[Caption]')\n" + "AsciiDoc:LINE_BREAK ('\\n')\n" + "AsciiDoc:TEXT ('abc')"); } public void testExample() { doTest("====\nFoo Bar Baz\n====\n", "AsciiDoc:EXAMPLE_BLOCK_DELIMITER ('====\\n')\n" + "AsciiDoc:EXAMPLE_BLOCK ('Foo Bar Baz')\n" + "AsciiDoc:LINE_BREAK ('\\n')\n" + "AsciiDoc:EXAMPLE_BLOCK_DELIMITER ('====\\n')"); } public void testTitle() { doTest(".Foo bar baz\nFoo bar baz", "AsciiDoc:TITLE ('.Foo bar baz')\n" + "AsciiDoc:LINE_BREAK ('\\n')\n" + "AsciiDoc:TEXT ('Foo bar baz')"); } public void testBlockAttrs() { doTest("[NOTE]\n", "AsciiDoc:BLOCK_ATTRS_START ('[')\n" + "AsciiDoc:BLOCK_ATTR_NAME ('NOTE')\n" + "AsciiDoc:BLOCK_ATTRS_END (']')\n" + "AsciiDoc:LINE_BREAK ('\\n')"); } public void testUnclosedBlockAttrs() { doTest("[\nfoo", "AsciiDoc:BLOCK_ATTRS_START ('[')\n" + "AsciiDoc:LINE_BREAK ('\\n')\n" + "AsciiDoc:TEXT ('foo')"); } public void testSidebar() { doTest("****\nFoo Bar Baz\n****\n", "AsciiDoc:SIDEBAR_BLOCK_DELIMITER ('****\\n')\n" + "AsciiDoc:SIDEBAR_BLOCK ('Foo Bar Baz')\n" + "AsciiDoc:LINE_BREAK ('\\n')\n" + "AsciiDoc:SIDEBAR_BLOCK_DELIMITER ('****\\n')"); } @Override protected Lexer createLexer() { return new AsciiDocLexer(); } @Override protected String getDirPath() { return null; } }