package org.osmorc.manifest.lang; import com.intellij.psi.PsiFile; import com.intellij.psi.impl.DebugUtil; import com.intellij.testFramework.LightIdeaTestCase; public class NewParsingTest extends LightIdeaTestCase { public void testEmpty() { doTest("", "ManifestFile:MANIFEST.MF\n" + " <empty list>\n"); } public void testSpaces() { doTest(" ", "ManifestFile:MANIFEST.MF\n" + " org.osmorc.manifest.lang.psi.impl.SectionImpl\n" + " ManifestToken: ManifestTokenType: SIGNIFICANT_SPACE_TOKEN(' ')\n" + " org.osmorc.manifest.lang.psi.impl.ClauseImpl\n" + " org.osmorc.manifest.lang.psi.impl.HeaderValuePartImpl\n" + " ManifestToken: ManifestTokenType: HEADER_VALUE_PART_TOKEN(' ')\n"); } public void testNoHeader() { doTest(" some text", "ManifestFile:MANIFEST.MF\n" + " org.osmorc.manifest.lang.psi.impl.SectionImpl\n" + " ManifestToken: ManifestTokenType: SIGNIFICANT_SPACE_TOKEN(' ')\n" + " org.osmorc.manifest.lang.psi.impl.ClauseImpl\n" + " org.osmorc.manifest.lang.psi.impl.HeaderValuePartImpl\n" + " ManifestToken: ManifestTokenType: HEADER_VALUE_PART_TOKEN('some text')\n"); } public void testNewLine() { doTest("\n", "ManifestFile:MANIFEST.MF\n" + " org.osmorc.manifest.lang.psi.impl.SectionImpl\n" + " <empty list>\n" + " ManifestToken: ManifestTokenType: SECTION_END_TOKEN('\\n')\n"); } public void testNewLines() { doTest("\n\n", "ManifestFile:MANIFEST.MF\n" + " org.osmorc.manifest.lang.psi.impl.SectionImpl\n" + " <empty list>\n" + " ManifestToken: ManifestTokenType: SECTION_END_TOKEN('\\n')\n" + " org.osmorc.manifest.lang.psi.impl.SectionImpl\n" + " <empty list>\n" + " ManifestToken: ManifestTokenType: SECTION_END_TOKEN('\\n')\n"); } public void testSimple() { doTest("Manifest-Version: 1.0\n", "ManifestFile:MANIFEST.MF\n" + " org.osmorc.manifest.lang.psi.impl.SectionImpl\n" + " org.osmorc.manifest.lang.psi.impl.HeaderImpl\n" + " ManifestToken: ManifestTokenType: HEADER_NAME_TOKEN('Manifest-Version')\n" + " ManifestToken: ManifestTokenType: COLON_TOKEN(':')\n" + " ManifestToken: ManifestTokenType: SIGNIFICANT_SPACE_TOKEN(' ')\n" + " org.osmorc.manifest.lang.psi.impl.ClauseImpl\n" + " org.osmorc.manifest.lang.psi.impl.HeaderValuePartImpl\n" + " ManifestToken: ManifestTokenType: HEADER_VALUE_PART_TOKEN('1.0')\n" + " ManifestToken: ManifestTokenType: NEWLINE_TOKEN('\\n')\n"); } public void testSimpleWithNewLines() throws Exception { doTest("Manifest-Version: 1.0\n\n", "ManifestFile:MANIFEST.MF\n" + " org.osmorc.manifest.lang.psi.impl.SectionImpl\n" + " org.osmorc.manifest.lang.psi.impl.HeaderImpl\n" + " ManifestToken: ManifestTokenType: HEADER_NAME_TOKEN('Manifest-Version')\n" + " ManifestToken: ManifestTokenType: COLON_TOKEN(':')\n" + " ManifestToken: ManifestTokenType: SIGNIFICANT_SPACE_TOKEN(' ')\n" + " org.osmorc.manifest.lang.psi.impl.ClauseImpl\n" + " org.osmorc.manifest.lang.psi.impl.HeaderValuePartImpl\n" + " ManifestToken: ManifestTokenType: HEADER_VALUE_PART_TOKEN('1.0')\n" + " ManifestToken: ManifestTokenType: NEWLINE_TOKEN('\\n')\n" + " ManifestToken: ManifestTokenType: SECTION_END_TOKEN('\\n')\n"); } public void testSimpleIncomplete() throws Exception { doTest("Manifest-Version:", "ManifestFile:MANIFEST.MF\n" + " org.osmorc.manifest.lang.psi.impl.SectionImpl\n" + " org.osmorc.manifest.lang.psi.impl.HeaderImpl\n" + " ManifestToken: ManifestTokenType: HEADER_NAME_TOKEN('Manifest-Version')\n" + " ManifestToken: ManifestTokenType: COLON_TOKEN(':')\n"); } public void testSimpleIncompleteWithNewLine() throws Exception { doTest("Manifest-Version:\n", "ManifestFile:MANIFEST.MF\n" + " org.osmorc.manifest.lang.psi.impl.SectionImpl\n" + " org.osmorc.manifest.lang.psi.impl.HeaderImpl\n" + " ManifestToken: ManifestTokenType: HEADER_NAME_TOKEN('Manifest-Version')\n" + " ManifestToken: ManifestTokenType: COLON_TOKEN(':')\n" + " ManifestToken: ManifestTokenType: NEWLINE_TOKEN('\\n')\n"); } public void testSimpleIncompleteWithNewLines() throws Exception { doTest("Manifest-Version:\n\n", "ManifestFile:MANIFEST.MF\n" + " org.osmorc.manifest.lang.psi.impl.SectionImpl\n" + " org.osmorc.manifest.lang.psi.impl.HeaderImpl\n" + " ManifestToken: ManifestTokenType: HEADER_NAME_TOKEN('Manifest-Version')\n" + " ManifestToken: ManifestTokenType: COLON_TOKEN(':')\n" + " ManifestToken: ManifestTokenType: NEWLINE_TOKEN('\\n')\n" + " ManifestToken: ManifestTokenType: SECTION_END_TOKEN('\\n')\n"); } public void testSimpleWithContinuation() { doTest("Bundle-Vendor: Acme\n" + " Company\n", "ManifestFile:MANIFEST.MF\n" + " org.osmorc.manifest.lang.psi.impl.SectionImpl\n" + " org.osmorc.manifest.lang.psi.impl.HeaderImpl\n" + " ManifestToken: ManifestTokenType: HEADER_NAME_TOKEN('Bundle-Vendor')\n" + " ManifestToken: ManifestTokenType: COLON_TOKEN(':')\n" + " ManifestToken: ManifestTokenType: SIGNIFICANT_SPACE_TOKEN(' ')\n" + " org.osmorc.manifest.lang.psi.impl.ClauseImpl\n" + " org.osmorc.manifest.lang.psi.impl.HeaderValuePartImpl\n" + " ManifestToken: ManifestTokenType: HEADER_VALUE_PART_TOKEN('Acme')\n" + " ManifestToken: ManifestTokenType: NEWLINE_TOKEN('\\n')\n" + " ManifestToken: ManifestTokenType: SIGNIFICANT_SPACE_TOKEN(' ')\n" + " ManifestToken: ManifestTokenType: HEADER_VALUE_PART_TOKEN('Company')\n" + " ManifestToken: ManifestTokenType: NEWLINE_TOKEN('\\n')\n"); } public void testTwoLines() { doTest("Manifest-Version: 1.0\n" + "Ant-Version: Apache Ant 1.6.5\n", "ManifestFile:MANIFEST.MF\n" + " org.osmorc.manifest.lang.psi.impl.SectionImpl\n" + " org.osmorc.manifest.lang.psi.impl.HeaderImpl\n" + " ManifestToken: ManifestTokenType: HEADER_NAME_TOKEN('Manifest-Version')\n" + " ManifestToken: ManifestTokenType: COLON_TOKEN(':')\n" + " ManifestToken: ManifestTokenType: SIGNIFICANT_SPACE_TOKEN(' ')\n" + " org.osmorc.manifest.lang.psi.impl.ClauseImpl\n" + " org.osmorc.manifest.lang.psi.impl.HeaderValuePartImpl\n" + " ManifestToken: ManifestTokenType: HEADER_VALUE_PART_TOKEN('1.0')\n" + " ManifestToken: ManifestTokenType: NEWLINE_TOKEN('\\n')\n" + " org.osmorc.manifest.lang.psi.impl.HeaderImpl\n" + " ManifestToken: ManifestTokenType: HEADER_NAME_TOKEN('Ant-Version')\n" + " ManifestToken: ManifestTokenType: COLON_TOKEN(':')\n" + " ManifestToken: ManifestTokenType: SIGNIFICANT_SPACE_TOKEN(' ')\n" + " org.osmorc.manifest.lang.psi.impl.ClauseImpl\n" + " org.osmorc.manifest.lang.psi.impl.HeaderValuePartImpl\n" + " ManifestToken: ManifestTokenType: HEADER_VALUE_PART_TOKEN('Apache Ant 1.6.5')\n" + " ManifestToken: ManifestTokenType: NEWLINE_TOKEN('\\n')\n"); } public void testTwoSections() { doTest("Manifest-Version: 1.0\n\n" + "Ant-Version: Apache Ant 1.6.5\n\n", "ManifestFile:MANIFEST.MF\n" + " org.osmorc.manifest.lang.psi.impl.SectionImpl\n" + " org.osmorc.manifest.lang.psi.impl.HeaderImpl\n" + " ManifestToken: ManifestTokenType: HEADER_NAME_TOKEN('Manifest-Version')\n" + " ManifestToken: ManifestTokenType: COLON_TOKEN(':')\n" + " ManifestToken: ManifestTokenType: SIGNIFICANT_SPACE_TOKEN(' ')\n" + " org.osmorc.manifest.lang.psi.impl.ClauseImpl\n" + " org.osmorc.manifest.lang.psi.impl.HeaderValuePartImpl\n" + " ManifestToken: ManifestTokenType: HEADER_VALUE_PART_TOKEN('1.0')\n" + " ManifestToken: ManifestTokenType: NEWLINE_TOKEN('\\n')\n" + " ManifestToken: ManifestTokenType: SECTION_END_TOKEN('\\n')\n" + " org.osmorc.manifest.lang.psi.impl.SectionImpl\n" + " org.osmorc.manifest.lang.psi.impl.HeaderImpl\n" + " ManifestToken: ManifestTokenType: HEADER_NAME_TOKEN('Ant-Version')\n" + " ManifestToken: ManifestTokenType: COLON_TOKEN(':')\n" + " ManifestToken: ManifestTokenType: SIGNIFICANT_SPACE_TOKEN(' ')\n" + " org.osmorc.manifest.lang.psi.impl.ClauseImpl\n" + " org.osmorc.manifest.lang.psi.impl.HeaderValuePartImpl\n" + " ManifestToken: ManifestTokenType: HEADER_VALUE_PART_TOKEN('Apache Ant 1.6.5')\n" + " ManifestToken: ManifestTokenType: NEWLINE_TOKEN('\\n')\n" + " ManifestToken: ManifestTokenType: SECTION_END_TOKEN('\\n')\n"); } private static void doTest(final String source, final String expected) { final PsiFile file = createLightFile("MANIFEST.MF", source); assertEquals(expected, DebugUtil.psiToString(file, true).replaceAll("@[0-9a-f]+", "")); } }