package com.siberika.idea.pascal;
import com.intellij.openapi.projectRoots.Sdk;
import com.intellij.testFramework.LightProjectDescriptor;
import com.intellij.testFramework.fixtures.LightPlatformCodeInsightFixtureTestCase;
import com.siberika.idea.pascal.sdk.FPCSdkType;
import org.jetbrains.annotations.Nullable;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
public class DirectiveTest extends LightPlatformCodeInsightFixtureTestCase {
@Override
protected String getTestDataPath() {
return "testData/directive";
}
@Override
protected LightProjectDescriptor getProjectDescriptor() {
return new PascalProjectDescriptor();
}
public void testDirective() {
myFixture.configureByFiles("compilerDirective.pas");
CompletionTest.checkCompletionContains(myFixture,
"$A ", "$A8", "$DEFINE", "$ELSE", "$IFDEF ", "$IFOPT ", "$INCLUDE ", "$INLINE ", "$Q+", "$R-", "$WARN ");
}
public void testDefine() {
myFixture.configureByFiles("define.pas");
CompletionTest.checkCompletionContains(myFixture, "test1", "test2", "test3");
}
private static Sdk mockPascalSdk = createSdk();
private static Sdk createSdk() {
Sdk sdk = mock(Sdk.class);
FPCSdkType sdkType = new FPCSdkType();
when(sdk.getSdkType()).thenReturn(sdkType);
when(sdk.getVersionString()).thenReturn("2.2.0");
return sdk;
}
private static class PascalProjectDescriptor extends LightProjectDescriptor {
@Nullable
@Override
public Sdk getSdk() {
return mockPascalSdk;
}
}
}