package org.osmorc.util;
import com.intellij.openapi.command.WriteCommandAction;
import org.jetbrains.lang.manifest.psi.ManifestFile;
import org.osmorc.LightOsgiFixtureTestCase;
public class OsgiPsiUtilTest extends LightOsgiFixtureTestCase {
public void testSetHeaderInEmptyManifest() {
doTest(
"",
"TestHeader: TestValue\n",
true);
}
public void testSetHeaderInHalfEmptyManifest() {
doTest(
"\n",
"TestHeader: TestValue\n\n",
true);
}
public void testSetHeaderInNonEmptyManifest() {
doTest(
"Bundle-Version: 1.0\n",
"Bundle-Version: 1.0\n" +
"TestHeader: TestValue\n",
true);
}
public void testReplaceHeaderInManifest() {
doTest(
"TestHeader: OldValue\n",
"TestHeader: TestValue\n",
true);
}
public void testAppendToEmptyHeader() throws Exception {
doTest(
"TestHeader: \n",
"TestHeader: TestValue\n",
false);
}
public void testAppendToNonEmptyHeader() throws Exception {
doTest(
"TestHeader: \n" +
" OldValue1,\n" +
" OldValue2\n",
"TestHeader: \n" +
" OldValue1,\n" +
" OldValue2,\n" +
" TestValue\n",
false);
}
private void doTest(String original, String expected, final boolean replace) {
myFixture.configureByText("MANIFEST.MF", original);
WriteCommandAction.runWriteCommandAction(null, () -> {
ManifestFile manifestFile = (ManifestFile)myFixture.getFile();
if (replace) {
OsgiPsiUtil.setHeader(manifestFile, "TestHeader", "TestValue");
}
else {
OsgiPsiUtil.appendToHeader(manifestFile, "TestHeader", "TestValue");
}
});
myFixture.checkResult(expected);
}
}