Skip to content

Commit 0cd7fec

Browse files
committed
Fix instances of SelfAssertion bug pattern
1 parent 7b86d2a commit 0cd7fec

File tree

13 files changed

+105
-162
lines changed

13 files changed

+105
-162
lines changed

delphi-frontend/pom.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,11 @@
100100
<artifactId>archunit-junit5</artifactId>
101101
<scope>test</scope>
102102
</dependency>
103+
<dependency>
104+
<groupId>com.google.guava</groupId>
105+
<artifactId>guava-testlib</artifactId>
106+
<scope>test</scope>
107+
</dependency>
103108
</dependencies>
104109

105110
<build>

delphi-frontend/src/test/java/au/com/integradev/delphi/msbuild/condition/VersionTest.java

Lines changed: 13 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -18,65 +18,25 @@
1818
*/
1919
package au.com.integradev.delphi.msbuild.condition;
2020

21-
import static org.assertj.core.api.Assertions.assertThat;
22-
2321
import au.com.integradev.delphi.msbuild.utils.VersionUtils;
24-
import java.util.stream.Stream;
22+
import com.google.common.testing.EqualsTester;
2523
import org.junit.jupiter.api.Test;
26-
import org.junit.jupiter.api.extension.ExtensionContext;
27-
import org.junit.jupiter.params.ParameterizedTest;
28-
import org.junit.jupiter.params.provider.Arguments;
29-
import org.junit.jupiter.params.provider.ArgumentsProvider;
30-
import org.junit.jupiter.params.provider.ArgumentsSource;
3124

3225
class VersionTest {
33-
static class EqualVersionArgumentsProvider implements ArgumentsProvider {
34-
@Override
35-
public Stream<Arguments> provideArguments(ExtensionContext context) {
36-
return Stream.of(
37-
Arguments.of("1.0.0.0", "1.0.0.0"),
38-
Arguments.of("1.1.0.0", "1.1.0.0"),
39-
Arguments.of("1.1.1.0", "1.1.1.0"),
40-
Arguments.of("1.1.1.1", "1.1.1.1"));
41-
}
42-
}
43-
44-
static class UnequalVersionArgumentsProvider implements ArgumentsProvider {
45-
@Override
46-
public Stream<Arguments> provideArguments(ExtensionContext context) {
47-
return Stream.of(
48-
Arguments.of("2.0.0.0", "1.0.0.0"),
49-
Arguments.of("1.1.0.0", "1.0.0.0"),
50-
Arguments.of("1.0.1.0", "1.0.0.0"),
51-
Arguments.of("1.0.0.1", "1.0.0.0"));
52-
}
53-
}
54-
55-
@ParameterizedTest(name = "\"{0}\" should be equal to: {1}")
56-
@ArgumentsSource(EqualVersionArgumentsProvider.class)
57-
void testEqualVersions(String left, String right) {
58-
assertThat(VersionUtils.parse(left)).isEqualTo(VersionUtils.parse(right));
59-
}
60-
61-
@ParameterizedTest(name = "\"{0}\" should not be equal to: {1}")
62-
@ArgumentsSource(UnequalVersionArgumentsProvider.class)
63-
void testUnequalVersions(String left, String right) {
64-
assertThat(VersionUtils.parse(left)).isNotEqualTo(VersionUtils.parse(right));
65-
}
66-
67-
@Test
68-
void testEqualToSameInstance() {
69-
Version version = VersionUtils.parse("1.0.0.0").orElseThrow();
70-
assertThat(version).isEqualTo(version);
71-
}
72-
7326
@Test
74-
void testNotEqualToNull() {
75-
assertThat(VersionUtils.parse("1.0.0.0").orElseThrow()).isNotEqualTo(null);
27+
void testEquals() {
28+
new EqualsTester()
29+
.addEqualityGroup(version("1.0"))
30+
.addEqualityGroup(version("1.0.0"))
31+
.addEqualityGroup(version("1.0.0.0"))
32+
.addEqualityGroup(version("1.1.0.0"))
33+
.addEqualityGroup(version("1.1.1.0"))
34+
.addEqualityGroup(version("1.1.1.1"))
35+
.addEqualityGroup(version("2.0.0.0"))
36+
.testEquals();
7637
}
7738

78-
@Test
79-
void testNotEqualToUnrelatedObject() {
80-
assertThat(VersionUtils.parse("1.0.0.0").orElseThrow()).isNotEqualTo(new Object());
39+
private static Version version(String input) {
40+
return VersionUtils.parse(input).orElseThrow(AssertionError::new);
8141
}
8242
}

delphi-frontend/src/test/java/au/com/integradev/delphi/operator/OperatorIntrinsicTest.java

Lines changed: 8 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import static org.assertj.core.api.Assertions.assertThat;
2222

2323
import au.com.integradev.delphi.type.parameter.IntrinsicParameter;
24+
import com.google.common.testing.EqualsTester;
2425
import java.util.Collections;
2526
import java.util.List;
2627
import org.junit.jupiter.api.Test;
@@ -58,7 +59,7 @@ void testIsClassInvocable() {
5859

5960
@Test
6061
void testEquals() {
61-
OperatorIntrinsic equal =
62+
OperatorIntrinsic base =
6263
new OperatorIntrinsic("Foo", List.of(TypeFactory.untypedType()), TypeFactory.voidType());
6364
OperatorIntrinsic differentName =
6465
new OperatorIntrinsic("Bar", List.of(TypeFactory.untypedType()), TypeFactory.voidType());
@@ -67,17 +68,11 @@ void testEquals() {
6768
OperatorIntrinsic differentReturnType =
6869
new OperatorIntrinsic("Foo", List.of(TypeFactory.untypedType()), TypeFactory.untypedType());
6970

70-
assertThat(INTRINSIC)
71-
.isEqualTo(INTRINSIC)
72-
.isNotEqualTo(null)
73-
.isNotEqualTo(new Object())
74-
.isEqualTo(equal)
75-
.hasSameHashCodeAs(equal)
76-
.isNotEqualTo(differentName)
77-
.doesNotHaveSameHashCodeAs(differentName)
78-
.isNotEqualTo(differentParameters)
79-
.doesNotHaveSameHashCodeAs(differentParameters)
80-
.isNotEqualTo(differentReturnType)
81-
.doesNotHaveSameHashCodeAs(differentReturnType);
71+
new EqualsTester()
72+
.addEqualityGroup(base)
73+
.addEqualityGroup(differentName)
74+
.addEqualityGroup(differentParameters)
75+
.addEqualityGroup(differentReturnType)
76+
.testEquals();
8277
}
8378
}

delphi-frontend/src/test/java/au/com/integradev/delphi/symbol/declaration/EnumElementNameDeclarationTest.java

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
import au.com.integradev.delphi.antlr.ast.node.SimpleNameDeclarationNodeImpl;
3232
import au.com.integradev.delphi.file.DelphiFile;
3333
import au.com.integradev.delphi.utils.types.TypeFactoryUtils;
34+
import com.google.common.testing.EqualsTester;
3435
import org.antlr.runtime.CommonToken;
3536
import org.junit.jupiter.api.Test;
3637
import org.sonar.plugins.communitydelphi.api.symbol.declaration.EnumElementNameDeclaration;
@@ -41,17 +42,18 @@ void testEquals() {
4142
EnumElementNameDeclaration foo = createEnumElement("Foo");
4243
EnumElementNameDeclaration otherFoo = createEnumElement("Foo");
4344
EnumElementNameDeclaration bar = createEnumElement("Bar");
45+
EnumElementNameDeclaration baz = createEnumElement("Baz");
46+
47+
new EqualsTester()
48+
.addEqualityGroup(foo, otherFoo)
49+
.addEqualityGroup(bar)
50+
.addEqualityGroup(baz)
51+
.testEquals();
4452

4553
assertThat(foo)
46-
.isEqualTo(foo)
47-
.isNotEqualTo(null)
48-
.isNotEqualTo(new Object())
49-
.isEqualTo(otherFoo)
5054
.isEqualByComparingTo(otherFoo)
51-
.hasSameHashCodeAs(otherFoo)
52-
.isNotEqualTo(bar)
5355
.isNotEqualByComparingTo(bar)
54-
.doesNotHaveSameHashCodeAs(bar);
56+
.isNotEqualByComparingTo(baz);
5557
}
5658

5759
@Test

delphi-frontend/src/test/java/au/com/integradev/delphi/symbol/declaration/RoutineNameDeclarationTest.java

Lines changed: 17 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import au.com.integradev.delphi.symbol.SymbolicNode;
2525
import au.com.integradev.delphi.type.factory.TypeFactoryImpl;
2626
import au.com.integradev.delphi.utils.types.TypeFactoryUtils;
27+
import com.google.common.testing.EqualsTester;
2728
import java.util.Collections;
2829
import java.util.List;
2930
import java.util.Set;
@@ -80,7 +81,7 @@ class RoutineNameDeclarationTest {
8081

8182
@Test
8283
void testEquals() {
83-
RoutineNameDeclaration equals =
84+
RoutineNameDeclaration base =
8485
new RoutineNameDeclarationImpl(
8586
LOCATION,
8687
FULLY_QUALIFIED_NAME,
@@ -247,42 +248,31 @@ void testEquals() {
247248
Collections.emptyList(),
248249
ATTRIBUTE_TYPES);
249250

251+
new EqualsTester()
252+
.addEqualityGroup(ROUTINE, base)
253+
.addEqualityGroup(forwardDeclaration)
254+
.addEqualityGroup(implementationDeclaration)
255+
.addEqualityGroup(differentLocation)
256+
.addEqualityGroup(differentFullyQualifiedName)
257+
.addEqualityGroup(differentReturnType)
258+
.addEqualityGroup(differentDirectives)
259+
.addEqualityGroup(differentIsClassInvocable)
260+
.addEqualityGroup(differentIsCallable)
261+
.addEqualityGroup(differentRoutineType)
262+
.addEqualityGroup(differentTypeParameters)
263+
.testEquals();
264+
250265
assertThat(ROUTINE)
251-
.isEqualTo(ROUTINE)
252-
.isNotEqualTo(null)
253-
.isNotEqualTo(new Object())
254-
.isEqualTo(equals)
255-
.hasSameHashCodeAs(equals)
256-
.isEqualByComparingTo(equals)
257-
.isNotEqualTo(forwardDeclaration)
258-
.doesNotHaveSameHashCodeAs(forwardDeclaration)
266+
.isEqualByComparingTo(base)
259267
.isNotEqualByComparingTo(forwardDeclaration)
260-
.isNotEqualTo(implementationDeclaration)
261-
.doesNotHaveSameHashCodeAs(implementationDeclaration)
262268
.isNotEqualByComparingTo(implementationDeclaration)
263-
.isNotEqualTo(differentLocation)
264-
.doesNotHaveSameHashCodeAs(differentLocation)
265269
.isNotEqualByComparingTo(differentLocation)
266-
.isNotEqualTo(differentFullyQualifiedName)
267-
.doesNotHaveSameHashCodeAs(differentFullyQualifiedName)
268270
.isNotEqualByComparingTo(differentFullyQualifiedName)
269-
.isNotEqualTo(differentReturnType)
270-
.doesNotHaveSameHashCodeAs(differentReturnType)
271271
.isNotEqualByComparingTo(differentReturnType)
272-
.isNotEqualTo(differentDirectives)
273-
.doesNotHaveSameHashCodeAs(differentDirectives)
274272
.isNotEqualByComparingTo(differentDirectives)
275-
.isNotEqualTo(differentIsClassInvocable)
276-
.doesNotHaveSameHashCodeAs(differentIsClassInvocable)
277273
.isNotEqualByComparingTo(differentIsClassInvocable)
278-
.isNotEqualTo(differentIsCallable)
279-
.doesNotHaveSameHashCodeAs(differentIsCallable)
280274
.isNotEqualByComparingTo(differentIsCallable)
281-
.isNotEqualTo(differentRoutineType)
282-
.doesNotHaveSameHashCodeAs(differentRoutineType)
283275
.isNotEqualByComparingTo(differentRoutineType)
284-
.isNotEqualTo(differentTypeParameters)
285-
.doesNotHaveSameHashCodeAs(differentTypeParameters)
286276
.isNotEqualByComparingTo(differentTypeParameters);
287277
}
288278

delphi-frontend/src/test/java/au/com/integradev/delphi/symbol/declaration/TypeParameterNameDeclarationTest.java

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import au.com.integradev.delphi.antlr.DelphiLexer;
2424
import au.com.integradev.delphi.antlr.ast.node.CommonDelphiNodeImpl;
2525
import au.com.integradev.delphi.type.generic.TypeParameterTypeImpl;
26+
import com.google.common.testing.EqualsTester;
2627
import org.antlr.runtime.CommonToken;
2728
import org.junit.jupiter.api.Test;
2829
import org.sonar.plugins.communitydelphi.api.symbol.declaration.TypeParameterNameDeclaration;
@@ -38,18 +39,13 @@ void testEquals() {
3839
TypeParameterNameDeclaration fooWithDifferentTypeInstance = createTypeParameter("Foo");
3940
TypeParameterNameDeclaration bar = createTypeParameter("Bar");
4041

41-
assertThat(foo)
42-
.isEqualTo(foo)
43-
.isNotEqualTo(null)
44-
.isNotEqualTo(new Object())
45-
.isEqualTo(otherFoo)
46-
.isEqualByComparingTo(otherFoo)
47-
.hasSameHashCodeAs(otherFoo)
48-
.isNotEqualTo(fooWithDifferentTypeInstance)
49-
.doesNotHaveSameHashCodeAs(fooWithDifferentTypeInstance)
50-
.isNotEqualTo(bar)
51-
.isNotEqualByComparingTo(bar)
52-
.doesNotHaveSameHashCodeAs(bar);
42+
new EqualsTester()
43+
.addEqualityGroup(foo, otherFoo)
44+
.addEqualityGroup(fooWithDifferentTypeInstance)
45+
.addEqualityGroup(bar)
46+
.testEquals();
47+
48+
assertThat(foo).isEqualByComparingTo(otherFoo).isNotEqualByComparingTo(bar);
5349
}
5450

5551
@Test

delphi-frontend/src/test/java/au/com/integradev/delphi/symbol/declaration/UnitImportNameDeclarationTest.java

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import au.com.integradev.delphi.antlr.ast.node.QualifiedNameDeclarationNodeImpl;
2828
import au.com.integradev.delphi.antlr.ast.node.UnitImportNodeImpl;
2929
import au.com.integradev.delphi.file.DelphiFile;
30+
import com.google.common.testing.EqualsTester;
3031
import java.io.File;
3132
import java.nio.file.Path;
3233
import org.antlr.runtime.CommonToken;
@@ -45,17 +46,13 @@ void testEquals() {
4546
UnitImportNameDeclaration differentName = createImport("Bar");
4647
UnitImportNameDeclaration differentOriginalDeclaration = createImport("Foo", createUnit("Foo"));
4748

48-
assertThat(foo)
49-
.isEqualTo(foo)
50-
.isNotEqualTo(null)
51-
.isNotEqualTo(new Object())
52-
.isEqualTo(otherFoo)
53-
.isEqualByComparingTo(otherFoo)
54-
.hasSameHashCodeAs(otherFoo)
55-
.isNotEqualTo(differentName)
56-
.doesNotHaveSameHashCodeAs(differentName)
57-
.isNotEqualTo(differentOriginalDeclaration)
58-
.doesNotHaveSameHashCodeAs(differentOriginalDeclaration);
49+
new EqualsTester()
50+
.addEqualityGroup(foo, otherFoo)
51+
.addEqualityGroup(differentName)
52+
.addEqualityGroup(differentOriginalDeclaration)
53+
.testEquals();
54+
55+
assertThat(foo).isEqualByComparingTo(otherFoo).isNotEqualByComparingTo(differentName);
5956
}
6057

6158
@Test

delphi-frontend/src/test/java/au/com/integradev/delphi/symbol/declaration/UnitNameDeclarationTest.java

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import au.com.integradev.delphi.antlr.ast.node.IdentifierNodeImpl;
2727
import au.com.integradev.delphi.antlr.ast.node.QualifiedNameDeclarationNodeImpl;
2828
import au.com.integradev.delphi.file.DelphiFile;
29+
import com.google.common.testing.EqualsTester;
2930
import java.io.File;
3031
import java.nio.file.Path;
3132
import org.antlr.runtime.CommonToken;
@@ -42,18 +43,16 @@ void testEquals() {
4243
UnitNameDeclaration fooWithDifferentPath = createUnit("Foo", "/bar/foo.pas");
4344
UnitNameDeclaration bar = createUnit("Bar", "/bar.pas");
4445

46+
new EqualsTester()
47+
.addEqualityGroup(foo, otherFoo)
48+
.addEqualityGroup(fooWithDifferentPath)
49+
.addEqualityGroup(bar)
50+
.testEquals();
51+
4552
assertThat(foo)
46-
.isEqualTo(foo)
47-
.isNotEqualTo(null)
48-
.isNotEqualTo(new Object())
49-
.isEqualTo(otherFoo)
50-
.hasSameHashCodeAs(otherFoo)
51-
.isNotEqualTo(fooWithDifferentPath)
53+
.isEqualByComparingTo(otherFoo)
5254
.isNotEqualByComparingTo(fooWithDifferentPath)
53-
.doesNotHaveSameHashCodeAs(fooWithDifferentPath)
54-
.isNotEqualTo(bar)
55-
.isNotEqualByComparingTo(bar)
56-
.doesNotHaveSameHashCodeAs(bar);
55+
.isNotEqualByComparingTo(bar);
5756
}
5857

5958
@Test

delphi-frontend/src/test/java/au/com/integradev/delphi/symbol/occurrence/NameOccurrenceImplTest.java

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import static org.mockito.Mockito.mock;
2323

2424
import au.com.integradev.delphi.symbol.SymbolicNode;
25+
import com.google.common.testing.EqualsTester;
2526
import java.util.List;
2627
import org.junit.jupiter.api.Test;
2728
import org.sonar.plugins.communitydelphi.api.symbol.NameOccurrence;
@@ -53,32 +54,32 @@ void testIsAttributeReference() {
5354
@Test
5455
void testEquals() {
5556
SymbolicNode foo = SymbolicNode.imaginary("Foo", DelphiScope.unknownScope());
56-
5757
NameOccurrence occurrenceA = new NameOccurrenceImpl(foo);
58-
assertThat(occurrenceA).isEqualTo(occurrenceA).isNotEqualTo(null).isNotEqualTo(new Object());
59-
6058
NameOccurrence occurrenceB = new NameOccurrenceImpl(foo);
61-
assertThat(occurrenceA).isEqualTo(occurrenceB);
6259

6360
SymbolicNode bar = SymbolicNode.imaginary("Bar", DelphiScope.unknownScope());
6461
NameOccurrence occurrenceC = new NameOccurrenceImpl(bar);
65-
assertThat(occurrenceA).isNotEqualTo(occurrenceC);
6662

6763
NameOccurrenceImpl occurrenceD = new NameOccurrenceImpl(foo);
6864
occurrenceD.setIsExplicitInvocation(true);
69-
assertThat(occurrenceA).isNotEqualTo(occurrenceD);
7065

7166
NameOccurrenceImpl occurrenceE = new NameOccurrenceImpl(foo);
7267
occurrenceE.setIsGeneric();
73-
assertThat(occurrenceA).isNotEqualTo(occurrenceE);
7468

7569
NameOccurrenceImpl occurrenceF = new NameOccurrenceImpl(foo);
7670
occurrenceF.setNameDeclaration(mock(NameDeclaration.class));
77-
assertThat(occurrenceA).isNotEqualTo(occurrenceF);
7871

7972
NameOccurrenceImpl occurrenceG = new NameOccurrenceImpl(foo);
8073
occurrenceG.setTypeArguments(List.of(TypeFactory.unknownType()));
81-
assertThat(occurrenceA).isNotEqualTo(occurrenceG);
74+
75+
new EqualsTester()
76+
.addEqualityGroup(occurrenceA, occurrenceB)
77+
.addEqualityGroup(occurrenceC)
78+
.addEqualityGroup(occurrenceD)
79+
.addEqualityGroup(occurrenceE)
80+
.addEqualityGroup(occurrenceF)
81+
.addEqualityGroup(occurrenceG)
82+
.testEquals();
8283
}
8384

8485
@Test

0 commit comments

Comments
 (0)