-
Bug
-
Resolution: Not an Issue
-
P4
-
None
-
8, 25
-
generic
-
generic
A DESCRIPTION OF THE PROBLEM :
Cloned area gets a different hashCode from original one.
ACTUAL VS EXPECTED BEHAVIOR
ACTUAL -
true
1469821799 501263526
Exception in thread "main" java.lang.RuntimeException: Cloned area should have same hashCode
at PolygonSubtract.main(PolygonSubtract.java:35)
EXECTED -
true
458209687 458209687 (same hashes)
---------- BEGIN SOURCE ----------
import java.awt.geom.Area;
import java.awt.geom.GeneralPath;
public class PolygonSubtract {
public static void main(String argv[]) {
Area area = new Area();
GeneralPath ring1 = new GeneralPath();
ring1.moveTo(0, 45);
ring1.lineTo(90, 0);
ring1.lineTo(60, -45);
ring1.lineTo(-60, -45);
ring1.lineTo(-90, 0);
ring1.closePath();
area.add(new Area(ring1));
GeneralPath ring2 = new GeneralPath();
ring2.moveTo(0, 20);
ring2.lineTo(100, 0);
ring2.lineTo(30, -20);
ring2.lineTo(-30, -20);
ring2.lineTo(-100, 0);
ring2.closePath();
area.subtract(new Area(ring2));
// Test resource management by verifying equals/hashCode consistency
Area areaCopy = (Area) area.clone();
System.out.println(areaCopy.equals(area));
System.out.println(areaCopy.hashCode() + " " + area.hashCode());
if (!area.equals(areaCopy)) {
throw new RuntimeException("Cloned area should be equal");
}
if (area.hashCode() != areaCopy.hashCode()) {
throw new RuntimeException("Cloned area should have same hashCode");
}
}
}
---------- END SOURCE ----------
Cloned area gets a different hashCode from original one.
ACTUAL VS EXPECTED BEHAVIOR
ACTUAL -
true
1469821799 501263526
Exception in thread "main" java.lang.RuntimeException: Cloned area should have same hashCode
at PolygonSubtract.main(PolygonSubtract.java:35)
EXECTED -
true
458209687 458209687 (same hashes)
---------- BEGIN SOURCE ----------
import java.awt.geom.Area;
import java.awt.geom.GeneralPath;
public class PolygonSubtract {
public static void main(String argv[]) {
Area area = new Area();
GeneralPath ring1 = new GeneralPath();
ring1.moveTo(0, 45);
ring1.lineTo(90, 0);
ring1.lineTo(60, -45);
ring1.lineTo(-60, -45);
ring1.lineTo(-90, 0);
ring1.closePath();
area.add(new Area(ring1));
GeneralPath ring2 = new GeneralPath();
ring2.moveTo(0, 20);
ring2.lineTo(100, 0);
ring2.lineTo(30, -20);
ring2.lineTo(-30, -20);
ring2.lineTo(-100, 0);
ring2.closePath();
area.subtract(new Area(ring2));
// Test resource management by verifying equals/hashCode consistency
Area areaCopy = (Area) area.clone();
System.out.println(areaCopy.equals(area));
System.out.println(areaCopy.hashCode() + " " + area.hashCode());
if (!area.equals(areaCopy)) {
throw new RuntimeException("Cloned area should be equal");
}
if (area.hashCode() != areaCopy.hashCode()) {
throw new RuntimeException("Cloned area should have same hashCode");
}
}
}
---------- END SOURCE ----------
- relates to
-
JDK-4391558 java.awt.geom.Area.equals(Object) not overridden
-
- Closed
-