()
| 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 |
| 801 | 2.179404,2.179404,2.179404,2.179404 |
| 802 | ,,, |
| 803 | 0.290472,0.290472,0.290472,0.290472 |
| 804 | -3.335724,-3.335724,-3.335724,-3.335724 |
| 805 | 2.179404,2.179404,2.179404,2.179404 |
| 806 | ,,, |
| 807 | 0.290472,0.290472,0.290472,0.290472 |
nothing calls this directly
no test coverage detected