From 3a0dd5d6985f1fcb6bbcae9500706dab2d8e3f22 Mon Sep 17 00:00:00 2001 From: DiegoMarti2 <150871541+DiegoMarti2@users.noreply.github.com> Date: Wed, 24 Apr 2024 20:48:34 +0200 Subject: [PATCH] baeldung-articles : BAEL-7649 (#16452) Unit Test for hashCode() in Java. --- .../testhashcode/HahCodeUnitTest.java | 42 +++++++++++++++++++ .../com/baeldung/testhashcode/MyClass.java | 15 +++++++ 2 files changed, 57 insertions(+) create mode 100644 core-java-modules/core-java-lang-oop-methods/src/test/java/com/baeldung/testhashcode/HahCodeUnitTest.java create mode 100644 core-java-modules/core-java-lang-oop-methods/src/test/java/com/baeldung/testhashcode/MyClass.java diff --git a/core-java-modules/core-java-lang-oop-methods/src/test/java/com/baeldung/testhashcode/HahCodeUnitTest.java b/core-java-modules/core-java-lang-oop-methods/src/test/java/com/baeldung/testhashcode/HahCodeUnitTest.java new file mode 100644 index 0000000000..6b38d9487e --- /dev/null +++ b/core-java-modules/core-java-lang-oop-methods/src/test/java/com/baeldung/testhashcode/HahCodeUnitTest.java @@ -0,0 +1,42 @@ +package com.baeldung.testhashcode; + +import org.junit.Test; + +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + +import static org.junit.Assert.assertEquals; + +public class HahCodeUnitTest { + @Test + public void givenObject_whenTestingHashCodeConsistency_thenConsistentHashCodeReturned() { + MyClass obj = new MyClass("value"); + int hashCode1 = obj.hashCode(); + int hashCode2 = obj.hashCode(); + assertEquals(hashCode1, hashCode2); + } + + @Test + public void givenTwoEqualObjects_whenTestingHashCodeEquality_thenEqualHashCodesReturned() { + MyClass obj1 = new MyClass("value"); + MyClass obj2 = new MyClass("value"); + assertEquals(obj1.hashCode(), obj2.hashCode()); + } + + @Test + public void givenMultipleObjects_whenTestingHashCodeDistribution_thenEvenDistributionOfHashCodes() { + List objects = new ArrayList<>(); + for (int i = 0; i < 1000; i++) { + objects.add(new MyClass("value" + i)); + } + + Set hashCodes = new HashSet<>(); + for (MyClass obj : objects) { + hashCodes.add(obj.hashCode()); + } + + assertEquals(objects.size(), hashCodes.size(), 10); + } +} \ No newline at end of file diff --git a/core-java-modules/core-java-lang-oop-methods/src/test/java/com/baeldung/testhashcode/MyClass.java b/core-java-modules/core-java-lang-oop-methods/src/test/java/com/baeldung/testhashcode/MyClass.java new file mode 100644 index 0000000000..52c42ed68c --- /dev/null +++ b/core-java-modules/core-java-lang-oop-methods/src/test/java/com/baeldung/testhashcode/MyClass.java @@ -0,0 +1,15 @@ +package com.baeldung.testhashcode; + +public class MyClass { + private String value; + + public MyClass(String value) { + this.value = value; + } + + @Override + public int hashCode() { + return value != null ? value.hashCode() : 0; + } + +}