Skip to content

Commit

Permalink
keep existing test for parse_string_to_decimal_native and add equival…
Browse files Browse the repository at this point in the history
…ency test with parse_decimal.
  • Loading branch information
himadripal committed Feb 27, 2025
1 parent ae88078 commit 7e598c9
Showing 1 changed file with 55 additions and 2 deletions.
57 changes: 55 additions & 2 deletions arrow-cast/src/cast/decimal.rs
Original file line number Diff line number Diff line change
Expand Up @@ -590,24 +590,51 @@ where
#[cfg(test)]
mod tests {
use super::*;
use crate::parse::parse_decimal;

#[test]
fn test_parse_string_to_decimal_native() -> Result<(), ArrowError> {
assert_eq!(
parse_string_to_decimal_native::<Decimal128Type>("0", 0)?,
0_i128
);
assert_eq!(
parse_decimal::<Decimal128Type>("0", 38, 0)?,
parse_string_to_decimal_native::<Decimal128Type>("0", 0)?,
"value is {}",
0_i128
);

assert_eq!(
parse_string_to_decimal_native::<Decimal128Type>("0", 5)?,
0_i128
);
assert_eq!(
parse_decimal::<Decimal128Type>("0", 38, 5)?,
parse_string_to_decimal_native::<Decimal128Type>("0", 5)?,
"value is {}",
0_i128
);

assert_eq!(
parse_string_to_decimal_native::<Decimal128Type>("123", 0)?,
123_i128
);
assert_eq!(
parse_decimal::<Decimal128Type>("123", 38, 0)?,
parse_string_to_decimal_native::<Decimal128Type>("123", 0)?,
"value is {}",
123_i128
);

assert_eq!(
parse_string_to_decimal_native::<Decimal128Type>("123", 5)?,
12300000_i128
);
assert_eq!(
parse_decimal::<Decimal128Type>("123", 38, 5)?,
parse_string_to_decimal_native::<Decimal128Type>("123", 5)?,
"value is {}",
12300000_i128
);

Expand All @@ -616,16 +643,42 @@ mod tests {
123_i128
);
assert_eq!(
parse_decimal::<Decimal128Type>("123.45", 38, 0)?,
parse_string_to_decimal_native::<Decimal128Type>("123.45", 0)?,
"value is {}",
123_i128
);

assert_eq!(
parse_string_to_decimal_native::<Decimal128Type>("123.45", 5)?,
12345000_i128
);
assert_eq!(
parse_decimal::<Decimal128Type>("123.45", 38, 5)?,
parse_string_to_decimal_native::<Decimal128Type>("123.45", 5)?,
"value is {}",
12345000_i128
);

assert_eq!(
parse_string_to_decimal_native::<Decimal128Type>("123.4567891", 0)?,
123_i128
parse_string_to_decimal_native::<Decimal128Type>("123.4567891", 5)?,
12345679_i128
);
assert_eq!(
parse_decimal::<Decimal128Type>("123.4567891", 38, 5)?,
parse_string_to_decimal_native::<Decimal128Type>("123.4567891", 5)?,
"value is {}",
12345679_i128
);

assert_eq!(
parse_string_to_decimal_native::<Decimal128Type>("123.4567891", 5)?,
12345679_i128
);
assert_eq!(
parse_decimal::<Decimal128Type>("123.4567891", 38, 5)?,
parse_string_to_decimal_native::<Decimal128Type>("123.4567891", 5)?,
"value is {}",
12345679_i128
);
Ok(())
Expand Down

0 comments on commit 7e598c9

Please sign in to comment.