package de.plushnikov.intellij.plugin.processor.modifier;
import com.intellij.psi.PsiClass;
import com.intellij.psi.PsiField;
import com.intellij.psi.PsiFile;
import com.intellij.psi.PsiModifier;
import com.intellij.psi.PsiModifierList;
import com.intellij.psi.util.PsiTreeUtil;
import com.intellij.testFramework.fixtures.LightCodeInsightFixtureTestCase;
/**
* @author Alexej Kubarev
*/
public class ValueModifierTest extends LightCodeInsightFixtureTestCase {
@Override
protected String getTestDataPath() {
return "testData/augment/modifier";
}
@Override
public void setUp() throws Exception {
super.setUp();
myFixture.addClass("package lombok;\npublic @interface Value { }");
}
public void testValueModifiers() {
PsiFile file = myFixture.configureByFile(getTestName(false) + ".java");
PsiField field = PsiTreeUtil.getParentOfType(file.findElementAt(myFixture.getCaretOffset()), PsiField.class);
assertNotNull(field);
assertNotNull(field.getModifierList());
assertTrue("@Value should make variable final", field.getModifierList().hasModifierProperty(PsiModifier.FINAL));
assertTrue("@Value should make variable private", field.getModifierList().hasModifierProperty(PsiModifier.PRIVATE));
PsiClass clazz = PsiTreeUtil.getParentOfType(field, PsiClass.class);
assertNotNull(clazz);
PsiModifierList list = clazz.getModifierList();
assertNotNull(list);
assertTrue("@Value should make class final", list.hasModifierProperty(PsiModifier.FINAL));
assertFalse("@Value should not make class private", list.hasModifierProperty(PsiModifier.PRIVATE));
assertFalse("@Value should not make class static", list.hasModifierProperty(PsiModifier.STATIC));
}
}