static flag for top level classes
[fedora-idea.git] / java / java-tests / testSrc / com / intellij / psi / ClsBuilderTest.java
blobb0b951a6b623f81bde5248fc86f59dda15e589eb
1 /*
2 * @author max
3 */
4 package com.intellij.psi;
6 import com.intellij.JavaTestUtil;
7 import com.intellij.openapi.projectRoots.Sdk;
8 import com.intellij.openapi.projectRoots.impl.JavaSdkImpl;
9 import com.intellij.openapi.roots.OrderRootType;
10 import com.intellij.openapi.util.io.FileUtil;
11 import com.intellij.openapi.util.text.StringUtil;
12 import com.intellij.openapi.vfs.LocalFileSystem;
13 import com.intellij.openapi.vfs.VirtualFile;
14 import com.intellij.psi.impl.compiled.ClsStubBuilder;
15 import com.intellij.psi.stubs.PsiFileStub;
16 import com.intellij.psi.stubs.StubBase;
17 import com.intellij.testFramework.LightIdeaTestCase;
18 import com.intellij.util.cls.ClsFormatException;
20 import java.io.FileNotFoundException;
21 import java.io.FileReader;
22 import java.io.FileWriter;
23 import java.io.IOException;
25 public class ClsBuilderTest extends LightIdeaTestCase {
26 protected Sdk getProjectJDK() {
27 return JavaSdkImpl.getMockJdk15("1.5");
30 public void testUtilList() throws Exception {
31 doTest("java/util/List.class");
34 public void testNullable() throws Exception {
35 doTest("org/jetbrains/annotations/Nullable.class");
38 public void testUtilCollections() throws Exception {
39 doTest("java/util/Collections.class");
42 public void testUtilHashMap() throws Exception {
43 doTest("java/util/HashMap.class");
46 public void testUtilMap() throws Exception {
47 doTest("java/util/Map.class");
50 public void testTimeUnit() throws Exception {
51 doTest("java/util/concurrent/TimeUnit.class");
54 public void testTestSuite() throws Exception {
55 final String clsFilePath = JavaTestUtil.getJavaTestDataPath() + "/psi/cls/stubBuilder/TestSuite.class";
56 VirtualFile clsFile = LocalFileSystem.getInstance().findFileByPath(clsFilePath);
57 doTest(clsFile, "TestSuite.txt");
60 private void doTest(final String classname) throws IOException, ClsFormatException {
61 VirtualFile vFile = findFile(classname);
62 doTest(vFile, getTestName(false)+".txt");
65 private static void doTest(VirtualFile vFile, String goldFile) throws ClsFormatException, IOException {
66 final PsiFileStub stub = ClsStubBuilder.build(vFile, vFile.contentsToByteArray());
67 final String butWas = ((StubBase)stub).printTree();
69 final String goldFilePath = JavaTestUtil.getJavaTestDataPath() + "/psi/cls/stubBuilder/" + goldFile;
70 String expected = "";
71 try {
72 expected = FileUtil.loadTextAndClose(new FileReader(goldFilePath));
73 expected = StringUtil.convertLineSeparators(expected);
75 catch (FileNotFoundException e) {
76 System.out.println("No expected data found at:" + goldFilePath);
77 System.out.println("Creating one.");
78 final FileWriter fileWriter = new FileWriter(goldFilePath);
79 fileWriter.write(butWas);
80 fileWriter.close();
81 fail("No test data found. Created one");
84 assertEquals(expected, butWas);
87 private VirtualFile findFile(final String classname) {
88 final VirtualFile[] roots = getProjectJDK().getRootProvider().getFiles(OrderRootType.CLASSES);
89 for (VirtualFile root : roots) {
90 VirtualFile vFile = root.findFileByRelativePath(classname);
91 if (vFile != null) return vFile;
94 fail("Cannot file classfile for: " + classname);
95 return null;