From bd581da50b95708f61371db6094fa48b7b0c0725 Mon Sep 17 00:00:00 2001 From: Florin Hriscu Date: Sun, 26 Jan 2020 17:43:33 +0200 Subject: [PATCH 1/5] BAEL-3502 Arrays.deepEquals examples. --- .../arrays/ArraysDeepEqualsUnitTest.java | 97 +++++++++++++++++++ 1 file changed, 97 insertions(+) create mode 100644 core-java-modules/core-java-arrays-2/src/test/java/com/baeldung/arrays/ArraysDeepEqualsUnitTest.java diff --git a/core-java-modules/core-java-arrays-2/src/test/java/com/baeldung/arrays/ArraysDeepEqualsUnitTest.java b/core-java-modules/core-java-arrays-2/src/test/java/com/baeldung/arrays/ArraysDeepEqualsUnitTest.java new file mode 100644 index 0000000000..4998886215 --- /dev/null +++ b/core-java-modules/core-java-arrays-2/src/test/java/com/baeldung/arrays/ArraysDeepEqualsUnitTest.java @@ -0,0 +1,97 @@ +package com.baeldung.arrays; + +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +import java.util.Arrays; +import java.util.Objects; + +import org.junit.jupiter.api.Test; + +public class ArraysDeepEqualsUnitTest { + + class Person { + private int id; + private String name; + private int age; + + Person(int id, String name, int age) { + this.id = id; + this.name = name; + this.age = age; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (obj == null) { + return false; + } + if (!(obj instanceof Person)) + return false; + Person person = (Person) obj; + return id == person.id && name.equals(person.name) && age == person.age; + } + + @Override + public int hashCode() { + return Objects.hash(id, name, age); + } + } + + @Test + void givenTwoUnidimensionalObjectTypeArrays_whenUsingEqualsAndDeepEquals_thenBothShouldReturnTrue() { + Object[] anArray = new Object[] { "string1", "string2", "string3" }; + Object[] anotherArray = new Object[] { "string1", "string2", "string3" }; + + assertTrue(Arrays.equals(anArray, anotherArray)); + assertTrue(Arrays.deepEquals(anArray, anotherArray)); + } + + @Test + void givenTwoUnidimensionalObjectTypeArraysWithNullElements_whenUsingEqualsAndDeepEquals_thenBothShouldReturnTrue() { + Object[] anArray = new Object[] { "string1", null, "string3" }; + Object[] anotherArray = new Object[] { "string1", null, "string3" }; + + assertTrue(Arrays.equals(anArray, anotherArray)); + assertTrue(Arrays.deepEquals(anArray, anotherArray)); + } + + @Test + void givenTwoUnidimensionalObjectTypeArraysWithNestedElements_whenUsingEqualsAndDeepEquals_thenShouldReturnDifferently() { + Object[] anArray = new Object[] { "string1", null, new String[] { "nestedString1", "nestedString2" } }; + Object[] anotherArray = new Object[] { "string1", null, new String[] { "nestedString1", "nestedString2" } }; + + assertFalse(Arrays.equals(anArray, anotherArray)); + assertTrue(Arrays.deepEquals(anArray, anotherArray)); + } + + @Test + void givenTwoMultidimensionalPrimitiveTypeArrays_whenUsingEqualsAndDeepEquals_thenBothShouldReturnDifferently() { + int[][] anArray = { { 1, 2, 3 }, { 4, 5, 6, 9 }, { 7 } }; + int[][] anotherArray = { { 1, 2, 3 }, { 4, 5, 6, 9 }, { 7 } }; + + assertFalse(Arrays.equals(anArray, anotherArray)); + assertTrue(Arrays.deepEquals(anArray, anotherArray)); + } + + @Test + void givenTwoMultidimensionalObjectTypeArrays_whenUsingEqualsAndDeepEquals_thenBothShouldReturnDifferently() { + Person personArray1[][] = { { new Person(1, "John", 22), new Person(2, "Mike", 23) }, { new Person(3, "Steve", 27), new Person(4, "Gary", 28) } }; + Person personArray2[][] = { { new Person(1, "John", 22), new Person(2, "Mike", 23) }, { new Person(3, "Steve", 27), new Person(4, "Gary", 28) } }; + + assertFalse(Arrays.equals(personArray1, personArray2)); + assertTrue(Arrays.deepEquals(personArray1, personArray2)); + } + + @Test + void givenTwoMultidimensionalObjectTypeArrays_whenUsingDeepEqualsFromObjectsAndArraysClasses_thenBothShouldReturnTrue() { + Person personArray1[][] = { { new Person(1, "John", 22), new Person(2, "Mike", 23) }, { new Person(3, "Steve", 27), new Person(4, "Gary", 28) } }; + Person personArray2[][] = { { new Person(1, "John", 22), new Person(2, "Mike", 23) }, { new Person(3, "Steve", 27), new Person(4, "Gary", 28) } }; + + assertTrue(Objects.deepEquals(personArray1, personArray2)); + assertTrue(Arrays.deepEquals(personArray1, personArray2)); + } +} From 124cae5760baef28cc57ec36bfb053dd89fc93b2 Mon Sep 17 00:00:00 2001 From: Florin Hriscu Date: Sat, 8 Feb 2020 00:20:48 +0200 Subject: [PATCH 2/5] BAEL-3502 Change destination package for ArraysDeepEqualsUnitTest.java. --- .../arrays/{ => deepequals}/ArraysDeepEqualsUnitTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename core-java-modules/core-java-arrays-2/src/test/java/com/baeldung/arrays/{ => deepequals}/ArraysDeepEqualsUnitTest.java (98%) diff --git a/core-java-modules/core-java-arrays-2/src/test/java/com/baeldung/arrays/ArraysDeepEqualsUnitTest.java b/core-java-modules/core-java-arrays-2/src/test/java/com/baeldung/arrays/deepequals/ArraysDeepEqualsUnitTest.java similarity index 98% rename from core-java-modules/core-java-arrays-2/src/test/java/com/baeldung/arrays/ArraysDeepEqualsUnitTest.java rename to core-java-modules/core-java-arrays-2/src/test/java/com/baeldung/arrays/deepequals/ArraysDeepEqualsUnitTest.java index 4998886215..5e01d3f9b5 100644 --- a/core-java-modules/core-java-arrays-2/src/test/java/com/baeldung/arrays/ArraysDeepEqualsUnitTest.java +++ b/core-java-modules/core-java-arrays-2/src/test/java/com/baeldung/arrays/deepequals/ArraysDeepEqualsUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.arrays; +package com.baeldung.arrays.deepequals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; From 9c505d2ac152d11a5e07acc0f522c70790cd7b60 Mon Sep 17 00:00:00 2001 From: Florin Hriscu Date: Sun, 16 Feb 2020 00:29:50 +0200 Subject: [PATCH 3/5] BAEL-3502 Remove ArraysDeepEqualsUnitTest file from core-java-arrays-2 module. --- .../deepequals/ArraysDeepEqualsUnitTest.java | 97 ------------------- 1 file changed, 97 deletions(-) delete mode 100644 core-java-modules/core-java-arrays-2/src/test/java/com/baeldung/arrays/deepequals/ArraysDeepEqualsUnitTest.java diff --git a/core-java-modules/core-java-arrays-2/src/test/java/com/baeldung/arrays/deepequals/ArraysDeepEqualsUnitTest.java b/core-java-modules/core-java-arrays-2/src/test/java/com/baeldung/arrays/deepequals/ArraysDeepEqualsUnitTest.java deleted file mode 100644 index 5e01d3f9b5..0000000000 --- a/core-java-modules/core-java-arrays-2/src/test/java/com/baeldung/arrays/deepequals/ArraysDeepEqualsUnitTest.java +++ /dev/null @@ -1,97 +0,0 @@ -package com.baeldung.arrays.deepequals; - -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; - -import java.util.Arrays; -import java.util.Objects; - -import org.junit.jupiter.api.Test; - -public class ArraysDeepEqualsUnitTest { - - class Person { - private int id; - private String name; - private int age; - - Person(int id, String name, int age) { - this.id = id; - this.name = name; - this.age = age; - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj == null) { - return false; - } - if (!(obj instanceof Person)) - return false; - Person person = (Person) obj; - return id == person.id && name.equals(person.name) && age == person.age; - } - - @Override - public int hashCode() { - return Objects.hash(id, name, age); - } - } - - @Test - void givenTwoUnidimensionalObjectTypeArrays_whenUsingEqualsAndDeepEquals_thenBothShouldReturnTrue() { - Object[] anArray = new Object[] { "string1", "string2", "string3" }; - Object[] anotherArray = new Object[] { "string1", "string2", "string3" }; - - assertTrue(Arrays.equals(anArray, anotherArray)); - assertTrue(Arrays.deepEquals(anArray, anotherArray)); - } - - @Test - void givenTwoUnidimensionalObjectTypeArraysWithNullElements_whenUsingEqualsAndDeepEquals_thenBothShouldReturnTrue() { - Object[] anArray = new Object[] { "string1", null, "string3" }; - Object[] anotherArray = new Object[] { "string1", null, "string3" }; - - assertTrue(Arrays.equals(anArray, anotherArray)); - assertTrue(Arrays.deepEquals(anArray, anotherArray)); - } - - @Test - void givenTwoUnidimensionalObjectTypeArraysWithNestedElements_whenUsingEqualsAndDeepEquals_thenShouldReturnDifferently() { - Object[] anArray = new Object[] { "string1", null, new String[] { "nestedString1", "nestedString2" } }; - Object[] anotherArray = new Object[] { "string1", null, new String[] { "nestedString1", "nestedString2" } }; - - assertFalse(Arrays.equals(anArray, anotherArray)); - assertTrue(Arrays.deepEquals(anArray, anotherArray)); - } - - @Test - void givenTwoMultidimensionalPrimitiveTypeArrays_whenUsingEqualsAndDeepEquals_thenBothShouldReturnDifferently() { - int[][] anArray = { { 1, 2, 3 }, { 4, 5, 6, 9 }, { 7 } }; - int[][] anotherArray = { { 1, 2, 3 }, { 4, 5, 6, 9 }, { 7 } }; - - assertFalse(Arrays.equals(anArray, anotherArray)); - assertTrue(Arrays.deepEquals(anArray, anotherArray)); - } - - @Test - void givenTwoMultidimensionalObjectTypeArrays_whenUsingEqualsAndDeepEquals_thenBothShouldReturnDifferently() { - Person personArray1[][] = { { new Person(1, "John", 22), new Person(2, "Mike", 23) }, { new Person(3, "Steve", 27), new Person(4, "Gary", 28) } }; - Person personArray2[][] = { { new Person(1, "John", 22), new Person(2, "Mike", 23) }, { new Person(3, "Steve", 27), new Person(4, "Gary", 28) } }; - - assertFalse(Arrays.equals(personArray1, personArray2)); - assertTrue(Arrays.deepEquals(personArray1, personArray2)); - } - - @Test - void givenTwoMultidimensionalObjectTypeArrays_whenUsingDeepEqualsFromObjectsAndArraysClasses_thenBothShouldReturnTrue() { - Person personArray1[][] = { { new Person(1, "John", 22), new Person(2, "Mike", 23) }, { new Person(3, "Steve", 27), new Person(4, "Gary", 28) } }; - Person personArray2[][] = { { new Person(1, "John", 22), new Person(2, "Mike", 23) }, { new Person(3, "Steve", 27), new Person(4, "Gary", 28) } }; - - assertTrue(Objects.deepEquals(personArray1, personArray2)); - assertTrue(Arrays.deepEquals(personArray1, personArray2)); - } -} From 319fbc12c57942f2c2141dd7ef77c5f8abfcb08c Mon Sep 17 00:00:00 2001 From: Florin Hriscu Date: Sun, 16 Feb 2020 00:33:19 +0200 Subject: [PATCH 4/5] BAEL-3502 Add ArraysDeepEqualsUnitTest.java inside new core-java-arrays-3 module. --- .../core-java-arrays-3/README.md | 5 + core-java-modules/core-java-arrays-3/pom.xml | 31 ++++++ .../deepequals/ArraysDeepEqualsUnitTest.java | 100 ++++++++++++++++++ 3 files changed, 136 insertions(+) create mode 100644 core-java-modules/core-java-arrays-3/README.md create mode 100644 core-java-modules/core-java-arrays-3/pom.xml create mode 100644 core-java-modules/core-java-arrays-3/src/test/java/com/baeldung/arrays/deepequals/ArraysDeepEqualsUnitTest.java diff --git a/core-java-modules/core-java-arrays-3/README.md b/core-java-modules/core-java-arrays-3/README.md new file mode 100644 index 0000000000..9f2885a2ce --- /dev/null +++ b/core-java-modules/core-java-arrays-3/README.md @@ -0,0 +1,5 @@ +## Core Java Arrays (Part 3) + +This module contains articles about Java arrays + +## Relevant Articles diff --git a/core-java-modules/core-java-arrays-3/pom.xml b/core-java-modules/core-java-arrays-3/pom.xml new file mode 100644 index 0000000000..b39a9af653 --- /dev/null +++ b/core-java-modules/core-java-arrays-3/pom.xml @@ -0,0 +1,31 @@ + + + 4.0.0 + core-java-arrays-3 + 0.1.0-SNAPSHOT + core-java-arrays-3 + jar + + + com.baeldung + parent-java + 0.0.1-SNAPSHOT + ../../parent-java + + + + + org.assertj + assertj-core + ${assertj.version} + test + + + + + 3.14.0 + + + \ No newline at end of file diff --git a/core-java-modules/core-java-arrays-3/src/test/java/com/baeldung/arrays/deepequals/ArraysDeepEqualsUnitTest.java b/core-java-modules/core-java-arrays-3/src/test/java/com/baeldung/arrays/deepequals/ArraysDeepEqualsUnitTest.java new file mode 100644 index 0000000000..aa577ea7bd --- /dev/null +++ b/core-java-modules/core-java-arrays-3/src/test/java/com/baeldung/arrays/deepequals/ArraysDeepEqualsUnitTest.java @@ -0,0 +1,100 @@ +package com.baeldung.arrays.deepequals; + +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +import java.util.Arrays; +import java.util.Objects; +import org.junit.jupiter.api.Test; + +public class ArraysDeepEqualsUnitTest { + + class Person { + private int id; + private String name; + private int age; + + Person(int id, String name, int age) { + this.id = id; + this.name = name; + this.age = age; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (obj == null) { + return false; + } + if (!(obj instanceof Person)) + return false; + Person person = (Person) obj; + return id == person.id && name.equals(person.name) && age == person.age; + } + + @Override + public int hashCode() { + return Objects.hash(id, name, age); + } + } + + @Test + void givenTwoUnidimensionalObjectTypeArrays_whenUsingEqualsAndDeepEquals_thenBothShouldReturnTrue() { + Object[] anArray = new Object[] { "string1", "string2", "string3" }; + Object[] anotherArray = new Object[] { "string1", "string2", "string3" }; + + assertTrue(Arrays.equals(anArray, anotherArray)); + assertTrue(Arrays.deepEquals(anArray, anotherArray)); + } + + @Test + void givenTwoUnidimensionalObjectTypeArraysWithNullElements_whenUsingEqualsAndDeepEquals_thenBothShouldReturnTrue() { + Object[] anArray = new Object[] { "string1", null, "string3" }; + Object[] anotherArray = new Object[] { "string1", null, "string3" }; + + assertTrue(Arrays.equals(anArray, anotherArray)); + assertTrue(Arrays.deepEquals(anArray, anotherArray)); + } + + @Test + void givenTwoUnidimensionalObjectTypeArraysWithNestedElements_whenUsingEqualsAndDeepEquals_thenShouldReturnDifferently() { + Object[] anArray = new Object[] { "string1", null, new String[] { "nestedString1", "nestedString2" } }; + Object[] anotherArray = new Object[] { "string1", null, new String[] { "nestedString1", "nestedString2" } }; + + assertFalse(Arrays.equals(anArray, anotherArray)); + assertTrue(Arrays.deepEquals(anArray, anotherArray)); + } + + @Test + void givenTwoMultidimensionalPrimitiveTypeArrays_whenUsingEqualsAndDeepEquals_thenBothShouldReturnDifferently() { + int[][] anArray = { { 1, 2, 3 }, { 4, 5, 6, 9 }, { 7 } }; + int[][] anotherArray = { { 1, 2, 3 }, { 4, 5, 6, 9 }, { 7 } }; + + assertFalse(Arrays.equals(anArray, anotherArray)); + assertTrue(Arrays.deepEquals(anArray, anotherArray)); + } + + @Test + void givenTwoMultidimensionalObjectTypeArrays_whenUsingEqualsAndDeepEquals_thenBothShouldReturnDifferently() { + Person personArray1[][] = { { new Person(1, "John", 22), new Person(2, "Mike", 23) }, + { new Person(3, "Steve", 27), new Person(4, "Gary", 28) } }; + Person personArray2[][] = { { new Person(1, "John", 22), new Person(2, "Mike", 23) }, + { new Person(3, "Steve", 27), new Person(4, "Gary", 28) } }; + + assertFalse(Arrays.equals(personArray1, personArray2)); + assertTrue(Arrays.deepEquals(personArray1, personArray2)); + } + + @Test + void givenTwoMultidimensionalObjectTypeArrays_whenUsingDeepEqualsFromObjectsAndArraysClasses_thenBothShouldReturnTrue() { + Person personArray1[][] = { { new Person(1, "John", 22), new Person(2, "Mike", 23) }, + { new Person(3, "Steve", 27), new Person(4, "Gary", 28) } }; + Person personArray2[][] = { { new Person(1, "John", 22), new Person(2, "Mike", 23) }, + { new Person(3, "Steve", 27), new Person(4, "Gary", 28) } }; + + assertTrue(Objects.deepEquals(personArray1, personArray2)); + assertTrue(Arrays.deepEquals(personArray1, personArray2)); + } +} From af1fd4e1b0df9085378aca2127721d1a554f7a8f Mon Sep 17 00:00:00 2001 From: Florin Hriscu Date: Sun, 16 Feb 2020 00:33:48 +0200 Subject: [PATCH 5/5] BAEL-3502 Bind core-java-arrays-3 module to parent module. --- core-java-modules/pom.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/core-java-modules/pom.xml b/core-java-modules/pom.xml index 904cec2815..771d5a5d61 100644 --- a/core-java-modules/pom.xml +++ b/core-java-modules/pom.xml @@ -31,6 +31,7 @@ core-java-annotations core-java-arrays core-java-arrays-2 + core-java-arrays-3 core-java-collections core-java-collections-2