use arrow::array::{Array, ArrayRef};
use arrow::buffer::{Buffer, ScalarBuffer};
use arrow::record_batch::RecordBatch;
use arrow_convert::field::{ArrowField, FixedSizeBinary};
use arrow_convert::serialize::*;
#[test]
fn test_error_exceed_fixed_size_binary() {
let strs = [b"abc".to_vec()];
let r: arrow::error::Result<ArrayRef> = strs.try_into_arrow_as_type::<FixedSizeBinary<2>>();
assert!(r.is_err())
}
#[test]
fn test_record_batch() {
let strs = [b"abc".to_vec()];
let r: RecordBatch = strs.try_into_arrow_as_type::<FixedSizeBinary<3>>().unwrap();
assert_eq!(r.num_rows(), 1);
assert_eq!(
r.columns()[0].data_type(),
&<FixedSizeBinary<3> as ArrowField>::data_type()
);
let r: RecordBatch = strs.try_into_arrow().unwrap();
assert_eq!(r.num_rows(), 1);
assert_eq!(
r.columns()[0].data_type(),
&<Vec<u8> as ArrowField>::data_type()
);
}
#[test]
fn test_array() {
let strs = [b"abc".to_vec()];
let r: ArrayRef = strs.try_into_arrow_as_type::<FixedSizeBinary<3>>().unwrap();
assert_eq!(r.len(), 1);
assert_eq!(r.data_type(), &<FixedSizeBinary<3> as ArrowField>::data_type());
let r: ArrayRef = strs.try_into_arrow().unwrap();
assert_eq!(r.len(), 1);
assert_eq!(r.data_type(), &<Vec<u8> as ArrowField>::data_type());
}
#[test]
fn test_buffer() {
let b: Vec<Buffer> = vec![(0..10).collect()];
let rb: ArrayRef = b.try_into_arrow().unwrap();
let dat: Vec<ScalarBuffer<u8>> = vec![(0..10).collect()];
let r: ArrayRef = dat.try_into_arrow().unwrap();
assert_eq!(rb.len(), 1);
assert_eq!(r.len(), 1);
assert_eq!(r.data_type(), &<Buffer as ArrowField>::data_type());
assert_eq!(r.data_type(), &<ScalarBuffer<u8> as ArrowField>::data_type());
assert_eq!(r.data_type(), &<Vec<u8> as ArrowField>::data_type());
let dat: Vec<ScalarBuffer<u16>> = vec![(0..10).collect()];
let r: ArrayRef = dat.try_into_arrow().unwrap();
assert_eq!(r.len(), 1);
assert_eq!(r.data_type(), &<ScalarBuffer<u16> as ArrowField>::data_type());
assert_eq!(r.data_type(), &<Vec<u16> as ArrowField>::data_type());
}