diff --git a/java/java-tests/testSrc/com/intellij/java/codeInsight/GenerateEquals15Test.java b/java/java-tests/testSrc/com/intellij/java/codeInsight/GenerateEquals15Test.java deleted file mode 100644 index 2b350dc2066e..000000000000 --- a/java/java-tests/testSrc/com/intellij/java/codeInsight/GenerateEquals15Test.java +++ /dev/null @@ -1,85 +0,0 @@ -// Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. -package com.intellij.java.codeInsight; - -import com.intellij.codeInsight.generation.EqualsHashCodeTemplatesManager; -import com.intellij.codeInsight.generation.GenerateMembersUtil; -import com.intellij.psi.PsiField; -import com.intellij.util.Functions; - -import java.io.InputStream; -import java.nio.charset.StandardCharsets; - -public class GenerateEquals15Test extends GenerateEqualsTestCase { - public void testArraysFromJava15() { - doTest(new int[]{0, 1, 2}, new int[]{0, 1, 2}, new int[0], false); - } - - public void testDifferentTypes() { - doTest(Functions.id(), Functions.id(), fields -> PsiField.EMPTY_ARRAY, true - ); - } - - public void testDifferentTypesGetters() { - doTest(Functions.id(), Functions.id(), fields -> PsiField.EMPTY_ARRAY, true, true); - } - - public void testDifferentTypesAllNotNull() { - doTestWithTemplate(EqualsHashCodeTemplatesManager.INTELLI_J_DEFAULT); - } - - public void testDifferentTypesSuperEqualsAndHashCode() { - doTestWithTemplate(EqualsHashCodeTemplatesManager.INTELLI_J_DEFAULT); - } - - public void testDifferentTypesNoDouble() { - doTest(Functions.id(), Functions.id(), Functions.id(), true); - } - - public void testNameConflicts() { - doTestWithTemplate(EqualsHashCodeTemplatesManager.INTELLI_J_DEFAULT); - } - - public void testClassWithTypeParams() { - doTest(Functions.id(), Functions.id(), Functions.id(), true); - } - - public void testDifferentTypesSuperEqualsAndHashCodeApache3() { - doTestWithTemplate(EqualsHashCodeTemplatesManager.EQUALS_HASH_CODE_BUILDER_APACHE_COMMONS_LANG_3); - } - - public void testDifferentTypesSuperEqualsAndHashCodeGuava() { - doTestWithTemplate(EqualsHashCodeTemplatesManager.OBJECTS_EQUAL_AND_HASH_CODE_GUAVA); - } - - public void testSingleArrayOfPrimitiveWithObjectsTemplate() { - doTestWithTemplate(EqualsHashCodeTemplatesManager.JAVA_UTIL_OBJECTS_EQUALS_AND_HASH_CODE); - } - - public void testArrayAndNotOnlyArrayWithObjectsTemplate() { - doTestWithTemplate(EqualsHashCodeTemplatesManager.JAVA_UTIL_OBJECTS_EQUALS_AND_HASH_CODE); - } - - public void testArrayAndSuperWithObjectsTemplate() { - doTestWithTemplate(EqualsHashCodeTemplatesManager.JAVA_UTIL_OBJECTS_EQUALS_AND_HASH_CODE); - } - - private void doTestWithTemplate(String templateName) { - try { - EqualsHashCodeTemplatesManager.getInstance().setDefaultTemplate(templateName); - doTest(Functions.id(), Functions.id(), Functions.id(), true); - } - catch (Throwable throwable) { - try (InputStream is = GenerateMembersUtil.class.getResourceAsStream("equalsHelper.vm")) { - throw new RuntimeException(new String(is.readAllBytes(), StandardCharsets.UTF_8), throwable); - } - catch (Throwable t) { - throwable.addSuppressed(t); - throw throwable; - } - } - finally { - EqualsHashCodeTemplatesManager.getInstance().setDefaultTemplate(EqualsHashCodeTemplatesManager.INTELLI_J_DEFAULT); - } - } - -} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/java/codeInsight/GenerateEqualsTest.java b/java/java-tests/testSrc/com/intellij/java/codeInsight/GenerateEqualsTest.java index 27415c7de6b5..99a3746766ac 100644 --- a/java/java-tests/testSrc/com/intellij/java/codeInsight/GenerateEqualsTest.java +++ b/java/java-tests/testSrc/com/intellij/java/codeInsight/GenerateEqualsTest.java @@ -1,21 +1,26 @@ -/* - * Copyright 2000-2017 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ +// Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. package com.intellij.java.codeInsight; -public class GenerateEqualsTest extends GenerateEqualsTestCase { +import com.intellij.codeInsight.generation.EqualsHashCodeTemplatesManager; +import com.intellij.codeInsight.generation.GenerateEqualsHelper; +import com.intellij.codeInsight.generation.GenerateMembersUtil; +import com.intellij.openapi.fileEditor.FileDocumentManager; +import com.intellij.pom.java.LanguageLevel; +import com.intellij.psi.PsiClass; +import com.intellij.psi.PsiElement; +import com.intellij.psi.PsiField; +import com.intellij.psi.codeStyle.JavaCodeStyleSettings; +import com.intellij.psi.util.PsiTreeUtil; +import com.intellij.testFramework.LightJavaCodeInsightTestCase; +import com.intellij.util.Function; +import com.intellij.util.Functions; + +import java.io.InputStream; +import java.nio.charset.StandardCharsets; +import java.util.ArrayList; + +public class GenerateEqualsTest extends LightJavaCodeInsightTestCase { + public void testNoBaseEquals() { doTest(new int[0], new int[0], new int[0], false); } @@ -76,4 +81,128 @@ public class GenerateEqualsTest extends GenerateEqualsTestCase { doTest(new int[]{0}, new int[]{0}, new int[0], true); } + public void testArraysFromJava15() { + doTest(new int[]{0, 1, 2}, new int[]{0, 1, 2}, new int[0], false); + } + + public void testDifferentTypes() { + doTest(Functions.id(), Functions.id(), fields -> PsiField.EMPTY_ARRAY, true + ); + } + + public void testDifferentTypesGetters() { + doTest(Functions.id(), Functions.id(), fields -> PsiField.EMPTY_ARRAY, true, true); + } + + public void testDifferentTypesAllNotNull() { + doTestWithTemplate(EqualsHashCodeTemplatesManager.INTELLI_J_DEFAULT); + } + + public void testDifferentTypesSuperEqualsAndHashCode() { + doTestWithTemplate(EqualsHashCodeTemplatesManager.INTELLI_J_DEFAULT); + } + + public void testDifferentTypesNoDouble() { + doTest(Functions.id(), Functions.id(), Functions.id(), true); + } + + public void testNameConflicts() { + doTestWithTemplate(EqualsHashCodeTemplatesManager.INTELLI_J_DEFAULT); + } + + public void testClassWithTypeParams() { + doTest(Functions.id(), Functions.id(), Functions.id(), true); + } + + public void testDifferentTypesSuperEqualsAndHashCodeApache3() { + doTestWithTemplate(EqualsHashCodeTemplatesManager.EQUALS_HASH_CODE_BUILDER_APACHE_COMMONS_LANG_3); + } + + public void testDifferentTypesSuperEqualsAndHashCodeGuava() { + doTestWithTemplate(EqualsHashCodeTemplatesManager.OBJECTS_EQUAL_AND_HASH_CODE_GUAVA); + } + + public void testSingleArrayOfPrimitiveWithObjectsTemplate() { + doTestWithTemplate(EqualsHashCodeTemplatesManager.JAVA_UTIL_OBJECTS_EQUALS_AND_HASH_CODE); + } + + public void testArrayAndNotOnlyArrayWithObjectsTemplate() { + doTestWithTemplate(EqualsHashCodeTemplatesManager.JAVA_UTIL_OBJECTS_EQUALS_AND_HASH_CODE); + } + + public void testArrayAndSuperWithObjectsTemplate() { + doTestWithTemplate(EqualsHashCodeTemplatesManager.JAVA_UTIL_OBJECTS_EQUALS_AND_HASH_CODE); + } + + private void doTestWithTemplate(String templateName) { + try { + EqualsHashCodeTemplatesManager.getInstance().setDefaultTemplate(templateName); + doTest(Functions.id(), Functions.id(), Functions.id(), true); + } + catch (Throwable throwable) { + try (InputStream is = GenerateMembersUtil.class.getResourceAsStream("equalsHelper.vm")) { + throw new RuntimeException(new String(is.readAllBytes(), StandardCharsets.UTF_8), throwable); + } + catch (Throwable t) { + throwable.addSuppressed(t); + throw throwable; + } + } + finally { + EqualsHashCodeTemplatesManager.getInstance().setDefaultTemplate(EqualsHashCodeTemplatesManager.INTELLI_J_DEFAULT); + } + } + + @Override + protected void setUp() throws Exception { + super.setUp(); + EqualsHashCodeTemplatesManager.getInstance().setDefaultTemplate(EqualsHashCodeTemplatesManager.INTELLI_J_DEFAULT); + } + + protected void doTest(final int[] equals, + final int[] hashCode, + final int[] nonNull, + boolean insertOverride) { + doTest(fields -> getIndexed(fields, equals), fields -> getIndexed(fields, hashCode), fields -> getIndexed(fields, nonNull), insertOverride); + } + + protected void doTest(Function eqFunction, + Function hFunction, + Function nnFunction, + boolean insertOverride) { + doTest(eqFunction, hFunction, nnFunction, insertOverride, false); + } + + protected void doTest(Function eqFunction, + Function hFunction, + Function nnFunction, + boolean insertOverride, boolean useAccessors) { + configureByFile("/codeInsight/generateEquals/before" + getTestName(false) + ".java"); + performTest(eqFunction, hFunction, nnFunction, insertOverride, useAccessors); + checkResultByFile("/codeInsight/generateEquals/after" + getTestName(false) + ".java"); + } + + private void performTest(Function equals, + Function hashCode, + Function nonNull, + boolean insertOverride, + boolean useAccessors) { + JavaCodeStyleSettings.getInstance(getProject()).GENERATE_FINAL_LOCALS = true; + JavaCodeStyleSettings.getInstance(getProject()).INSERT_OVERRIDE_ANNOTATION = insertOverride; + PsiElement element = getFile().findElementAt(getEditor().getCaretModel().getOffset()); + if (element == null) return; + PsiClass aClass = PsiTreeUtil.getParentOfType(element, PsiClass.class); + if (aClass == null) return; + PsiField[] fields = aClass.getFields(); + new GenerateEqualsHelper(getProject(), aClass, equals.fun(fields), hashCode.fun(fields), nonNull.fun(fields), false, useAccessors).invoke(); + FileDocumentManager.getInstance().saveAllDocuments(); + } + + private static PsiField[] getIndexed(PsiField[] fields, int[] indices) { + ArrayList result = new ArrayList<>(); + for (int index : indices) { + result.add(fields[index]); + } + return result.toArray(PsiField.EMPTY_ARRAY); + } } diff --git a/java/java-tests/testSrc/com/intellij/java/codeInsight/GenerateEqualsTestCase.java b/java/java-tests/testSrc/com/intellij/java/codeInsight/GenerateEqualsTestCase.java deleted file mode 100644 index 9b17a9834f0c..000000000000 --- a/java/java-tests/testSrc/com/intellij/java/codeInsight/GenerateEqualsTestCase.java +++ /dev/null @@ -1,71 +0,0 @@ -// Copyright 2000-2021 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. -package com.intellij.java.codeInsight; - -import com.intellij.codeInsight.generation.EqualsHashCodeTemplatesManager; -import com.intellij.codeInsight.generation.GenerateEqualsHelper; -import com.intellij.openapi.fileEditor.FileDocumentManager; -import com.intellij.psi.PsiClass; -import com.intellij.psi.PsiElement; -import com.intellij.psi.PsiField; -import com.intellij.psi.codeStyle.JavaCodeStyleSettings; -import com.intellij.psi.util.PsiTreeUtil; -import com.intellij.testFramework.LightJavaCodeInsightTestCase; -import com.intellij.util.Function; - -import java.util.ArrayList; - - -public abstract class GenerateEqualsTestCase extends LightJavaCodeInsightTestCase { - @Override - protected void setUp() throws Exception { - super.setUp(); - EqualsHashCodeTemplatesManager.getInstance().setDefaultTemplate(EqualsHashCodeTemplatesManager.INTELLI_J_DEFAULT); - } - - protected void doTest(final int[] equals, - final int[] hashCode, - final int[] nonNull, - boolean insertOverride) { - doTest(fields -> getIndexed(fields, equals), fields -> getIndexed(fields, hashCode), fields -> getIndexed(fields, nonNull), insertOverride); - } - - protected void doTest(Function eqFunction, - Function hFunction, - Function nnFunction, - boolean insertOverride) { - doTest(eqFunction, hFunction, nnFunction, insertOverride, false); - } - - protected void doTest(Function eqFunction, - Function hFunction, - Function nnFunction, - boolean insertOverride, boolean useAccessors) { - configureByFile("/codeInsight/generateEquals/before" + getTestName(false) + ".java"); - performTest(eqFunction, hFunction, nnFunction, insertOverride, useAccessors); - checkResultByFile("/codeInsight/generateEquals/after" + getTestName(false) + ".java"); - } - - private void performTest(Function equals, - Function hashCode, - Function nonNull, - boolean insertOverride, - boolean useAccessors) { - JavaCodeStyleSettings.getInstance(getProject()).GENERATE_FINAL_LOCALS = true; - JavaCodeStyleSettings.getInstance(getProject()).INSERT_OVERRIDE_ANNOTATION = insertOverride; - PsiElement element = getFile().findElementAt(getEditor().getCaretModel().getOffset()); - if (element == null) return; - PsiClass aClass = PsiTreeUtil.getParentOfType(element, PsiClass.class); - if (aClass == null) return; - PsiField[] fields = aClass.getFields(); - new GenerateEqualsHelper(getProject(), aClass, equals.fun(fields), hashCode.fun(fields), nonNull.fun(fields), false, useAccessors).invoke(); - FileDocumentManager.getInstance().saveAllDocuments(); - } - - private static PsiField[] getIndexed(PsiField[] fields, int[] indices) { - ArrayList result = new ArrayList<>(); - for (int indice : indices) { - result.add(fields[indice]); - } - return result.toArray(PsiField.EMPTY_ARRAY); - } -}