Skip to content

Commit 2a73ffb

Browse files
committed
Add tests
1 parent 49e72cd commit 2a73ffb

File tree

1 file changed

+54
-0
lines changed

1 file changed

+54
-0
lines changed

arrow-cast/src/cast/decimal.rs

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -922,4 +922,58 @@ mod tests {
922922
);
923923
Ok(())
924924
}
925+
926+
#[test]
927+
fn test_rescale_decimal_upscale_within_precision() {
928+
let result = rescale_decimal::<Decimal128Type, Decimal128Type>(
929+
12_345_i128, // 123.45 with scale 2
930+
5,
931+
2,
932+
8,
933+
5,
934+
);
935+
assert_eq!(result, Some(12_345_000_i128));
936+
}
937+
938+
#[test]
939+
fn test_rescale_decimal_downscale_rounds_half_away_from_zero() {
940+
let positive = rescale_decimal::<Decimal128Type, Decimal128Type>(
941+
1_050_i128, // 1.050 with scale 3
942+
5, 3, 5, 1,
943+
);
944+
assert_eq!(positive, Some(11_i128)); // 1.1 with scale 1
945+
946+
let negative = rescale_decimal::<Decimal128Type, Decimal128Type>(
947+
-1_050_i128, // -1.050 with scale 3
948+
5,
949+
3,
950+
5,
951+
1,
952+
);
953+
assert_eq!(negative, Some(-11_i128)); // -1.1 with scale 1
954+
}
955+
956+
#[test]
957+
fn test_rescale_decimal_downscale_large_delta_returns_zero() {
958+
let result = rescale_decimal::<Decimal32Type, Decimal32Type>(12_345_i32, 9, 9, 9, 4);
959+
assert_eq!(result, Some(0_i32));
960+
}
961+
962+
#[test]
963+
fn test_rescale_decimal_upscale_overflow_returns_none() {
964+
let result = rescale_decimal::<Decimal32Type, Decimal32Type>(9_999_i32, 4, 0, 5, 2);
965+
assert_eq!(result, None);
966+
}
967+
968+
#[test]
969+
fn test_rescale_decimal_invalid_input_precision_scale_returns_none() {
970+
let result = rescale_decimal::<Decimal128Type, Decimal128Type>(123_i128, 39, 39, 38, 38);
971+
assert_eq!(result, None);
972+
}
973+
974+
#[test]
975+
fn test_rescale_decimal_invalid_output_precision_scale_returns_none() {
976+
let result = rescale_decimal::<Decimal128Type, Decimal128Type>(123_i128, 38, 38, 39, 39);
977+
assert_eq!(result, None);
978+
}
925979
}

0 commit comments

Comments
 (0)