Add PowerOfTwoOrNotTest (#4279)

This commit is contained in:
Piotr Idzik 2023-08-04 14:31:47 +02:00 committed by GitHub
parent ee23b6c2e5
commit c4a9ef1566
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 28 additions and 9 deletions

View File

@ -4,14 +4,8 @@ package com.thealgorithms.maths;
* 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 class PowerOfTwoOrNot {
* @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);
}
}

View File

@ -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));
}
}
}