You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
// Split the number into whole and fractional parts
36
+
BigDecimal[] parts = number.abs().divideAndRemainder(BigDecimal.ONE);
37
+
BigDecimalwholePart = parts[0]; // Keep whole part as BigDecimal
38
+
StringfractionalPartStr = parts[1].compareTo(BigDecimal.ZERO) > 0 ? parts[1].toPlainString().substring(2) : ""; // Get fractional part only if it exists
assertEquals("Invalid Input", NumberToWords.convert(null), "Null input should return 'Invalid Input'");
13
+
}
14
+
15
+
@Test
16
+
voidtestZeroInput() {
17
+
assertEquals("Zero", NumberToWords.convert(BigDecimal.ZERO), "Zero input should return 'Zero'");
18
+
}
19
+
20
+
@Test
21
+
voidtestPositiveWholeNumbers() {
22
+
assertEquals("One", NumberToWords.convert(BigDecimal.ONE), "1 should convert to 'One'");
23
+
assertEquals("One Thousand", NumberToWords.convert(newBigDecimal("1000")), "1000 should convert to 'One Thousand'");
24
+
assertEquals("One Million", NumberToWords.convert(newBigDecimal("1000000")), "1000000 should convert to 'One Million'");
25
+
}
26
+
27
+
@Test
28
+
voidtestNegativeWholeNumbers() {
29
+
assertEquals("Negative One", NumberToWords.convert(newBigDecimal("-1")), "-1 should convert to 'Negative One'");
30
+
assertEquals("Negative One Thousand", NumberToWords.convert(newBigDecimal("-1000")), "-1000 should convert to 'Negative One Thousand'");
31
+
}
32
+
33
+
@Test
34
+
voidtestFractionalNumbers() {
35
+
assertEquals("Zero Point One Two Three", NumberToWords.convert(newBigDecimal("0.123")), "0.123 should convert to 'Zero Point One Two Three'");
36
+
assertEquals("Negative Zero Point Four Five Six", NumberToWords.convert(newBigDecimal("-0.456")), "-0.456 should convert to 'Negative Zero Point Four Five Six'");
37
+
}
38
+
39
+
@Test
40
+
voidtestLargeNumbers() {
41
+
assertEquals("Nine Hundred Ninety Nine Million Nine Hundred Ninety Nine Thousand Nine Hundred Ninety Nine", NumberToWords.convert(newBigDecimal("999999999")), "999999999 should convert correctly");
42
+
assertEquals("One Trillion", NumberToWords.convert(newBigDecimal("1000000000000")), "1000000000000 should convert to 'One Trillion'");
43
+
}
44
+
45
+
@Test
46
+
voidtestNegativeLargeNumbers() {
47
+
assertEquals("Negative Nine Trillion Eight Hundred Seventy Six Billion Five Hundred Forty Three Million Two Hundred Ten Thousand Nine Hundred Eighty Seven", NumberToWords.convert(newBigDecimal("-9876543210987")), "-9876543210987 should convert correctly");
48
+
}
49
+
50
+
@Test
51
+
voidtestFloatingPointPrecision() {
52
+
assertEquals("One Million Point Zero Zero One", NumberToWords.convert(newBigDecimal("1000000.001")), "1000000.001 should convert to 'One Million Point Zero Zero One'");
53
+
}
54
+
55
+
@Test
56
+
voidtestEdgeCases() {
57
+
assertEquals("Negative Zero", NumberToWords.convert(newBigDecimal("-0.0")), "-0.0 should convert to 'Negative Zero'");
58
+
assertEquals("Zero Point Zero Zero Zero Zero Zero Zero One", NumberToWords.convert(newBigDecimal("1E-7")), "1E-7 should convert to 'Zero Point Zero Zero Zero Zero Zero Zero One'");
0 commit comments