Skip to content

Commit c0a0215

Browse files
Added Ones & Twos Complement test cases
1 parent c12564f commit c0a0215

File tree

2 files changed

+119
-0
lines changed

2 files changed

+119
-0
lines changed
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
package com.thealgorithms.bitmanipulation;
2+
3+
import static org.junit.jupiter.api.Assertions.assertEquals;
4+
import static org.junit.jupiter.api.Assertions.assertThrows;
5+
6+
import org.junit.jupiter.api.Test;
7+
8+
/**
9+
* Test case for Highest Set Bit
10+
*
11+
* @author Abhinay Verma(https://github.com/Monk-AbhinayVerma)
12+
*/
13+
public class OnesComplementTest {
14+
15+
@Test
16+
public void testOnesComplement_AllZeroes() {
17+
18+
// Test cases with all-zero binary strings
19+
assertEquals("1111", OnesComplement.onesComplement("0000"));
20+
assertEquals("111", OnesComplement.onesComplement("000"));
21+
assertEquals("11", OnesComplement.onesComplement("00"));
22+
assertEquals("1", OnesComplement.onesComplement("0"));
23+
}
24+
25+
@Test
26+
public void testOnesComplement_AllOnes() {
27+
// Test cases with all-one binary strings
28+
assertEquals("0000", OnesComplement.onesComplement("1111"));
29+
assertEquals("000", OnesComplement.onesComplement("111"));
30+
assertEquals("00", OnesComplement.onesComplement("11"));
31+
assertEquals("0", OnesComplement.onesComplement("1"));
32+
}
33+
34+
@Test
35+
public void testOnesComplement_MixedBits() {
36+
// Test more mixed binary patterns
37+
assertEquals("1010", OnesComplement.onesComplement("0101"));
38+
assertEquals("0101", OnesComplement.onesComplement("1010"));
39+
assertEquals("1100", OnesComplement.onesComplement("0011"));
40+
assertEquals("0011", OnesComplement.onesComplement("1100"));
41+
assertEquals("1001", OnesComplement.onesComplement("0110"));
42+
}
43+
44+
@Test
45+
public void testOnesComplement_EmptyString() {
46+
// Test empty string scenario
47+
assertEquals("", OnesComplement.onesComplement(""));
48+
}
49+
50+
@Test
51+
public void testOnesComplement_InvalidInput() {
52+
// Test invalid binary strings with additional non-binary characters
53+
assertThrows(IllegalArgumentException.class, () -> OnesComplement.onesComplement("1020"));
54+
assertThrows(IllegalArgumentException.class, () -> OnesComplement.onesComplement("abc"));
55+
assertThrows(IllegalArgumentException.class, () -> OnesComplement.onesComplement("12"));
56+
}
57+
}
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
package com.thealgorithms.bitmanipulation;
2+
3+
import static org.junit.jupiter.api.Assertions.assertEquals;
4+
5+
import org.junit.jupiter.api.Test;
6+
7+
/**
8+
* Test case for Highest Set Bit
9+
*
10+
* @author Abhinay Verma(https://github.com/Monk-AbhinayVerma)
11+
*/
12+
public class TwosComplementTest {
13+
14+
@Test
15+
public void testTwosComplement_AllZeroes() {
16+
// Test with a binary number consisting entirely of zeroes
17+
assertEquals("0000", TwosComplement.twosComplement("0000"));
18+
assertEquals("000", TwosComplement.twosComplement("000"));
19+
assertEquals("00", TwosComplement.twosComplement("00"));
20+
assertEquals("0", TwosComplement.twosComplement("0"));
21+
}
22+
23+
@Test
24+
public void testTwosComplement_AllOnes() {
25+
// Test with a binary number consisting entirely of ones
26+
assertEquals("11111", TwosComplement.twosComplement("11111")); // Extra '1' due to carry
27+
assertEquals("1111", TwosComplement.twosComplement("1111"));
28+
assertEquals("111", TwosComplement.twosComplement("111"));
29+
assertEquals("11", TwosComplement.twosComplement("11"));
30+
}
31+
32+
@Test
33+
public void testTwosComplement_MixedBits() {
34+
// Test with binary numbers with mixed bits
35+
assertEquals("1110", TwosComplement.twosComplement("0001")); // 1's complement: 1110, then add 1: 1111
36+
assertEquals("1000", TwosComplement.twosComplement("0111")); // 1's complement: 1000
37+
assertEquals("11001", TwosComplement.twosComplement("00111")); // 1's complement: 11000, add 1: 11001
38+
assertEquals("011", TwosComplement.twosComplement("101")); // 1's complement: 010, add 1: 011
39+
}
40+
41+
@Test
42+
public void testTwosComplement_SingleBit() {
43+
// Test with single bit
44+
assertEquals("1", TwosComplement.twosComplement("0"));
45+
assertEquals("11", TwosComplement.twosComplement("1")); // 1's complement: 0, add 1: 1, carry generates extra
46+
// '1'
47+
}
48+
49+
@Test
50+
public void testTwosComplement_EmptyString() {
51+
// Test with an empty string
52+
assertEquals("", TwosComplement.twosComplement(""));
53+
}
54+
55+
@Test
56+
public void testTwosComplement_WithLeadingZeroes() {
57+
// Test with leading zeroes in the input
58+
assertEquals("1111", TwosComplement.twosComplement("0001"));
59+
assertEquals("100", TwosComplement.twosComplement("011"));
60+
assertEquals("101", TwosComplement.twosComplement("010"));
61+
}
62+
}

0 commit comments

Comments
 (0)