package de.plushnikov.intellij.plugin.processor.modifier;
import com.intellij.psi.PsiDocumentManager;
import com.intellij.psi.PsiFile;
import com.intellij.psi.PsiLocalVariable;
import com.intellij.psi.PsiModifier;
import com.intellij.psi.PsiType;
import com.intellij.psi.util.PsiTreeUtil;
import com.intellij.testFramework.fixtures.LightCodeInsightFixtureTestCase;
/**
* @author Alexej Kubarev
*/
public class ValModifierTest extends LightCodeInsightFixtureTestCase {
@Override
protected String getTestDataPath() {
return "testData/augment/modifier";
}
@Override
public void setUp() throws Exception {
super.setUp();
myFixture.addClass("package lombok;\npublic @interface val { }");
}
public void testValModifiers() {
PsiFile file = myFixture.configureByFile(getTestName(false) + ".java");
PsiLocalVariable var = PsiTreeUtil.getParentOfType(file.findElementAt(myFixture.getCaretOffset()), PsiLocalVariable.class);
assertNotNull(var);
assertNotNull(var.getModifierList());
assertTrue("val should make variable final", var.getModifierList().hasModifierProperty(PsiModifier.FINAL));
}
public void testValModifiersEditing() {
PsiFile file = myFixture.configureByText("a.java", "import lombok.val;\nclass Foo { {val o = <caret>;} }");
PsiLocalVariable var = PsiTreeUtil.getParentOfType(file.findElementAt(myFixture.getCaretOffset()), PsiLocalVariable.class);
assertNotNull(var);
PsiType type1 = var.getType();
assertNotNull(type1);
assertEquals("lombok.val", type1.getCanonicalText(false));
myFixture.type('1');
PsiDocumentManager.getInstance(getProject()).commitAllDocuments();
assertTrue(var.isValid());
assertNotNull(var.getModifierList());
assertTrue("val should make variable final", var.getModifierList().hasModifierProperty(PsiModifier.FINAL));
}
}