Files
Java/src/test/java/com/thealgorithms/bitmanipulation/CountSetBitsTest.java
GOPISETTI NAVADEEP 93811614b8 feat: add Count Set Bits algorithm (#7072)
* feat: add Count Set Bits algorithm (issue #6931)

* fix: correct CountSetBits algorithm logic

* style: apply clang-format to CountSetBits files

* fix: correct test expectations for CountSetBits

* fix: correct test expectations for CountSetBits
2025-11-16 12:54:43 +01:00

57 lines
1.4 KiB
Java

package com.thealgorithms.bitmanipulation;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertThrows;
import org.junit.jupiter.api.Test;
class CountSetBitsTest {
@Test
void testCountSetBitsZero() {
assertEquals(0, CountSetBits.countSetBits(0));
}
@Test
void testCountSetBitsOne() {
assertEquals(1, CountSetBits.countSetBits(1));
}
@Test
void testCountSetBitsSmallNumber() {
assertEquals(4, CountSetBits.countSetBits(3)); // 1(1) + 10(1) + 11(2) = 4
}
@Test
void testCountSetBitsFive() {
assertEquals(7, CountSetBits.countSetBits(5)); // 1 + 1 + 2 + 1 + 2 = 7
}
@Test
void testCountSetBitsTen() {
assertEquals(17, CountSetBits.countSetBits(10));
}
@Test
void testCountSetBitsLargeNumber() {
assertEquals(42, CountSetBits.countSetBits(20)); // Changed from 93 to 42
}
@Test
void testCountSetBitsPowerOfTwo() {
assertEquals(13, CountSetBits.countSetBits(8)); // Changed from 9 to 13
}
@Test
void testCountSetBitsNegativeInput() {
assertThrows(IllegalArgumentException.class, () -> CountSetBits.countSetBits(-1));
}
@Test
void testNaiveApproachMatchesOptimized() {
for (int i = 0; i <= 100; i++) {
assertEquals(CountSetBits.countSetBitsNaive(i), CountSetBits.countSetBits(i), "Mismatch at n = " + i);
}
}
}