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

Function test_decoder_error

arrow-json/src/reader/mod.rs:2677–2773  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

2675
2676 #[test]
2677 fn test_decoder_error() {
2678 let schema = Arc::new(Schema::new(vec![Field::new_struct(
2679 "a",
2680 vec![Field::new("child", DataType::Int32, false)],
2681 true,
2682 )]));
2683
2684 let mut decoder = ReaderBuilder::new(schema.clone()).build_decoder().unwrap();
2685 let _ = decoder.decode(r#"{"a": { "child":"#.as_bytes()).unwrap();
2686 assert!(decoder.tape_decoder.has_partial_row());
2687 assert_eq!(decoder.tape_decoder.num_buffered_rows(), 1);
2688 let _ = decoder.flush().unwrap_err();
2689 assert!(decoder.tape_decoder.has_partial_row());
2690 assert_eq!(decoder.tape_decoder.num_buffered_rows(), 1);
2691
2692 let parse_err = |s: &str| {
2693 ReaderBuilder::new(schema.clone())
2694 .build(Cursor::new(s.as_bytes()))
2695 .unwrap()
2696 .next()
2697 .unwrap()
2698 .unwrap_err()
2699 .to_string()
2700 };
2701
2702 let err = parse_err(r#"{"a": 123}"#);
2703 assert_eq!(
2704 err,
2705 "Json error: whilst decoding field 'a': expected { got 123"
2706 );
2707
2708 let err = parse_err(r#"{"a": ["bar"]}"#);
2709 assert_eq!(
2710 err,
2711 r#"Json error: whilst decoding field 'a': expected { got ["bar"]"#
2712 );
2713
2714 let err = parse_err(r#"{"a": []}"#);
2715 assert_eq!(
2716 err,
2717 "Json error: whilst decoding field 'a': expected { got []"
2718 );
2719
2720 let err = parse_err(r#"{"a": [{"child": 234}]}"#);
2721 assert_eq!(
2722 err,
2723 r#"Json error: whilst decoding field 'a': expected { got [{"child": 234}]"#
2724 );
2725
2726 let err = parse_err(r#"{"a": [{"child": {"foo": [{"foo": ["bar"]}]}}]}"#);
2727 assert_eq!(
2728 err,
2729 r#"Json error: whilst decoding field 'a': expected { got [{"child": {"foo": [{"foo": ["bar"]}]}}]"#
2730 );
2731
2732 let err = parse_err(r#"{"a": true}"#);
2733 assert_eq!(
2734 err,

Callers

nothing calls this directly

Calls 7

build_decoderMethod · 0.45
cloneMethod · 0.45
decodeMethod · 0.45
as_bytesMethod · 0.45
flushMethod · 0.45
nextMethod · 0.45
buildMethod · 0.45

Tested by

no test coverage detected