11package com .thealgorithms .bitmanipulation ;
22
33import static org .junit .jupiter .api .Assertions .assertEquals ;
4+ import static org .junit .jupiter .api .Assertions .assertThrows ;
45
56import org .junit .jupiter .api .Test ;
67
@@ -12,7 +13,6 @@ public class TwosComplementTest {
1213
1314 @ Test
1415 public void testTwosComplementAllZeroes () {
15- // Test with a binary number consisting entirely of zeroes
1616 assertEquals ("10000" , TwosComplement .twosComplement ("0000" ));
1717 assertEquals ("1000" , TwosComplement .twosComplement ("000" ));
1818 assertEquals ("100" , TwosComplement .twosComplement ("00" ));
@@ -21,7 +21,6 @@ public void testTwosComplementAllZeroes() {
2121
2222 @ Test
2323 public void testTwosComplementAllOnes () {
24- // Test with a binary number consisting entirely of ones
2524 assertEquals ("00001" , TwosComplement .twosComplement ("11111" ));
2625 assertEquals ("0001" , TwosComplement .twosComplement ("1111" ));
2726 assertEquals ("001" , TwosComplement .twosComplement ("111" ));
@@ -30,25 +29,36 @@ public void testTwosComplementAllOnes() {
3029
3130 @ Test
3231 public void testTwosComplementMixedBits () {
33- // Test with binary numbers with mixed bits
34- assertEquals ("1111" , TwosComplement .twosComplement ("0001" )); // 1's complement: 1110, then add 1: 1111
35- assertEquals ("1001" , TwosComplement .twosComplement ("0111" )); // 1's complement: 1000
36- assertEquals ("11001" , TwosComplement .twosComplement ("00111" )); // 1's complement: 11000, add 1: 11001
37- assertEquals ("011" , TwosComplement .twosComplement ("101" )); // 1's complement: 010, add 1: 011
32+ assertEquals ("1111" , TwosComplement .twosComplement ("0001" )); // 1 -> 1111
33+ assertEquals ("1001" , TwosComplement .twosComplement ("0111" )); // 0111 -> 1001
34+ assertEquals ("11001" , TwosComplement .twosComplement ("00111" )); // 00111 -> 11001
35+ assertEquals ("011" , TwosComplement .twosComplement ("101" )); // 101 -> 011
3836 }
3937
4038 @ Test
4139 public void testTwosComplementSingleBit () {
42- // Test with single bit
43- assertEquals ("10" , TwosComplement .twosComplement ("0" ));
44- assertEquals ("1" , TwosComplement .twosComplement ("1" ));
40+ assertEquals ("10" , TwosComplement .twosComplement ("0" )); // 0 -> 10
41+ assertEquals ("1" , TwosComplement .twosComplement ("1" )); // 1 -> 1
4542 }
4643
4744 @ Test
4845 public void testTwosComplementWithLeadingZeroes () {
49- // Test with leading zeroes in the input
50- assertEquals ("1111" , TwosComplement .twosComplement ("0001" ));
51- assertEquals ("101" , TwosComplement .twosComplement ("011" ));
52- assertEquals ("110" , TwosComplement .twosComplement ("010" ));
46+ assertEquals ("1111" , TwosComplement .twosComplement ("0001" )); // 0001 -> 1111
47+ assertEquals ("101" , TwosComplement .twosComplement ("011" )); // 011 -> 101
48+ assertEquals ("110" , TwosComplement .twosComplement ("010" )); // 010 -> 110
49+ }
50+
51+ @ Test
52+ public void testInvalidBinaryInput () {
53+ // Test for invalid input that contains non-binary characters.
54+ assertThrows (IllegalArgumentException .class , () -> TwosComplement .twosComplement ("102" ));
55+ assertThrows (IllegalArgumentException .class , () -> TwosComplement .twosComplement ("abc" ));
56+ assertThrows (IllegalArgumentException .class , () -> TwosComplement .twosComplement ("10a01" ));
57+ }
58+
59+ @ Test
60+ public void testEmptyInput () {
61+ // Edge case: Empty input should result in an IllegalArgumentException.
62+ assertThrows (IllegalArgumentException .class , () -> TwosComplement .twosComplement ("" ));
5363 }
5464}
0 commit comments