diff --git a/java/java-tests/testData/codeInsight/completion/filePath2/src1/Test.java b/java/java-tests/testData/codeInsight/completion/filePath2/src1/Test.java new file mode 100644 index 000000000000..5a81c2d72b53 --- /dev/null +++ b/java/java-tests/testData/codeInsight/completion/filePath2/src1/Test.java @@ -0,0 +1,3 @@ +public class Test { + public static final String TEST = "71x"; +} \ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/completion/filePath2/src1/i/i2/717_image.png b/java/java-tests/testData/codeInsight/completion/filePath2/src1/i/i2/717_image.png new file mode 100644 index 000000000000..7718bc51bc12 Binary files /dev/null and b/java/java-tests/testData/codeInsight/completion/filePath2/src1/i/i2/717_image.png differ diff --git a/java/java-tests/testData/codeInsight/completion/filePath2/src1_after/Test.java b/java/java-tests/testData/codeInsight/completion/filePath2/src1_after/Test.java new file mode 100644 index 000000000000..cc04dc07f349 --- /dev/null +++ b/java/java-tests/testData/codeInsight/completion/filePath2/src1_after/Test.java @@ -0,0 +1,3 @@ +public class Test { + public static final String TEST = "i/i2/717_image.png"; +} \ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/completion/filePath2/src1_after/UnblockDocument.java b/java/java-tests/testData/codeInsight/completion/filePath2/src1_after/UnblockDocument.java new file mode 100644 index 000000000000..6bebd768e930 --- /dev/null +++ b/java/java-tests/testData/codeInsight/completion/filePath2/src1_after/UnblockDocument.java @@ -0,0 +1,3 @@ +public class Test { + public static final String TEST = "i/i2/717_image.png "; +} \ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/completion/filePath2/src3/TestWrongCase.java b/java/java-tests/testData/codeInsight/completion/filePath2/src3/TestWrongCase.java new file mode 100644 index 000000000000..931fdb7198a6 --- /dev/null +++ b/java/java-tests/testData/codeInsight/completion/filePath2/src3/TestWrongCase.java @@ -0,0 +1,3 @@ +public class TestWrongCase { + public static final String TEST = "Fakex"; +} \ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/completion/filePath2/src3_after/TestWrongCase.java b/java/java-tests/testData/codeInsight/completion/filePath2/src3_after/TestWrongCase.java new file mode 100644 index 000000000000..295efc0e7a2c --- /dev/null +++ b/java/java-tests/testData/codeInsight/completion/filePath2/src3_after/TestWrongCase.java @@ -0,0 +1,3 @@ +public class TestWrongCase { + public static final String TEST = "fake_file.txt"; +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/completion/FilePathClassNameCompletionTest.java b/java/java-tests/testSrc/com/intellij/codeInsight/completion/FilePathClassNameCompletionTest.java new file mode 100644 index 000000000000..0beded69f2f1 --- /dev/null +++ b/java/java-tests/testSrc/com/intellij/codeInsight/completion/FilePathClassNameCompletionTest.java @@ -0,0 +1,73 @@ +// Copyright 2000-2022 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. +package com.intellij.codeInsight.completion; + +import com.intellij.JavaTestUtil; +import com.intellij.codeInsight.lookup.LookupElement; +import com.intellij.psi.PsiElement; +import com.intellij.testFramework.fixtures.LightJavaCodeInsightFixtureTestCase; + +/** + * @author spleaner + */ +public class FilePathClassNameCompletionTest extends LightJavaCodeInsightFixtureTestCase { + @Override + protected String getTestDataPath() { + return JavaTestUtil.getJavaTestDataPath() + "/codeInsight/completion/filePath2/"; + } + + public void testJava() { + myFixture.copyFileToProject("src1/i/i2/717_image.png", "i/i2/717_image.png"); + myFixture.configureByFile("src1/Test.java"); + LookupElement[] myItems = complete(); + + assertEquals(1, myItems.length); + assertEquals("717_image.png (16x16)", myItems[0].toString()); + + final LookupElement element = myItems[0]; + assertInstanceOf(element.getObject(), PsiElement.class); + + myFixture.type('\t'); + checkResultByFile("src1_after/Test.java"); + } + + private void checkResultByFile(String path) { + myFixture.checkResultByFile(path); + } + + public void testJava_wrongCase() { + myFixture.addFileToProject("fake_file.txt", ""); + myFixture.configureByFile("src3/TestWrongCase.java"); + LookupElement[] myItems = complete(); + + assertEquals(1, myItems.length); + assertEquals("fake_file.txt", myItems[0].getLookupString()); + + final LookupElement element = myItems[0]; + assertInstanceOf(element.getObject(), PsiElement.class); + + myFixture.type('\t'); + checkResultByFile("src3_after/TestWrongCase.java"); + } + + public void testFileReferenceVariantsFiltered() { + myFixture.addFileToProject("foo.txt", ""); + myFixture.configureByText("FooBar.java", "class FooBar { String barName = \"foo\"}"); + complete(); + + myFixture.checkResult("class FooBar { String barName = \"foo.txt\"}"); + } + + private LookupElement[] complete() { + return myFixture.complete(CompletionType.BASIC, 2); + } + + public void testUnblockDocument() { + myFixture.addFileToProject("i/i2/717_image.png", ""); + myFixture.configureByFile("src1/Test.java"); + complete(); + + myFixture.type("7_image.png "); + + checkResultByFile("src1_after/UnblockDocument.java"); + } +} \ No newline at end of file