package com.intellij.flex.projectView; import com.intellij.flex.util.FlexTestUtils; import com.intellij.ide.projectView.ProjectView; import com.intellij.ide.projectView.impl.AbstractProjectViewPSIPane; import com.intellij.ide.projectView.impl.ProjectViewImpl; import com.intellij.javascript.flex.css.FlexStylesIndexableSetContributor; import com.intellij.openapi.vfs.newvfs.impl.VfsRootAccess; import com.intellij.projectView.BaseProjectViewTestCase; import com.intellij.testFramework.PlatformTestUtil; import com.intellij.util.ui.tree.TreeUtil; import static com.intellij.openapi.vfs.VfsUtilCore.convertFromUrl; import static com.intellij.openapi.vfs.VfsUtilCore.urlToPath; public class FlexProjectViewTest extends BaseProjectViewTestCase { private static final String PANE_ID = ""; protected AbstractProjectViewPSIPane myPane; @Override protected void setUp() throws Exception { VfsRootAccess.allowRootAccess(getTestRootDisposable(), urlToPath(convertFromUrl(FlexStylesIndexableSetContributor.class.getResource("FlexStyles.as")))); super.setUp(); } @Override protected void tearDown() throws Exception { myPane = null; super.tearDown(); } @Override protected String getTestDataPath() { return FlexTestUtils.getTestDataPath(""); } @Override protected void setUpJdk() { // no JDK } @Override protected String getTestDirectoryName() { String testName = getTestName(false); return testName.startsWith("Swf") ? "lib" : testName; } private void doTest(boolean sortByType, boolean hideEmptyMiddlePackages, boolean flattenPackages, boolean showMembers, String expected) { myPane = myStructure.createPane(); ProjectViewImpl projectView = (ProjectViewImpl)ProjectView.getInstance(myProject); //ProjectViewTestUtil.setupImpl(getProject(), false); projectView.addProjectPane(myPane); projectView.setSortByType(PANE_ID, sortByType); myStructure.setShowMembers(showMembers); myStructure.setHideEmptyMiddlePackages(hideEmptyMiddlePackages); myStructure.setFlattenPackages(flattenPackages); TreeUtil.expandAll(myPane.getTree()); PlatformTestUtil.assertTreeEqual(myPane.getTree(), expected + "\n" + getRootFiles() + " External Libraries\n", true); } public void testSwfSortByName() { doTest(false, false, false, false, "-Project\n" + " -PsiDirectory: lib\n" + " -library.swf\n" + " -b\n" + " -zz\n" + " -supb\n" + " -subp2\n" + " -subp3\n" + " -p4\n" + " Cl3\n" + " Cl2\n" + " Class1\n" + " -com\n" + " -foo\n" + " Abc\n" + " _f88e99c07c4ddd0d4cc87856b293119472de97251391839c016c3581d9799c24_flash_display_Sprite\n" + " aClass\n" + " bClass\n" + " Interface1\n" + " myConst\n" + " myfunc\n" + " MyNs\n" + " myVar" ); } public void testSwfSortByNameWithMembers() { doTest(false, false, false, true, "-Project\n" + " -PsiDirectory: lib\n" + " -library.swf\n" + " -b\n" + " -zz\n" + " -supb\n" + " -subp2\n" + " -subp3\n" + " -p4\n" + " -Cl3\n" + " c:uint\n" + " Cl3()\n" + " foo1(String, Boolean, *):*\n" + " foo2(Array):void\n" + " foo3(Number):*\n" + " foo4():String\n" + " v1:*\n" + " v2:String\n" + " v3:*\n" + " v4:Object\n" + " -Cl2\n" + " Cl2()\n" + " -Class1\n" + " c:uint\n" + " Class1()\n" + " foo1(String, Boolean, *):*\n" + " foo2(Array):void\n" + " foo3(Number):*\n" + " v1:*\n" + " v2:String\n" + " v3:*\n" + " v4:Object\n" + " -com\n" + " -foo\n" + " -Abc\n" + " _field:String\n" + " Abc()\n" + " field:String\n" + " foo1(String, Boolean, *):*\n" + " -_f88e99c07c4ddd0d4cc87856b293119472de97251391839c016c3581d9799c24_flash_display_Sprite\n" + " _f88e99c07c4ddd0d4cc87856b293119472de97251391839c016c3581d9799c24_flash_display_Sprite()\n" + " allowDomainInRSL(Array):void\n" + " allowInsecureDomainInRSL(Array):void\n" + " ExcludeClass\n" + " -aClass\n" + " aClass()\n" + " -bClass\n" + " bClass()\n" + " -Interface1\n" + " i1():String\n" + " i2():int\n" + " myConst\n" + " myfunc\n" + " MyNs\n" + " myVar" ); } public void testSwfSortByType() { doTest(true, false, false, false, "-Project\n" + " -PsiDirectory: lib\n" + " -library.swf\n" + " -b\n" + " -zz\n" + " -supb\n" + " -subp2\n" + " -subp3\n" + " -p4\n" + " Cl3\n" + " Cl2\n" + " Class1\n" + " -com\n" + " -foo\n" + " Abc\n" + " myConst\n" + " MyNs\n" + " myVar\n" + " myfunc\n" + " Interface1\n" + " _f88e99c07c4ddd0d4cc87856b293119472de97251391839c016c3581d9799c24_flash_display_Sprite\n" + " aClass\n" + " bClass"); } public void testSwfHideEmptyMiddlePackages() { doTest(true, true, false, false, "-Project\n" + " -PsiDirectory: lib\n" + " -library.swf\n" + " -b\n" + " -zz.supb.subp2.subp3\n" + " -p4\n" + " Cl3\n" + " Cl2\n" + " Class1\n" + " -com.foo\n" + " Abc\n" + " myConst\n" + " MyNs\n" + " myVar\n" + " myfunc\n" + " Interface1\n" + " _f88e99c07c4ddd0d4cc87856b293119472de97251391839c016c3581d9799c24_flash_display_Sprite\n" + " aClass\n" + " bClass"); } public void testSwfFlattenPackages() { doTest(true, false, true, false, "-Project\n" + " -PsiDirectory: lib\n" + " -library.swf\n" + " -b\n" + " Class1\n" + " -b.zz.supb.subp2.subp3\n" + " Cl2\n" + " -b.zz.supb.subp2.subp3.p4\n" + " Cl3\n" + " -com.foo\n" + " Abc\n" + " myConst\n" + " MyNs\n" + " myVar\n" + " myfunc\n" + " Interface1\n" + " _f88e99c07c4ddd0d4cc87856b293119472de97251391839c016c3581d9799c24_flash_display_Sprite\n" + " aClass\n" + " bClass"); } public void testMembers() { doTest(true, false, false, true, "-Project\n" + " -PsiDirectory: Members\n" + " -Class1.as\n" + " c:uint\n" + " v1:*\n" + " v2:String\n" + " v3:*\n" + " v4:Object\n" + " foo1(String, Boolean, *):*\n" + " foo2(Array):void\n" + " foo3(Number):*\n" + " -Class2.as\n" + " _field:String\n" + " field:String\n" + " -MyComp.mxml\n" + " outerField:int\n" + " v:*\n" + " bar(String, Array):int\n" + " foo(Application):*\n" + " outer():String\n" + " MyComp2.as"); } public void testCss() { doTest(true, false, false, true, "-Project\n" + " -PsiDirectory: Css\n" + " -Foo.mxml\n" + " #rSl s|Button#track\n" + " .myButtonStyle\n" + " namespace mx\n" + " namespace s"); } }