summaryrefslogtreecommitdiff
path: root/java/java-tests/testSrc/com/intellij/psi/CodeFragmentsTest.java
blob: 8f6956808dea07aaefddb1f411d35ea3b52c351c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
package com.intellij.psi;

import com.intellij.openapi.editor.Document;
import com.intellij.testFramework.PlatformTestCase;
import com.intellij.testFramework.PlatformTestUtil;
import com.intellij.testFramework.PsiTestCase;
import com.intellij.psi.search.GlobalSearchScope;

@PlatformTestCase.WrapInCommand
public class CodeFragmentsTest extends PsiTestCase{
  public void testAddImport() throws Exception {
    PsiCodeFragment fragment = JavaCodeFragmentFactory.getInstance(myProject).createExpressionCodeFragment("AAA.foo()", null, null, false);
    PsiClass arrayListClass = myJavaFacade.findClass("java.util.ArrayList", GlobalSearchScope.allScope(getProject()));
    PsiReference ref = fragment.findReferenceAt(0);
    ref.bindToElement(arrayListClass);
    assertEquals("ArrayList.foo()", fragment.getText());
  }

  public void testDontLoseDocument() {
    PsiExpressionCodeFragment fragment = JavaCodeFragmentFactory.getInstance(myProject).createExpressionCodeFragment("a", null, null, true);
    Document document = PsiDocumentManager.getInstance(myProject).getDocument(fragment);
    document.insertString(1, "b");
    PsiDocumentManager.getInstance(myProject).commitAllDocuments();
    assertEquals("ab", fragment.getText());
    assertEquals("ab", fragment.getExpression().getText());

    //noinspection UnusedAssignment
    document = null;

    PlatformTestUtil.tryGcSoftlyReachableObjects();
    assertEquals("ab", PsiDocumentManager.getInstance(myProject).getDocument(fragment).getText());
  }
}