mirror of
https://github.com/TheAlgorithms/Java.git
synced 2025-12-19 07:00:35 +08:00
86 lines
2.7 KiB
Java
86 lines
2.7 KiB
Java
package com.thealgorithms.bitmanipulation;
|
|
|
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
|
import static org.junit.jupiter.api.Assertions.assertThrows;
|
|
|
|
import org.junit.jupiter.api.Test;
|
|
|
|
public class BcdConversionTest {
|
|
|
|
@Test
|
|
public void testBcdToDecimal() {
|
|
int decimal = BcdConversion.bcdToDecimal(0x1234);
|
|
assertEquals(1234, decimal); // BCD 0x1234 should convert to decimal 1234
|
|
}
|
|
|
|
@Test
|
|
public void testDecimalToBcd() {
|
|
int bcd = BcdConversion.decimalToBcd(1234);
|
|
assertEquals(0x1234, bcd); // Decimal 1234 should convert to BCD 0x1234
|
|
}
|
|
|
|
@Test
|
|
public void testBcdToDecimalZero() {
|
|
int decimal = BcdConversion.bcdToDecimal(0x0);
|
|
assertEquals(0, decimal); // BCD 0x0 should convert to decimal 0
|
|
}
|
|
|
|
@Test
|
|
public void testDecimalToBcdZero() {
|
|
int bcd = BcdConversion.decimalToBcd(0);
|
|
assertEquals(0x0, bcd); // Decimal 0 should convert to BCD 0x0
|
|
}
|
|
|
|
@Test
|
|
public void testBcdToDecimalSingleDigit() {
|
|
int decimal = BcdConversion.bcdToDecimal(0x7);
|
|
assertEquals(7, decimal); // BCD 0x7 should convert to decimal 7
|
|
}
|
|
|
|
@Test
|
|
public void testDecimalToBcdSingleDigit() {
|
|
int bcd = BcdConversion.decimalToBcd(7);
|
|
assertEquals(0x7, bcd); // Decimal 7 should convert to BCD 0x7
|
|
}
|
|
|
|
@Test
|
|
public void testBcdToDecimalMaxValue() {
|
|
int decimal = BcdConversion.bcdToDecimal(0x9999);
|
|
assertEquals(9999, decimal); // BCD 0x9999 should convert to decimal 9999
|
|
}
|
|
|
|
@Test
|
|
public void testDecimalToBcdMaxValue() {
|
|
int bcd = BcdConversion.decimalToBcd(9999);
|
|
assertEquals(0x9999, bcd); // Decimal 9999 should convert to BCD 0x9999
|
|
}
|
|
|
|
@Test
|
|
public void testBcdToDecimalInvalidHighDigit() {
|
|
// Testing invalid BCD input where one of the digits is > 9
|
|
assertThrows(IllegalArgumentException.class, () -> {
|
|
BcdConversion.bcdToDecimal(0x123A); // Invalid BCD, 'A' is not a valid digit
|
|
});
|
|
}
|
|
|
|
@Test
|
|
public void testDecimalToBcdInvalidValue() {
|
|
// Testing conversion for numbers greater than 9999, which cannot be represented in BCD
|
|
assertThrows(IllegalArgumentException.class, () -> {
|
|
BcdConversion.decimalToBcd(10000); // 10000 is too large for BCD representation
|
|
});
|
|
}
|
|
|
|
@Test
|
|
public void testBcdToDecimalLeadingZeroes() {
|
|
int decimal = BcdConversion.bcdToDecimal(0x0234);
|
|
assertEquals(234, decimal); // BCD 0x0234 should convert to decimal 234, ignoring leading zero
|
|
}
|
|
|
|
@Test
|
|
public void testDecimalToBcdLeadingZeroes() {
|
|
int bcd = BcdConversion.decimalToBcd(234);
|
|
assertEquals(0x0234, bcd); // Decimal 234 should convert to BCD 0x0234
|
|
}
|
|
}
|