From 8798e042a899223ee29bae3acd20253e836fcd94 Mon Sep 17 00:00:00 2001 From: Sukruti Mallesh Date: Mon, 3 Apr 2023 07:42:50 -0700 Subject: [PATCH] Refactor BinaryToDecimal class (#4135) --- .../conversions/BinaryToDecimal.java | 8 ++++---- .../conversions/BinaryToDecimalTest.java | 17 ++++++++++++++++- 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/thealgorithms/conversions/BinaryToDecimal.java b/src/main/java/com/thealgorithms/conversions/BinaryToDecimal.java index de06ca6b3..b0ab817d0 100644 --- a/src/main/java/com/thealgorithms/conversions/BinaryToDecimal.java +++ b/src/main/java/com/thealgorithms/conversions/BinaryToDecimal.java @@ -7,12 +7,12 @@ import java.util.Scanner; */ class BinaryToDecimal { - public static int binaryToDecimal(int binNum) { - int binCopy, d, s = 0, power = 0; + public static long binaryToDecimal(long binNum) { + long binCopy, d, s = 0, power = 0; binCopy = binNum; while (binCopy != 0) { d = binCopy % 10; - s += d * (int) Math.pow(2, power++); + s += d * (long) Math.pow(2, power++); binCopy /= 10; } return s; @@ -26,7 +26,7 @@ class BinaryToDecimal { public static void main(String args[]) { Scanner sc = new Scanner(System.in); System.out.print("Binary number: "); - System.out.println("Decimal equivalent:" + binaryToDecimal(sc.nextInt())); + System.out.println("Decimal equivalent:" + binaryToDecimal(sc.nextLong())); sc.close(); } } diff --git a/src/test/java/com/thealgorithms/conversions/BinaryToDecimalTest.java b/src/test/java/com/thealgorithms/conversions/BinaryToDecimalTest.java index d44c30d19..336aeef3e 100644 --- a/src/test/java/com/thealgorithms/conversions/BinaryToDecimalTest.java +++ b/src/test/java/com/thealgorithms/conversions/BinaryToDecimalTest.java @@ -7,12 +7,27 @@ import static org.junit.jupiter.api.Assertions.assertEquals; public class BinaryToDecimalTest { @Test + // Test converting binary to decimal public void testBinaryToDecimal() { - //zeros at the starting should be removed + // zeros at the starting should be removed assertEquals(0, BinaryToDecimal.binaryToDecimal(0)); assertEquals(1, BinaryToDecimal.binaryToDecimal(1)); assertEquals(5, BinaryToDecimal.binaryToDecimal(101)); assertEquals(63, BinaryToDecimal.binaryToDecimal(111111)); assertEquals(512, BinaryToDecimal.binaryToDecimal(1000000000)); } + + @Test + // Test converting negative binary numbers + public void testNegativeBinaryToDecimal() { + assertEquals(-1, BinaryToDecimal.binaryToDecimal(-1)); + assertEquals(-42, BinaryToDecimal.binaryToDecimal(-101010)); + } + + @Test + // Test converting binary numbers with large values + public void testLargeBinaryToDecimal() { + assertEquals(262144L, BinaryToDecimal.binaryToDecimal(1000000000000000000L)); + assertEquals(524287L, BinaryToDecimal.binaryToDecimal(1111111111111111111L)); + } } \ No newline at end of file