MCPcopy Create free account
hub / github.com/apache/arrow-rs / test_decimal_append_error_value

Function test_decimal_append_error_value

arrow-array/src/array/primitive_array.rs:2455–2490  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

2453
2454 #[test]
2455 fn test_decimal_append_error_value() {
2456 let mut decimal_builder = Decimal128Builder::with_capacity(10);
2457 decimal_builder.append_value(123456);
2458 decimal_builder.append_value(12345);
2459 let result = decimal_builder.finish().with_precision_and_scale(5, 3);
2460 assert!(result.is_ok());
2461 let arr = result.unwrap();
2462 assert_eq!("12.345", arr.value_as_string(1));
2463
2464 // Validate it explicitly
2465 let result = arr.validate_decimal_precision(5);
2466 let error = result.unwrap_err();
2467 assert_eq!(
2468 "Invalid argument error: 123.456 is too large to store in a Decimal128 of precision 5. Max is 99.999",
2469 error.to_string()
2470 );
2471
2472 decimal_builder = Decimal128Builder::new();
2473 decimal_builder.append_value(100);
2474 decimal_builder.append_value(99);
2475 decimal_builder.append_value(-100);
2476 decimal_builder.append_value(-99);
2477 let result = decimal_builder.finish().with_precision_and_scale(2, 1);
2478 assert!(result.is_ok());
2479 let arr = result.unwrap();
2480 assert_eq!("9.9", arr.value_as_string(1));
2481 assert_eq!("-9.9", arr.value_as_string(3));
2482
2483 // Validate it explicitly
2484 let result = arr.validate_decimal_precision(2);
2485 let error = result.unwrap_err();
2486 assert_eq!(
2487 "Invalid argument error: 10.0 is too large to store in a Decimal128 of precision 2. Max is 9.9",
2488 error.to_string()
2489 );
2490 }
2491
2492 #[test]
2493 fn test_decimal_from_iter_values() {

Callers

nothing calls this directly

Calls 4

append_valueMethod · 0.45
finishMethod · 0.45

Tested by

no test coverage detected