From f33ad33e318c3782c50b6db4018ce9034c55c002 Mon Sep 17 00:00:00 2001 From: Hardik Pawar Date: Mon, 21 Oct 2024 11:34:16 +0530 Subject: [PATCH 1/3] refactor: Enhance docs, add more tests in `EndianConverter` --- .../conversions/EndianConverter.java | 32 ++++++++++++++-- .../conversions/EndianConverterTest.java | 37 +++++++++++++------ 2 files changed, 54 insertions(+), 15 deletions(-) diff --git a/src/main/java/com/thealgorithms/conversions/EndianConverter.java b/src/main/java/com/thealgorithms/conversions/EndianConverter.java index d20d9d6d63b5..0d69098e8255 100644 --- a/src/main/java/com/thealgorithms/conversions/EndianConverter.java +++ b/src/main/java/com/thealgorithms/conversions/EndianConverter.java @@ -1,11 +1,23 @@ package com.thealgorithms.conversions; /** - * Converts between big-endian and little-endian formats. - * Big-endian is the most significant byte first, while little-endian is the least significant byte first. - * Big-endian to little-endian: 0x12345678 -> 0x78563412 + * Utility class for converting integers between big-endian and little-endian formats. + *

+ * Endianness defines how byte sequences represent multi-byte data types: + *

+ *

+ * Example conversion: + *

* - * Little-endian to big-endian: 0x12345678 -> 0x78563412 + *

Note: Both conversions in this utility are equivalent since reversing the bytes is symmetric.

+ * + *

This class only supports 32-bit integers.

* * @author Hardvan */ @@ -13,10 +25,22 @@ public final class EndianConverter { private EndianConverter() { } + /** + * Converts a 32-bit integer from big-endian to little-endian. + * + * @param value the integer in big-endian format + * @return the integer in little-endian format + */ public static int bigToLittleEndian(int value) { return Integer.reverseBytes(value); } + /** + * Converts a 32-bit integer from little-endian to big-endian. + * + * @param value the integer in little-endian format + * @return the integer in big-endian format + */ public static int littleToBigEndian(int value) { return Integer.reverseBytes(value); } diff --git a/src/test/java/com/thealgorithms/conversions/EndianConverterTest.java b/src/test/java/com/thealgorithms/conversions/EndianConverterTest.java index 9598dd163146..cf03c00a95df 100644 --- a/src/test/java/com/thealgorithms/conversions/EndianConverterTest.java +++ b/src/test/java/com/thealgorithms/conversions/EndianConverterTest.java @@ -2,21 +2,36 @@ import static org.junit.jupiter.api.Assertions.assertEquals; -import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.CsvSource; public class EndianConverterTest { - @Test - public void testBigToLittleEndian() { - assertEquals(0x78563412, EndianConverter.bigToLittleEndian(0x12345678)); - assertEquals(0x00000000, EndianConverter.bigToLittleEndian(0x00000000)); - assertEquals(0x00000001, EndianConverter.bigToLittleEndian(0x01000000)); + /** + * Tests conversion from big-endian to little-endian using parameterized inputs. + */ + @ParameterizedTest + @CsvSource({ + "0x12345678, 0x78563412", "0x00000000, 0x00000000", "0x01000000, 0x00000001", + "0xFFFFFFFF, 0xFFFFFFFF", // -1 in two’s complement + "0x7F000000, 0x0000007F" // Positive boundary case + }) + public void + testBigToLittleEndian(int input, int expected) { + assertEquals(expected, EndianConverter.bigToLittleEndian(input)); } - @Test - public void testLittleToBigEndian() { - assertEquals(0x12345678, EndianConverter.littleToBigEndian(0x78563412)); - assertEquals(0x00000000, EndianConverter.littleToBigEndian(0x00000000)); - assertEquals(0x01000000, EndianConverter.littleToBigEndian(0x00000001)); + /** + * Tests conversion from little-endian to big-endian using parameterized inputs. + */ + @ParameterizedTest + @CsvSource({ + "0x78563412, 0x12345678", "0x00000000, 0x00000000", "0x00000001, 0x01000000", + "0xFFFFFFFF, 0xFFFFFFFF", // -1 in two’s complement + "0x0000007F, 0x7F000000" // Positive boundary case + }) + public void + testLittleToBigEndian(int input, int expected) { + assertEquals(expected, EndianConverter.littleToBigEndian(input)); } } From 1dd320e441d9fd10ba593275690b85d70cd959fd Mon Sep 17 00:00:00 2001 From: Hardik Pawar Date: Mon, 21 Oct 2024 11:43:21 +0530 Subject: [PATCH 2/3] Fix --- .../conversions/EndianConverterTest.java | 36 +++++++++---------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/src/test/java/com/thealgorithms/conversions/EndianConverterTest.java b/src/test/java/com/thealgorithms/conversions/EndianConverterTest.java index cf03c00a95df..0330c74ded2a 100644 --- a/src/test/java/com/thealgorithms/conversions/EndianConverterTest.java +++ b/src/test/java/com/thealgorithms/conversions/EndianConverterTest.java @@ -7,31 +7,31 @@ public class EndianConverterTest { - /** - * Tests conversion from big-endian to little-endian using parameterized inputs. - */ @ParameterizedTest @CsvSource({ - "0x12345678, 0x78563412", "0x00000000, 0x00000000", "0x01000000, 0x00000001", - "0xFFFFFFFF, 0xFFFFFFFF", // -1 in two’s complement - "0x7F000000, 0x0000007F" // Positive boundary case + "0x78563412, 0x12345678", + "0x00000000, 0x00000000", + "0x00000001, 0x01000000", + "0xFFFFFFFF, 0xFFFFFFFF", // -1 in two's complement + "0x0000007F, 0x7F000000" // Positive boundary case }) - public void - testBigToLittleEndian(int input, int expected) { - assertEquals(expected, EndianConverter.bigToLittleEndian(input)); + public void testLittleToBigEndian(String inputHex, String expectedHex) { + int input = (int) Long.parseLong(inputHex.substring(2), 16); // Convert hex string to int + int expected = (int) Long.parseLong(expectedHex.substring(2), 16); // Convert hex string to int + assertEquals(expected, EndianConverter.littleToBigEndian(input)); } - /** - * Tests conversion from little-endian to big-endian using parameterized inputs. - */ @ParameterizedTest @CsvSource({ - "0x78563412, 0x12345678", "0x00000000, 0x00000000", "0x00000001, 0x01000000", - "0xFFFFFFFF, 0xFFFFFFFF", // -1 in two’s complement - "0x0000007F, 0x7F000000" // Positive boundary case + "0x12345678, 0x78563412", + "0x00000000, 0x00000000", + "0x01000000, 0x00000001", + "0xFFFFFFFF, 0xFFFFFFFF", // -1 in two's complement + "0x7F000000, 0x0000007F" // Positive boundary case }) - public void - testLittleToBigEndian(int input, int expected) { - assertEquals(expected, EndianConverter.littleToBigEndian(input)); + public void testBigToLittleEndian(String inputHex, String expectedHex) { + int input = (int) Long.parseLong(inputHex.substring(2), 16); // Convert hex string to int + int expected = (int) Long.parseLong(expectedHex.substring(2), 16); // Convert hex string to int + assertEquals(expected, EndianConverter.bigToLittleEndian(input)); } } From 76626a8f8a21cbdb0559778b3fe70c7d4973575b Mon Sep 17 00:00:00 2001 From: Hardik Pawar Date: Mon, 21 Oct 2024 11:45:07 +0530 Subject: [PATCH 3/3] Fix --- .../conversions/EndianConverterTest.java | 30 +++++++++---------- 1 file changed, 14 insertions(+), 16 deletions(-) diff --git a/src/test/java/com/thealgorithms/conversions/EndianConverterTest.java b/src/test/java/com/thealgorithms/conversions/EndianConverterTest.java index 0330c74ded2a..85ffa2190962 100644 --- a/src/test/java/com/thealgorithms/conversions/EndianConverterTest.java +++ b/src/test/java/com/thealgorithms/conversions/EndianConverterTest.java @@ -9,29 +9,27 @@ public class EndianConverterTest { @ParameterizedTest @CsvSource({ - "0x78563412, 0x12345678", - "0x00000000, 0x00000000", - "0x00000001, 0x01000000", - "0xFFFFFFFF, 0xFFFFFFFF", // -1 in two's complement - "0x0000007F, 0x7F000000" // Positive boundary case + "0x78563412, 0x12345678", "0x00000000, 0x00000000", "0x00000001, 0x01000000", + "0xFFFFFFFF, 0xFFFFFFFF", // -1 in two's complement + "0x0000007F, 0x7F000000" // Positive boundary case }) - public void testLittleToBigEndian(String inputHex, String expectedHex) { - int input = (int) Long.parseLong(inputHex.substring(2), 16); // Convert hex string to int - int expected = (int) Long.parseLong(expectedHex.substring(2), 16); // Convert hex string to int + public void + testLittleToBigEndian(String inputHex, String expectedHex) { + int input = (int) Long.parseLong(inputHex.substring(2), 16); // Convert hex string to int + int expected = (int) Long.parseLong(expectedHex.substring(2), 16); // Convert hex string to int assertEquals(expected, EndianConverter.littleToBigEndian(input)); } @ParameterizedTest @CsvSource({ - "0x12345678, 0x78563412", - "0x00000000, 0x00000000", - "0x01000000, 0x00000001", - "0xFFFFFFFF, 0xFFFFFFFF", // -1 in two's complement - "0x7F000000, 0x0000007F" // Positive boundary case + "0x12345678, 0x78563412", "0x00000000, 0x00000000", "0x01000000, 0x00000001", + "0xFFFFFFFF, 0xFFFFFFFF", // -1 in two's complement + "0x7F000000, 0x0000007F" // Positive boundary case }) - public void testBigToLittleEndian(String inputHex, String expectedHex) { - int input = (int) Long.parseLong(inputHex.substring(2), 16); // Convert hex string to int - int expected = (int) Long.parseLong(expectedHex.substring(2), 16); // Convert hex string to int + public void + testBigToLittleEndian(String inputHex, String expectedHex) { + int input = (int) Long.parseLong(inputHex.substring(2), 16); // Convert hex string to int + int expected = (int) Long.parseLong(expectedHex.substring(2), 16); // Convert hex string to int assertEquals(expected, EndianConverter.bigToLittleEndian(input)); } }