mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
generate equals/hashCode: tests for apache/guava templates
This commit is contained in:
+15
-9
@@ -23,6 +23,7 @@ import com.intellij.openapi.util.Couple;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.util.ArrayUtil;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import org.jetbrains.annotations.NonNls;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.java.generate.exception.TemplateResourceException;
|
||||
import org.jetbrains.java.generate.template.TemplateResource;
|
||||
@@ -51,6 +52,11 @@ public class EqualsHashCodeTemplatesManager extends TemplatesManager {
|
||||
private static final String EQUALS_SUFFIX = "equals";
|
||||
private static final String HASH_CODE_SUFFIX = "hashCode";
|
||||
|
||||
@NonNls public static final String INTELLI_J_DEFAULT = "IntelliJ Default";
|
||||
@NonNls public static final String EQUALS_HASH_CODE_BUILDER_APACHE_COMMONS_LANG = "Equals/HashCodeBuilder (Apache commons-lang)";
|
||||
@NonNls public static final String EQUALS_HASH_CODE_BUILDER_APACHE_COMMONS_LANG_3 = "Equals/HashCodeBuilder (Apache commons-lang 3)";
|
||||
@NonNls public static final String OBJECTS_EQUAL_AND_HASH_CODE_GUAVA = "Objects.equal and hashCode (Guava)";
|
||||
|
||||
|
||||
public static EqualsHashCodeTemplatesManager getInstance() {
|
||||
return ServiceManager.getService(EqualsHashCodeTemplatesManager.class);
|
||||
@@ -60,17 +66,17 @@ public class EqualsHashCodeTemplatesManager extends TemplatesManager {
|
||||
public TemplateResource[] getDefaultTemplates() {
|
||||
try {
|
||||
return new TemplateResource[] {
|
||||
new TemplateResource("IntelliJ Default equals", readFile(DEFAULT_EQUALS), true),
|
||||
new TemplateResource("IntelliJ Default hashCode", readFile(DEFAULT_HASH_CODE), true),
|
||||
new TemplateResource(toEqualsName(INTELLI_J_DEFAULT), readFile(DEFAULT_EQUALS), true),
|
||||
new TemplateResource(toHashCodeName(INTELLI_J_DEFAULT), readFile(DEFAULT_HASH_CODE), true),
|
||||
|
||||
new TemplateResource("Equals/HashCodeBuilder (Apache commons-lang) equals", readFile(APACHE_EQUALS), true),
|
||||
new TemplateResource("Equals/HashCodeBuilder (Apache commons-lang) hashCode", readFile(APACHE_HASH_CODE), true),
|
||||
new TemplateResource(toEqualsName(EQUALS_HASH_CODE_BUILDER_APACHE_COMMONS_LANG), readFile(APACHE_EQUALS), true),
|
||||
new TemplateResource(toHashCodeName(EQUALS_HASH_CODE_BUILDER_APACHE_COMMONS_LANG), readFile(APACHE_HASH_CODE), true),
|
||||
|
||||
new TemplateResource("Equals/HashCodeBuilder (Apache commons-lang 3) equals", readFile(APACHE3_EQUALS), true),
|
||||
new TemplateResource("Equals/HashCodeBuilder (Apache commons-lang 3) hashCode", readFile(APACHE3_HASH_CODE), true),
|
||||
new TemplateResource(toEqualsName(EQUALS_HASH_CODE_BUILDER_APACHE_COMMONS_LANG_3), readFile(APACHE3_EQUALS), true),
|
||||
new TemplateResource(toHashCodeName(EQUALS_HASH_CODE_BUILDER_APACHE_COMMONS_LANG_3), readFile(APACHE3_HASH_CODE), true),
|
||||
|
||||
new TemplateResource("Objects.equal and hashCode (Guava) equals", readFile(GUAVA_EQUALS), true),
|
||||
new TemplateResource("Objects.equal and hashCode (Guava) hashCode", readFile(GUAVA_HASH_CODE), true),
|
||||
new TemplateResource(toEqualsName(OBJECTS_EQUAL_AND_HASH_CODE_GUAVA), readFile(GUAVA_EQUALS), true),
|
||||
new TemplateResource(toHashCodeName(OBJECTS_EQUAL_AND_HASH_CODE_GUAVA), readFile(GUAVA_HASH_CODE), true),
|
||||
};
|
||||
}
|
||||
catch (IOException e) {
|
||||
@@ -127,7 +133,7 @@ public class EqualsHashCodeTemplatesManager extends TemplatesManager {
|
||||
}
|
||||
|
||||
public void setDefaultTemplate(String name) {
|
||||
Set<String> fullNames = ContainerUtil.newHashSet(name + " " + EQUALS_SUFFIX, name + " " + HASH_CODE_SUFFIX);
|
||||
Set<String> fullNames = ContainerUtil.newHashSet(toEqualsName(name), toHashCodeName(name));
|
||||
for (TemplateResource resource : getAllTemplates()) {
|
||||
if (fullNames.contains(resource.getFileName())) {
|
||||
setDefaultTemplate(resource);
|
||||
|
||||
+78
@@ -0,0 +1,78 @@
|
||||
class B {
|
||||
@Override
|
||||
public boolean equals(Object obj) {
|
||||
return obj != null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return super.hashCode();
|
||||
}
|
||||
}
|
||||
class A extends B {
|
||||
Object[] a1;
|
||||
Object[][] a2;
|
||||
String[] a3;
|
||||
String[][] a4;
|
||||
int[] a5;
|
||||
int[][] a6;
|
||||
|
||||
byte a7;
|
||||
short a8;
|
||||
int a9;
|
||||
long a10;
|
||||
float a11;
|
||||
double a12;
|
||||
|
||||
Object a13;
|
||||
String a14;
|
||||
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (this == o) return true;
|
||||
|
||||
if (o == null || getClass() != o.getClass()) return false;
|
||||
|
||||
final A a = (A) o;
|
||||
|
||||
return new org.apache.commons.lang3.builder.EqualsBuilder()
|
||||
.appendSuper(super.equals(o))
|
||||
.append(a10, a.a10)
|
||||
.append(a11, a.a11)
|
||||
.append(a12, a.a12)
|
||||
.append(a7, a.a7)
|
||||
.append(a8, a.a8)
|
||||
.append(a9, a.a9)
|
||||
.append(a1, a.a1)
|
||||
.append(a13, a.a13)
|
||||
.append(a14, a.a14)
|
||||
.append(a2, a.a2)
|
||||
.append(a3, a.a3)
|
||||
.append(a4, a.a4)
|
||||
.append(a5, a.a5)
|
||||
.append(a6, a.a6)
|
||||
.isEquals();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return new org.apache.commons.lang3.builder.HashCodeBuilder(17, 37)
|
||||
.appendSuper(super.hashCode())
|
||||
.append(a1)
|
||||
.append(a2)
|
||||
.append(a3)
|
||||
.append(a4)
|
||||
.append(a5)
|
||||
.append(a6)
|
||||
.append(a7)
|
||||
.append(a8)
|
||||
.append(a9)
|
||||
.append(a10)
|
||||
.append(a11)
|
||||
.append(a12)
|
||||
.append(a13)
|
||||
.append(a14)
|
||||
.toHashCode();
|
||||
}
|
||||
}
|
||||
+59
@@ -0,0 +1,59 @@
|
||||
import java.util.Arrays;
|
||||
|
||||
class B {
|
||||
@Override
|
||||
public boolean equals(Object obj) {
|
||||
return obj != null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return super.hashCode();
|
||||
}
|
||||
}
|
||||
class A extends B {
|
||||
Object[] a1;
|
||||
Object[][] a2;
|
||||
String[] a3;
|
||||
String[][] a4;
|
||||
int[] a5;
|
||||
int[][] a6;
|
||||
|
||||
byte a7;
|
||||
short a8;
|
||||
int a9;
|
||||
long a10;
|
||||
float a11;
|
||||
double a12;
|
||||
|
||||
Object a13;
|
||||
String a14;
|
||||
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (this == o) return true;
|
||||
if (o == null || getClass() != o.getClass()) return false;
|
||||
if (!super.equals(o)) return false;
|
||||
final A a = (A) o;
|
||||
return com.google.common.base.Objects.equal(a10, a.a10) &&
|
||||
com.google.common.base.Objects.equal(a11, a.a11) &&
|
||||
com.google.common.base.Objects.equal(a12, a.a12) &&
|
||||
com.google.common.base.Objects.equal(a7, a.a7) &&
|
||||
com.google.common.base.Objects.equal(a8, a.a8) &&
|
||||
com.google.common.base.Objects.equal(a9, a.a9) &&
|
||||
Arrays.equals(a1, a.a1) &&
|
||||
com.google.common.base.Objects.equal(a13, a.a13) &&
|
||||
com.google.common.base.Objects.equal(a14, a.a14) &&
|
||||
Arrays.deepEquals(a2, a.a2) &&
|
||||
Arrays.equals(a3, a.a3) &&
|
||||
Arrays.deepEquals(a4, a.a4) &&
|
||||
Arrays.equals(a5, a.a5) &&
|
||||
Arrays.deepEquals(a6, a.a6);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return com.google.common.base.Objects.hashCode(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14);
|
||||
}
|
||||
}
|
||||
+31
@@ -0,0 +1,31 @@
|
||||
class B {
|
||||
@Override
|
||||
public boolean equals(Object obj) {
|
||||
return obj != null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return super.hashCode();
|
||||
}
|
||||
}
|
||||
class A extends B {
|
||||
Object[] a1;
|
||||
Object[][] a2;
|
||||
String[] a3;
|
||||
String[][] a4;
|
||||
int[] a5;
|
||||
int[][] a6;
|
||||
|
||||
byte a7;
|
||||
short a8;
|
||||
int a9;
|
||||
long a10;
|
||||
float a11;
|
||||
double a12;
|
||||
|
||||
Object a13;
|
||||
String a14;
|
||||
|
||||
<caret>
|
||||
}
|
||||
+31
@@ -0,0 +1,31 @@
|
||||
class B {
|
||||
@Override
|
||||
public boolean equals(Object obj) {
|
||||
return obj != null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return super.hashCode();
|
||||
}
|
||||
}
|
||||
class A extends B {
|
||||
Object[] a1;
|
||||
Object[][] a2;
|
||||
String[] a3;
|
||||
String[][] a4;
|
||||
int[] a5;
|
||||
int[][] a6;
|
||||
|
||||
byte a7;
|
||||
short a8;
|
||||
int a9;
|
||||
long a10;
|
||||
float a11;
|
||||
double a12;
|
||||
|
||||
Object a13;
|
||||
String a14;
|
||||
|
||||
<caret>
|
||||
}
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.intellij.codeInsight;
|
||||
|
||||
import com.intellij.codeInsight.generation.EqualsHashCodeTemplatesManager;
|
||||
import com.intellij.psi.PsiField;
|
||||
import com.intellij.util.Function;
|
||||
|
||||
@@ -37,4 +38,22 @@ public class GenerateEquals15Test extends GenerateEqualsTestCase {
|
||||
doTest(Function.ID, Function.ID, Function.ID, true);
|
||||
}
|
||||
|
||||
public void testDifferentTypesSuperEqualsAndHashCodeApache3() throws Exception {
|
||||
doTestWithTemplate(EqualsHashCodeTemplatesManager.EQUALS_HASH_CODE_BUILDER_APACHE_COMMONS_LANG_3);
|
||||
}
|
||||
|
||||
public void testDifferentTypesSuperEqualsAndHashCodeGuava() throws Exception {
|
||||
doTestWithTemplate(EqualsHashCodeTemplatesManager.OBJECTS_EQUAL_AND_HASH_CODE_GUAVA);
|
||||
}
|
||||
|
||||
private void doTestWithTemplate(String templateName) throws Exception {
|
||||
try {
|
||||
EqualsHashCodeTemplatesManager.getInstance().setDefaultTemplate(templateName);
|
||||
doTest(Function.ID, Function.ID, Function.ID, true);
|
||||
}
|
||||
finally {
|
||||
EqualsHashCodeTemplatesManager.getInstance().setDefaultTemplate(EqualsHashCodeTemplatesManager.INTELLI_J_DEFAULT);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user