()
| 980 | |
| 981 | #[test] |
| 982 | fn test_write_csv_using_rfc3339() { |
| 983 | let schema = Schema::new(vec![ |
| 984 | Field::new( |
| 985 | "c1", |
| 986 | DataType::Timestamp(TimeUnit::Millisecond, Some("+00:00".into())), |
| 987 | true, |
| 988 | ), |
| 989 | Field::new("c2", DataType::Timestamp(TimeUnit::Millisecond, None), true), |
| 990 | Field::new("c3", DataType::Date32, false), |
| 991 | Field::new("c4", DataType::Time32(TimeUnit::Second), false), |
| 992 | ]); |
| 993 | |
| 994 | let c1 = TimestampMillisecondArray::from(vec![Some(1555584887378), Some(1635577147000)]) |
| 995 | .with_timezone("+00:00".to_string()); |
| 996 | let c2 = TimestampMillisecondArray::from(vec![Some(1555584887378), Some(1635577147000)]); |
| 997 | let c3 = Date32Array::from(vec![3, 2]); |
| 998 | let c4 = Time32SecondArray::from(vec![1234, 24680]); |
| 999 | |
| 1000 | let batch = RecordBatch::try_new( |
| 1001 | Arc::new(schema), |
| 1002 | vec![Arc::new(c1), Arc::new(c2), Arc::new(c3), Arc::new(c4)], |
| 1003 | ) |
| 1004 | .unwrap(); |
| 1005 | |
| 1006 | let mut file = tempfile::tempfile().unwrap(); |
| 1007 | |
| 1008 | let builder = WriterBuilder::new(); |
| 1009 | let mut writer = builder.build(&mut file); |
| 1010 | let batches = vec![&batch]; |
| 1011 | for batch in batches { |
| 1012 | writer.write(batch).unwrap(); |
| 1013 | } |
| 1014 | drop(writer); |
| 1015 | |
| 1016 | file.rewind().unwrap(); |
| 1017 | let mut buffer: Vec<u8> = vec![]; |
| 1018 | file.read_to_end(&mut buffer).unwrap(); |
| 1019 | |
| 1020 | assert_eq!( |
| 1021 | "c1,c2,c3,c4 |
| 1022 | 2019-04-18T10:54:47.378Z,2019-04-18T10:54:47.378,1970-01-04,00:20:34 |
| 1023 | 2021-10-30T06:59:07Z,2021-10-30T06:59:07,1970-01-03,06:51:20\n", |
| 1024 | String::from_utf8(buffer).unwrap() |
| 1025 | ); |
| 1026 | } |
| 1027 | |
| 1028 | #[test] |
| 1029 | fn test_write_csv_tz_format() { |
nothing calls this directly
no test coverage detected