package org.asciidoc.intellij.psi; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiFile; import com.intellij.psi.PsiReference; import com.intellij.psi.util.PsiTreeUtil; import com.intellij.testFramework.fixtures.LightPlatformCodeInsightFixtureTestCase; import org.asciidoc.intellij.file.AsciiDocFileType; /** * @author yole */ public class AsciiDocPsiTest extends LightPlatformCodeInsightFixtureTestCase { public void testImageBlockMacro() { PsiFile psiFile = configureByAsciiDoc("image::foo.png[Foo]"); AsciiDocBlockMacro blockMacro = (AsciiDocBlockMacro) psiFile.getChildren()[0]; assertEquals("image", blockMacro.getMacroName()); PsiReference[] references = blockMacro.getReferences(); assertEquals(1, references.length); } public void testExampleBlock() { PsiFile psiFile = configureByAsciiDoc("====\nfoo\n====\n"); PsiElement[] children = psiFile.getChildren(); assertEquals(1, children.length); assertInstanceOf(children[0], AsciiDocBlock.class); } public void testExampleBlockWithTitle() { PsiFile psiFile = configureByAsciiDoc(".Xyzzy\n====\nfoo\n====\n"); PsiElement[] children = psiFile.getChildren(); assertEquals(1, children.length); AsciiDocBlock block = (AsciiDocBlock) children[0]; assertEquals("Xyzzy", block.getTitle()); } public void testImageBlockMacroWithTitle() { PsiFile psiFile = configureByAsciiDoc(".Xyzzy\nimage::foo.png[]"); PsiElement[] children = psiFile.getChildren(); assertEquals(1, children.length); AsciiDocBlockMacro blockMacro = (AsciiDocBlockMacro) children[0]; assertEquals("image", blockMacro.getMacroName()); assertEquals("Xyzzy", blockMacro.getTitle()); } public void testBlockAttributes() { PsiFile psiFile = configureByAsciiDoc("[NOTE]\n====\nfoo\n====\n"); PsiElement[] children = psiFile.getChildren(); assertEquals(1, children.length); AsciiDocBlock block = (AsciiDocBlock) children[0]; assertEquals("NOTE", block.getStyle()); } public void testBlockFollowedBySomethingLookingLikeAHeaderButActuallyPlainText() { PsiFile psiFile = configureByAsciiDoc("====\n\n==== Test\n"); PsiElement[] children = psiFile.getChildren(); assertEquals(2, children.length); AsciiDocBlock block = (AsciiDocBlock) children[0]; assertEquals("====\n\n==== Test", block.getText()); } public void testSidebarBlockWithTitle() { PsiFile psiFile = configureByAsciiDoc(".Xyzzy\n****\nfoo\n****\n"); PsiElement[] children = psiFile.getChildren(); assertEquals(1, children.length); AsciiDocBlock block = (AsciiDocBlock) children[0]; assertEquals("Xyzzy", block.getTitle()); } public void testListingBlockAttributesThenSidebar() { PsiFile psiFile = configureByAsciiDoc("[source]\n----\nfoo\n----\n<1> Bar\n\n.Title\n****\nFoo\n****\n"); AsciiDocBlock[] blocks = PsiTreeUtil.getChildrenOfType(psiFile, AsciiDocBlock.class); assertEquals(2, blocks.length); } private PsiFile configureByAsciiDoc(String text) { return myFixture.configureByText(AsciiDocFileType.INSTANCE, text); } }