From 13da8b8cee14838b28593e55a1878f806ce83c1a Mon Sep 17 00:00:00 2001 From: dupirefr Date: Fri, 2 Aug 2019 08:07:39 +0200 Subject: [PATCH 1/4] [BAEL-3117] XOR implementations --- .../baeldung/java/booleanoperators/Car.java | 20 ++++++ .../java/booleanoperators/XorUnitTest.java | 64 +++++++++++++++++++ 2 files changed, 84 insertions(+) create mode 100644 core-java-modules/core-java/src/main/java/com/baeldung/java/booleanoperators/Car.java create mode 100644 core-java-modules/core-java/src/test/java/com/baeldung/java/booleanoperators/XorUnitTest.java diff --git a/core-java-modules/core-java/src/main/java/com/baeldung/java/booleanoperators/Car.java b/core-java-modules/core-java/src/main/java/com/baeldung/java/booleanoperators/Car.java new file mode 100644 index 0000000000..8043b6dd93 --- /dev/null +++ b/core-java-modules/core-java/src/main/java/com/baeldung/java/booleanoperators/Car.java @@ -0,0 +1,20 @@ +package com.baeldung.java.booleanoperators; + +public class Car { + + private boolean diesel; + private boolean manual; + + public Car(boolean diesel, boolean manual) { + this.diesel = diesel; + this.manual = manual; + } + + public boolean isDiesel() { + return diesel; + } + + public boolean isManual() { + return manual; + } +} diff --git a/core-java-modules/core-java/src/test/java/com/baeldung/java/booleanoperators/XorUnitTest.java b/core-java-modules/core-java/src/test/java/com/baeldung/java/booleanoperators/XorUnitTest.java new file mode 100644 index 0000000000..0654d07f4f --- /dev/null +++ b/core-java-modules/core-java/src/test/java/com/baeldung/java/booleanoperators/XorUnitTest.java @@ -0,0 +1,64 @@ +package com.baeldung.java.booleanoperators; + +import org.junit.jupiter.api.Test; + +import static org.assertj.core.api.Assertions.assertThat; + +class XorUnitTest { + + @Test + void givenDieselManualCar_whenXorOldSchool_ThenFalse() { + Car car = new Car(true, true); + boolean dieselXorManual = (car.isDiesel() && !car.isManual()) || (!car.isDiesel() && car.isManual()); + assertThat(dieselXorManual).isFalse(); + } + + @Test + void givenDieselAutomaticCar_whenXorOldSchool_ThenTrue() { + Car car = new Car(true, false); + boolean dieselXorManual = (car.isDiesel() && !car.isManual()) || (!car.isDiesel() && car.isManual()); + assertThat(dieselXorManual).isTrue(); + } + + @Test + void givenNonDieselManualCar_whenXorOldSchool_ThenTrue() { + Car car = new Car(false, true); + boolean dieselXorManual = (car.isDiesel() && !car.isManual()) || (!car.isDiesel() && car.isManual()); + assertThat(dieselXorManual).isTrue(); + } + + @Test + void givenNonDieselAutomaticCar_whenXorOldSchool_ThenFalse() { + Car car = new Car(false, false); + boolean dieselXorManual = (car.isDiesel() && !car.isManual()) || (!car.isDiesel() && car.isManual()); + assertThat(dieselXorManual).isFalse(); + } + + @Test + void givenDieselManualCar_whenXor_ThenFalse() { + Car car = new Car(true, true); + boolean dieselXorManual = car.isDiesel() ^ car.isManual(); + assertThat(dieselXorManual).isFalse(); + } + + @Test + void givenDieselAutomaticCar_whenXor_ThenTrue() { + Car car = new Car(true, false); + boolean dieselXorManual = car.isDiesel() ^ car.isManual(); + assertThat(dieselXorManual).isTrue(); + } + + @Test + void givenNonDieselManualCar_whenXor_ThenTrue() { + Car car = new Car(false, true); + boolean dieselXorManual = car.isDiesel() ^ car.isManual(); + assertThat(dieselXorManual).isTrue(); + } + + @Test + void givenNonDieselAutomaticCar_whenXor_ThenFalse() { + Car car = new Car(false, false); + boolean dieselXorManual = car.isDiesel() ^ car.isManual(); + assertThat(dieselXorManual).isFalse(); + } +} From fc16a4707843e59af9c0fe4a1076a3d2e4ca9546 Mon Sep 17 00:00:00 2001 From: dupirefr Date: Sat, 10 Aug 2019 11:51:15 +0200 Subject: [PATCH 2/4] Added factory methods to create cars --- .../com/baeldung/java/booleanoperators/Car.java | 16 ++++++++++++++++ .../java/booleanoperators/XorUnitTest.java | 16 ++++++++-------- 2 files changed, 24 insertions(+), 8 deletions(-) diff --git a/core-java-modules/core-java/src/main/java/com/baeldung/java/booleanoperators/Car.java b/core-java-modules/core-java/src/main/java/com/baeldung/java/booleanoperators/Car.java index 8043b6dd93..7394895325 100644 --- a/core-java-modules/core-java/src/main/java/com/baeldung/java/booleanoperators/Car.java +++ b/core-java-modules/core-java/src/main/java/com/baeldung/java/booleanoperators/Car.java @@ -17,4 +17,20 @@ public class Car { public boolean isManual() { return manual; } + + static Car dieselAndManualCar() { + return new Car(true, true); + } + + static Car dieselAndAutomaticCar() { + return new Car(true, false); + } + + static Car oilAndManualCar() { + return new Car(false, true); + } + + static Car oilAndAutomaticCar() { + return new Car(false, false); + } } diff --git a/core-java-modules/core-java/src/test/java/com/baeldung/java/booleanoperators/XorUnitTest.java b/core-java-modules/core-java/src/test/java/com/baeldung/java/booleanoperators/XorUnitTest.java index 0654d07f4f..70abc0266d 100644 --- a/core-java-modules/core-java/src/test/java/com/baeldung/java/booleanoperators/XorUnitTest.java +++ b/core-java-modules/core-java/src/test/java/com/baeldung/java/booleanoperators/XorUnitTest.java @@ -8,56 +8,56 @@ class XorUnitTest { @Test void givenDieselManualCar_whenXorOldSchool_ThenFalse() { - Car car = new Car(true, true); + Car car = Car.dieselAndManualCar(); boolean dieselXorManual = (car.isDiesel() && !car.isManual()) || (!car.isDiesel() && car.isManual()); assertThat(dieselXorManual).isFalse(); } @Test void givenDieselAutomaticCar_whenXorOldSchool_ThenTrue() { - Car car = new Car(true, false); + Car car = Car.dieselAndAutomaticCar(); boolean dieselXorManual = (car.isDiesel() && !car.isManual()) || (!car.isDiesel() && car.isManual()); assertThat(dieselXorManual).isTrue(); } @Test void givenNonDieselManualCar_whenXorOldSchool_ThenTrue() { - Car car = new Car(false, true); + Car car = Car.oilAndManualCar(); boolean dieselXorManual = (car.isDiesel() && !car.isManual()) || (!car.isDiesel() && car.isManual()); assertThat(dieselXorManual).isTrue(); } @Test void givenNonDieselAutomaticCar_whenXorOldSchool_ThenFalse() { - Car car = new Car(false, false); + Car car = Car.oilAndAutomaticCar(); boolean dieselXorManual = (car.isDiesel() && !car.isManual()) || (!car.isDiesel() && car.isManual()); assertThat(dieselXorManual).isFalse(); } @Test void givenDieselManualCar_whenXor_ThenFalse() { - Car car = new Car(true, true); + Car car = Car.dieselAndManualCar(); boolean dieselXorManual = car.isDiesel() ^ car.isManual(); assertThat(dieselXorManual).isFalse(); } @Test void givenDieselAutomaticCar_whenXor_ThenTrue() { - Car car = new Car(true, false); + Car car = Car.dieselAndAutomaticCar(); boolean dieselXorManual = car.isDiesel() ^ car.isManual(); assertThat(dieselXorManual).isTrue(); } @Test void givenNonDieselManualCar_whenXor_ThenTrue() { - Car car = new Car(false, true); + Car car = Car.oilAndManualCar(); boolean dieselXorManual = car.isDiesel() ^ car.isManual(); assertThat(dieselXorManual).isTrue(); } @Test void givenNonDieselAutomaticCar_whenXor_ThenFalse() { - Car car = new Car(false, false); + Car car = Car.oilAndAutomaticCar(); boolean dieselXorManual = car.isDiesel() ^ car.isManual(); assertThat(dieselXorManual).isFalse(); } From d78101176260809e5c0280650914ec08d570a87d Mon Sep 17 00:00:00 2001 From: dupirefr Date: Tue, 27 Aug 2019 07:36:52 +0200 Subject: [PATCH 3/4] [BAEL-3117] Moved code into operators module --- .../src/main/java/com/baeldung}/booleanoperators/Car.java | 2 +- .../test/java/com/baeldung}/booleanoperators/XorUnitTest.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) rename core-java-modules/{core-java/src/main/java/com/baeldung/java => core-java-lang-operators/src/main/java/com/baeldung}/booleanoperators/Car.java (93%) rename core-java-modules/{core-java/src/test/java/com/baeldung/java => core-java-lang-operators/src/test/java/com/baeldung}/booleanoperators/XorUnitTest.java (98%) diff --git a/core-java-modules/core-java/src/main/java/com/baeldung/java/booleanoperators/Car.java b/core-java-modules/core-java-lang-operators/src/main/java/com/baeldung/booleanoperators/Car.java similarity index 93% rename from core-java-modules/core-java/src/main/java/com/baeldung/java/booleanoperators/Car.java rename to core-java-modules/core-java-lang-operators/src/main/java/com/baeldung/booleanoperators/Car.java index 7394895325..37fb139917 100644 --- a/core-java-modules/core-java/src/main/java/com/baeldung/java/booleanoperators/Car.java +++ b/core-java-modules/core-java-lang-operators/src/main/java/com/baeldung/booleanoperators/Car.java @@ -1,4 +1,4 @@ -package com.baeldung.java.booleanoperators; +package com.baeldung.booleanoperators; public class Car { diff --git a/core-java-modules/core-java/src/test/java/com/baeldung/java/booleanoperators/XorUnitTest.java b/core-java-modules/core-java-lang-operators/src/test/java/com/baeldung/booleanoperators/XorUnitTest.java similarity index 98% rename from core-java-modules/core-java/src/test/java/com/baeldung/java/booleanoperators/XorUnitTest.java rename to core-java-modules/core-java-lang-operators/src/test/java/com/baeldung/booleanoperators/XorUnitTest.java index 70abc0266d..e3cee4888a 100644 --- a/core-java-modules/core-java/src/test/java/com/baeldung/java/booleanoperators/XorUnitTest.java +++ b/core-java-modules/core-java-lang-operators/src/test/java/com/baeldung/booleanoperators/XorUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.java.booleanoperators; +package com.baeldung.booleanoperators; import org.junit.jupiter.api.Test; From 1b0dea74f6b37fd9083764a90799831b7d3ea1f7 Mon Sep 17 00:00:00 2001 From: dupirefr Date: Tue, 27 Aug 2019 07:55:16 +0200 Subject: [PATCH 4/4] [BAEL-3117] Added integer xor --- .../booleanoperators/XorUnitTest.java | 21 ++++++++++++------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/core-java-modules/core-java-lang-operators/src/test/java/com/baeldung/booleanoperators/XorUnitTest.java b/core-java-modules/core-java-lang-operators/src/test/java/com/baeldung/booleanoperators/XorUnitTest.java index e3cee4888a..efe38c6f45 100644 --- a/core-java-modules/core-java-lang-operators/src/test/java/com/baeldung/booleanoperators/XorUnitTest.java +++ b/core-java-modules/core-java-lang-operators/src/test/java/com/baeldung/booleanoperators/XorUnitTest.java @@ -7,58 +7,63 @@ import static org.assertj.core.api.Assertions.assertThat; class XorUnitTest { @Test - void givenDieselManualCar_whenXorOldSchool_ThenFalse() { + void givenDieselManualCar_whenXorOldSchool_thenFalse() { Car car = Car.dieselAndManualCar(); boolean dieselXorManual = (car.isDiesel() && !car.isManual()) || (!car.isDiesel() && car.isManual()); assertThat(dieselXorManual).isFalse(); } @Test - void givenDieselAutomaticCar_whenXorOldSchool_ThenTrue() { + void givenDieselAutomaticCar_whenXorOldSchool_thenTrue() { Car car = Car.dieselAndAutomaticCar(); boolean dieselXorManual = (car.isDiesel() && !car.isManual()) || (!car.isDiesel() && car.isManual()); assertThat(dieselXorManual).isTrue(); } @Test - void givenNonDieselManualCar_whenXorOldSchool_ThenTrue() { + void givenNonDieselManualCar_whenXorOldSchool_thenTrue() { Car car = Car.oilAndManualCar(); boolean dieselXorManual = (car.isDiesel() && !car.isManual()) || (!car.isDiesel() && car.isManual()); assertThat(dieselXorManual).isTrue(); } @Test - void givenNonDieselAutomaticCar_whenXorOldSchool_ThenFalse() { + void givenNonDieselAutomaticCar_whenXorOldSchool_thenFalse() { Car car = Car.oilAndAutomaticCar(); boolean dieselXorManual = (car.isDiesel() && !car.isManual()) || (!car.isDiesel() && car.isManual()); assertThat(dieselXorManual).isFalse(); } @Test - void givenDieselManualCar_whenXor_ThenFalse() { + void givenDieselManualCar_whenXor_thenFalse() { Car car = Car.dieselAndManualCar(); boolean dieselXorManual = car.isDiesel() ^ car.isManual(); assertThat(dieselXorManual).isFalse(); } @Test - void givenDieselAutomaticCar_whenXor_ThenTrue() { + void givenDieselAutomaticCar_whenXor_thenTrue() { Car car = Car.dieselAndAutomaticCar(); boolean dieselXorManual = car.isDiesel() ^ car.isManual(); assertThat(dieselXorManual).isTrue(); } @Test - void givenNonDieselManualCar_whenXor_ThenTrue() { + void givenNonDieselManualCar_whenXor_thenTrue() { Car car = Car.oilAndManualCar(); boolean dieselXorManual = car.isDiesel() ^ car.isManual(); assertThat(dieselXorManual).isTrue(); } @Test - void givenNonDieselAutomaticCar_whenXor_ThenFalse() { + void givenNonDieselAutomaticCar_whenXor_thenFalse() { Car car = Car.oilAndAutomaticCar(); boolean dieselXorManual = car.isDiesel() ^ car.isManual(); assertThat(dieselXorManual).isFalse(); } + + @Test + void givenNumbersOneAndThree_whenXor_thenTwo() { + assertThat(1 ^ 3).isEqualTo(2); + } }