diff --git a/src/main/java/com/thealgorithms/maths/PowerOfTwoOrNot.java b/src/main/java/com/thealgorithms/maths/PowerOfTwoOrNot.java index 88a6b63c9597..c1f8beffdb2e 100644 --- a/src/main/java/com/thealgorithms/maths/PowerOfTwoOrNot.java +++ b/src/main/java/com/thealgorithms/maths/PowerOfTwoOrNot.java @@ -4,14 +4,8 @@ * A utility to check if a given number is power of two or not. For example 8,16 * etc. */ -public class PowerOfTwoOrNot { - - public static void main(String[] args) { - assert !checkIfPowerOfTwoOrNot(0); - assert checkIfPowerOfTwoOrNot(1); - assert checkIfPowerOfTwoOrNot(8); - assert checkIfPowerOfTwoOrNot(16); - assert checkIfPowerOfTwoOrNot(1024); +public final class PowerOfTwoOrNot { + private PowerOfTwoOrNot() { } /** @@ -21,7 +15,7 @@ public static void main(String[] args) { * @return {@code true} if given number is power of two, otherwise * {@code false} */ - public static boolean checkIfPowerOfTwoOrNot(int number) { + public static boolean checkIfPowerOfTwoOrNot(final int number) { return number != 0 && ((number & (number - 1)) == 0); } } diff --git a/src/test/java/com/thealgorithms/maths/PowerOfTwoOrNotTest.java b/src/test/java/com/thealgorithms/maths/PowerOfTwoOrNotTest.java new file mode 100644 index 000000000000..df01d481ccd8 --- /dev/null +++ b/src/test/java/com/thealgorithms/maths/PowerOfTwoOrNotTest.java @@ -0,0 +1,25 @@ +package com.thealgorithms.maths; + +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import java.util.Map; +import org.junit.jupiter.api.Test; + +public class PowerOfTwoOrNotTest { + @Test + public void testPowerOfTwoOrNotForPowersOfTwo() { + final var powersOfTwo = new int[] {1, 2, 4, 8, 16, 32, 64}; + for (final var n : powersOfTwo) { + assertTrue(PowerOfTwoOrNot.checkIfPowerOfTwoOrNot(n)); + } + } + + @Test + public void testPowerOfTwoOrNotForNotPowersOfTwo() { + final var notPowersOfTwo = new int[] {-16, -8, -6, -5, -4, -3, -2, -1, 0, 3, 5, 6, 7, 9, 10, 11, 33, 63, 65, 1000, 9999}; + for (final var n : notPowersOfTwo) { + assertFalse(PowerOfTwoOrNot.checkIfPowerOfTwoOrNot(n)); + } + } +}