diff --git a/core-java-modules/core-java-lang-5/src/main/java/com/baeldung/toggleboolean/ToggleBoolean.java b/core-java-modules/core-java-lang-5/src/main/java/com/baeldung/toggleboolean/ToggleBoolean.java new file mode 100644 index 0000000000..e68ff31d05 --- /dev/null +++ b/core-java-modules/core-java-lang-5/src/main/java/com/baeldung/toggleboolean/ToggleBoolean.java @@ -0,0 +1,10 @@ +package com.baeldung.toggleboolean; + +public class ToggleBoolean { + public static Boolean toggle(Boolean b) { + if (b == null) { + return b; + } + return !b; + } +} \ No newline at end of file diff --git a/core-java-modules/core-java-lang-5/src/test/java/com/baeldung/toggleboolean/ToggleBooleanUnitTest.java b/core-java-modules/core-java-lang-5/src/test/java/com/baeldung/toggleboolean/ToggleBooleanUnitTest.java new file mode 100644 index 0000000000..2490281477 --- /dev/null +++ b/core-java-modules/core-java-lang-5/src/test/java/com/baeldung/toggleboolean/ToggleBooleanUnitTest.java @@ -0,0 +1,60 @@ +package com.baeldung.toggleboolean; + +import static org.assertj.core.api.AssertionsForClassTypes.assertThatThrownBy; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertNull; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import org.junit.jupiter.api.Test; + +class ToggleBooleanUnitTest { + @Test + void givenPrimitiveBoolean_whenUsingNotOperator_shouldToggleTheBoolean() { + boolean b = true; + b = !b; + assertFalse(b); + + b = !b; + assertTrue(b); + } + + @Test + void givenNullBoxedBoolean_whenUsingNotOperator_shouldThrowNPE() { + assertThatThrownBy(() -> { + Boolean b = null; + b = !b; + }).isInstanceOf(NullPointerException.class); + } + + @Test + void givenPrimitiveBoolean_whenUsingXorOperator_shouldToggleTheBoolean() { + boolean b = true; + b ^= true; + assertFalse(b); + + b ^= true; + assertTrue(b); + } + + @Test + void givenBooleanObj_whenToggle_shouldGetExpectedResult() { + //boxed Boolean + Boolean b = true; + b = ToggleBoolean.toggle(b); + assertFalse(b); + + b = ToggleBoolean.toggle(b); + assertTrue(b); + + b = null; + b = ToggleBoolean.toggle(b); + assertNull(b); + + //primitive boolean + boolean bb = true; + bb = ToggleBoolean.toggle(bb); + assertFalse(bb); + bb = ToggleBoolean.toggle(bb); + assertTrue(bb); + } +}