1
1
package com .thealgorithms .bitmanipulation ;
2
2
3
3
import static org .junit .jupiter .api .Assertions .assertEquals ;
4
+ import static org .junit .jupiter .api .Assertions .assertThrows ;
4
5
5
6
import org .junit .jupiter .api .Test ;
6
7
@@ -12,7 +13,6 @@ public class TwosComplementTest {
12
13
13
14
@ Test
14
15
public void testTwosComplementAllZeroes () {
15
- // Test with a binary number consisting entirely of zeroes
16
16
assertEquals ("10000" , TwosComplement .twosComplement ("0000" ));
17
17
assertEquals ("1000" , TwosComplement .twosComplement ("000" ));
18
18
assertEquals ("100" , TwosComplement .twosComplement ("00" ));
@@ -21,7 +21,6 @@ public void testTwosComplementAllZeroes() {
21
21
22
22
@ Test
23
23
public void testTwosComplementAllOnes () {
24
- // Test with a binary number consisting entirely of ones
25
24
assertEquals ("00001" , TwosComplement .twosComplement ("11111" ));
26
25
assertEquals ("0001" , TwosComplement .twosComplement ("1111" ));
27
26
assertEquals ("001" , TwosComplement .twosComplement ("111" ));
@@ -30,25 +29,36 @@ public void testTwosComplementAllOnes() {
30
29
31
30
@ Test
32
31
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
38
36
}
39
37
40
38
@ Test
41
39
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
45
42
}
46
43
47
44
@ Test
48
45
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 ("" ));
53
63
}
54
64
}
0 commit comments