Skip to content

Commit 9376b4b

Browse files
committed
Added an equals and hashcode implementation for AffineTransform RND-756
1 parent ad31477 commit 9376b4b

File tree

2 files changed

+77
-0
lines changed

2 files changed

+77
-0
lines changed

kernel/src/main/java/com/itextpdf/kernel/geom/AffineTransform.java

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ This file is part of the iText (R) project.
4444
package com.itextpdf.kernel.geom;
4545

4646
import java.io.Serializable;
47+
import java.util.Objects;
4748

4849
public class AffineTransform implements Serializable {
4950

@@ -631,4 +632,27 @@ public void inverseTransform(float[] src, int srcOff, float[] dst, int dstOff, i
631632
public AffineTransform clone() throws CloneNotSupportedException {
632633
return new AffineTransform(this);
633634
}
635+
636+
@Override
637+
public boolean equals(Object o) {
638+
if (this == o)
639+
return true;
640+
641+
if (o == null || getClass() != o.getClass())
642+
return false;
643+
644+
AffineTransform that = (AffineTransform) o;
645+
646+
return Double.compare(that.m00, m00) == 0 &&
647+
Double.compare(that.m10, m10) == 0 &&
648+
Double.compare(that.m01, m01) == 0 &&
649+
Double.compare(that.m11, m11) == 0 &&
650+
Double.compare(that.m02, m02) == 0 &&
651+
Double.compare(that.m12, m12) == 0;
652+
}
653+
654+
@Override
655+
public int hashCode() {
656+
return Objects.hash(m00, m10, m01, m11, m02, m12);
657+
}
634658
}
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
package com.itextpdf.kernel.geom;
2+
3+
import org.junit.Assert;
4+
import org.junit.Test;
5+
6+
public class AffineTransformTest {
7+
8+
@Test
9+
public void selfTest() {
10+
AffineTransform affineTransform = new AffineTransform();
11+
12+
Assert.assertTrue(affineTransform.equals(affineTransform));
13+
}
14+
15+
@Test
16+
public void nullTest() {
17+
AffineTransform affineTransform = new AffineTransform();
18+
19+
Assert.assertFalse(affineTransform.equals(null));
20+
}
21+
22+
@Test
23+
public void otherClassTest() {
24+
AffineTransform affineTransform = new AffineTransform();
25+
String string = "Test";
26+
27+
Assert.assertFalse(affineTransform.equals(string));
28+
}
29+
30+
@Test
31+
public void sameValuesTest() {
32+
AffineTransform affineTransform1 = new AffineTransform(0d, 1d, 2d, 3d, 4d, 5d);
33+
AffineTransform affineTransform2 = new AffineTransform(0d, 1d, 2d, 3d, 4d, 5d);
34+
int hash1 = affineTransform1.hashCode();
35+
int hash2 = affineTransform2.hashCode();
36+
37+
Assert.assertFalse(affineTransform1 == affineTransform2);
38+
Assert.assertEquals(hash1, hash2);
39+
Assert.assertTrue(affineTransform1.equals(affineTransform2));
40+
}
41+
42+
@Test
43+
public void differentValuesTest() {
44+
AffineTransform affineTransform1 = new AffineTransform(0d, 1d, 2d, 3d, 4d, 5d);
45+
AffineTransform affineTransform2 = new AffineTransform(5d, 4d, 3d, 2d, 1d, 1d);
46+
int hash1 = affineTransform1.hashCode();
47+
int hash2 = affineTransform2.hashCode();
48+
49+
Assert.assertFalse(affineTransform1 == affineTransform2);
50+
Assert.assertNotEquals(hash1, hash2);
51+
Assert.assertFalse(affineTransform1.equals(affineTransform2));
52+
}
53+
}

0 commit comments

Comments
 (0)