From 2d4598d82d0e5c36b6b725b80982e94f160c37a6 Mon Sep 17 00:00:00 2001 From: Eugene Kovko <37694937+eukovko@users.noreply.github.com> Date: Fri, 26 Apr 2024 18:41:27 +0200 Subject: [PATCH] Bael 7891 (#16494) * BAEL-7891: Test for equality vs identity * BAEL-7891: Fixed formatting * BAEL-7891: Fixed a type and a bug --- .../equalsvssame/EqualsVsSameUnitTest.java | 57 +++++++++++++++++++ .../baeldung/junit/equalsvssame/Person.java | 21 +++++++ 2 files changed, 78 insertions(+) create mode 100644 testing-modules/junit-5-basics-2/src/test/java/com/baeldung/junit/equalsvssame/EqualsVsSameUnitTest.java create mode 100644 testing-modules/junit-5-basics-2/src/test/java/com/baeldung/junit/equalsvssame/Person.java diff --git a/testing-modules/junit-5-basics-2/src/test/java/com/baeldung/junit/equalsvssame/EqualsVsSameUnitTest.java b/testing-modules/junit-5-basics-2/src/test/java/com/baeldung/junit/equalsvssame/EqualsVsSameUnitTest.java new file mode 100644 index 0000000000..2019f44185 --- /dev/null +++ b/testing-modules/junit-5-basics-2/src/test/java/com/baeldung/junit/equalsvssame/EqualsVsSameUnitTest.java @@ -0,0 +1,57 @@ +package com.baeldung.junit.equalsvssame; + + +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotEquals; +import static org.junit.jupiter.api.Assertions.assertNotSame; +import static org.junit.jupiter.api.Assertions.assertSame; + +import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.ValueSource; + +class EqualsVsSameUnitTest { + + @ParameterizedTest + @ValueSource(strings = {"Hello", "World"}) + void givenAString_WhenCompare_ThenItEqualsAndSame(String string) { + assertEquals(string, string); + assertSame(string, string); + } + + public boolean equals(Object obj) { + return (this == obj); + } + + @ParameterizedTest + @ValueSource(strings = {"Hello", "World"}) + void givenAStrings_WhenCompareNewStrings_ThenItEqualsButNotSame(String string) { + assertEquals(new String(string), new String(string)); + assertNotSame(new String(string), new String(string)); + } + + @ParameterizedTest + @ValueSource(strings = {"Hello", "World"}) + void givenAString_WhenCompareInJava_ThenItEqualsAndSame(String string) { + assertTrue(string.equals(string)); + assertTrue(string == string); + } + + @ParameterizedTest + @ValueSource(strings = {"Hello", "World"}) + void givenAStrings_WhenCompareNewStringsInJava_ThenItEqualsButNotSame(String string) { + assertTrue(new String(string).equals(new String(string))); + assertFalse(new String(string) == new String(string)); + } + + @Test + void givePeople_WhenCompareWithoutOverridingEquals_TheyNotEqual() { + Person firstPerson = new Person("John", "Doe"); + Person secondPerson = new Person("John", "Doe"); + assertNotEquals(firstPerson, secondPerson); + } + + +} diff --git a/testing-modules/junit-5-basics-2/src/test/java/com/baeldung/junit/equalsvssame/Person.java b/testing-modules/junit-5-basics-2/src/test/java/com/baeldung/junit/equalsvssame/Person.java new file mode 100644 index 0000000000..2c0e0a34d8 --- /dev/null +++ b/testing-modules/junit-5-basics-2/src/test/java/com/baeldung/junit/equalsvssame/Person.java @@ -0,0 +1,21 @@ +package com.baeldung.junit.equalsvssame; + +public class Person { + + private final String firstName; + private final String lastName; + + public Person(String firstName, String lastName) { + this.firstName = firstName; + this.lastName = lastName; + } + + public String getFirstName() { + return firstName; + } + + public String getLastName() { + return lastName; + } +} +