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

Function test_write_csv_decimal

arrow-csv/src/writer.rs:750–810  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

748
749 #[test]
750 fn test_write_csv_decimal() {
751 let schema = Schema::new(vec![
752 Field::new("c1", DataType::Decimal32(9, 6), true),
753 Field::new("c2", DataType::Decimal64(17, 6), true),
754 Field::new("c3", DataType::Decimal128(38, 6), true),
755 Field::new("c4", DataType::Decimal256(76, 6), true),
756 ]);
757
758 let mut c1_builder = Decimal32Builder::new().with_data_type(DataType::Decimal32(9, 6));
759 c1_builder.extend(vec![Some(-3335724), Some(2179404), None, Some(290472)]);
760 let c1 = c1_builder.finish();
761
762 let mut c2_builder = Decimal64Builder::new().with_data_type(DataType::Decimal64(17, 6));
763 c2_builder.extend(vec![Some(-3335724), Some(2179404), None, Some(290472)]);
764 let c2 = c2_builder.finish();
765
766 let mut c3_builder = Decimal128Builder::new().with_data_type(DataType::Decimal128(38, 6));
767 c3_builder.extend(vec![Some(-3335724), Some(2179404), None, Some(290472)]);
768 let c3 = c3_builder.finish();
769
770 let mut c4_builder = Decimal256Builder::new().with_data_type(DataType::Decimal256(76, 6));
771 c4_builder.extend(vec![
772 Some(i256::from_i128(-3335724)),
773 Some(i256::from_i128(2179404)),
774 None,
775 Some(i256::from_i128(290472)),
776 ]);
777 let c4 = c4_builder.finish();
778
779 let batch = RecordBatch::try_new(
780 Arc::new(schema),
781 vec![Arc::new(c1), Arc::new(c2), Arc::new(c3), Arc::new(c4)],
782 )
783 .unwrap();
784
785 let mut file = tempfile::tempfile().unwrap();
786
787 let mut writer = Writer::new(&mut file);
788 let batches = vec![&batch, &batch];
789 for batch in batches {
790 writer.write(batch).unwrap();
791 }
792 drop(writer);
793
794 // check that file was written successfully
795 file.rewind().unwrap();
796 let mut buffer: Vec<u8> = vec![];
797 file.read_to_end(&mut buffer).unwrap();
798
799 let expected = r#"c1,c2,c3,c4
800-3.335724,-3.335724,-3.335724,-3.335724
8012.179404,2.179404,2.179404,2.179404
802,,,
8030.290472,0.290472,0.290472,0.290472
804-3.335724,-3.335724,-3.335724,-3.335724
8052.179404,2.179404,2.179404,2.179404
806,,,
8070.290472,0.290472,0.290472,0.290472

Callers

nothing calls this directly

Calls 5

try_newFunction · 0.85
with_data_typeMethod · 0.45
extendMethod · 0.45
finishMethod · 0.45
writeMethod · 0.45

Tested by

no test coverage detected