package com.jetbrains.dart.analysisServer;
import com.intellij.openapi.roots.OrderRootType;
import com.intellij.openapi.roots.impl.libraries.ProjectLibraryTable;
import com.intellij.testFramework.fixtures.CodeInsightFixtureTestCase;
import com.intellij.util.ArrayUtil;
import com.jetbrains.lang.dart.sdk.DartSdk;
import com.jetbrains.lang.dart.sdk.DartSdkLibUtil;
import com.jetbrains.lang.dart.util.DartTestUtils;
public class DartSdkConfigurationTest extends CodeInsightFixtureTestCase {
@Override
public void setUp() throws Exception {
super.setUp();
DartTestUtils.configureDartSdk(myModule, myFixture.getTestRootDisposable(), true);
}
private static void checkSdkRoots(String sdkHomePath, String[] actualRoots) {
final String[] expectedRoots = {
"file://" + sdkHomePath + "/lib/async",
"file://" + sdkHomePath + "/lib/collection",
"file://" + sdkHomePath + "/lib/convert",
"file://" + sdkHomePath + "/lib/core",
"file://" + sdkHomePath + "/lib/developer",
"file://" + sdkHomePath + "/lib/html",
"file://" + sdkHomePath + "/lib/indexed_db",
"file://" + sdkHomePath + "/lib/io",
"file://" + sdkHomePath + "/lib/isolate",
"file://" + sdkHomePath + "/lib/js",
"file://" + sdkHomePath + "/lib/js_util",
"file://" + sdkHomePath + "/lib/math",
"file://" + sdkHomePath + "/lib/mirrors",
"file://" + sdkHomePath + "/lib/svg",
"file://" + sdkHomePath + "/lib/typed_data",
"file://" + sdkHomePath + "/lib/web_audio",
"file://" + sdkHomePath + "/lib/web_gl",
"file://" + sdkHomePath + "/lib/web_sql",
};
assertOrderedEquals(actualRoots, expectedRoots);
}
public void testSdkRoots() throws Exception {
final DartSdk sdk = DartSdk.getDartSdk(getProject());
assertNotNull(sdk);
final String[] actualRoots =
ProjectLibraryTable.getInstance(getProject()).getLibraries()[0].getRootProvider().getUrls(OrderRootType.CLASSES);
checkSdkRoots(sdk.getHomePath(), actualRoots);
}
public void testSdkRootsFromLibrariesFile() throws Exception {
final DartSdk sdk = DartSdk.getDartSdk(getProject());
assertNotNull(sdk);
final String[] actualRoots = ArrayUtil.toStringArray(DartSdkLibUtil.getRootUrlsFromLibrariesFile(getProject(), sdk.getHomePath()));
checkSdkRoots(sdk.getHomePath(), actualRoots);
}
public void testSdkRootsUsingBlacklist() throws Exception {
final DartSdk sdk = DartSdk.getDartSdk(getProject());
assertNotNull(sdk);
final String[] actualRoots = ArrayUtil.toStringArray(DartSdkLibUtil.getRootUrlsFailover(sdk.getHomePath()));
checkSdkRoots(sdk.getHomePath(), actualRoots);
}
}