|
2 | 2 |
|
3 | 3 | import static org.junit.jupiter.api.Assertions.assertEquals;
|
4 | 4 |
|
5 |
| -import org.junit.jupiter.api.Test; |
| 5 | +import java.util.stream.Stream; |
| 6 | +import org.junit.jupiter.params.ParameterizedTest; |
| 7 | +import org.junit.jupiter.params.provider.Arguments; |
| 8 | +import org.junit.jupiter.params.provider.MethodSource; |
6 | 9 |
|
7 | 10 | class ReverseBitsTest {
|
8 | 11 |
|
9 |
| - @Test |
10 |
| - void testReverseBits() { |
11 |
| - assertEquals(0, ReverseBits.reverseBits(0)); |
12 |
| - assertEquals(-1, ReverseBits.reverseBits(-1)); |
13 |
| - assertEquals(964176192, ReverseBits.reverseBits(43261596)); |
| 12 | + @ParameterizedTest |
| 13 | + @MethodSource("provideTestCases") |
| 14 | + void testReverseBits(int input, int expected) { |
| 15 | + assertEquals(expected, ReverseBits.reverseBits(input)); |
| 16 | + } |
| 17 | + |
| 18 | + private static Stream<Arguments> provideTestCases() { |
| 19 | + return Stream.of( |
| 20 | + // Edge case: All bits are 0 |
| 21 | + Arguments.of(0, 0), |
| 22 | + |
| 23 | + // Edge case: All bits are 1 (Two’s complement representation of -1) |
| 24 | + Arguments.of(-1, -1), |
| 25 | + |
| 26 | + // Case with random number 43261596 |
| 27 | + Arguments.of(43261596, 964176192), |
| 28 | + |
| 29 | + // Case with maximum positive value for 32-bit integer |
| 30 | + Arguments.of(Integer.MAX_VALUE, -2), |
| 31 | + |
| 32 | + // Case with minimum value (all bits 1 except the sign bit) |
| 33 | + Arguments.of(Integer.MIN_VALUE, 1), |
| 34 | + |
| 35 | + // Case with a single bit set (2^0 = 1) |
| 36 | + Arguments.of(1, Integer.MIN_VALUE), |
| 37 | + |
| 38 | + // Case with alternating bits: 0b101010...10 (in binary) |
| 39 | + Arguments.of(0xAAAAAAAA, 0x55555555)); |
14 | 40 | }
|
15 | 41 | }
|
0 commit comments