use std::sync::Arc;
use arrow_array::*;
use arrow_schema::*;
#[test]
fn test_export_csv_timestamps() {
let schema = Schema::new(vec![
Field::new(
"c1",
DataType::Timestamp(
TimeUnit::Millisecond,
Some("Australia/Sydney".to_string()),
),
true,
),
Field::new("c2", DataType::Timestamp(TimeUnit::Millisecond, None), true),
]);
let c1 = TimestampMillisecondArray::from(
vec![Some(1555584887378), Some(1635577147000)],
)
.with_timezone("Australia/Sydney".to_string());
let c2 =
TimestampMillisecondArray::from(vec![Some(1555584887378), Some(1635577147000)]);
let batch =
RecordBatch::try_new(Arc::new(schema), vec![Arc::new(c1), Arc::new(c2)]).unwrap();
let mut sw = Vec::new();
let mut writer = arrow_csv::Writer::new(&mut sw);
let batches = vec![&batch];
for batch in batches {
writer.write(batch).unwrap();
}
drop(writer);
let left = "c1,c2
2019-04-18T20:54:47.378000000+10:00,2019-04-18T10:54:47.378000000
2021-10-30T17:59:07.000000000+11:00,2021-10-30T06:59:07.000000000\n";
let right = String::from_utf8(sw).unwrap();
assert_eq!(left, right);
}