extern crate ar_row;
extern crate ar_row_derive;
use ar_row::arrow::datatypes::{DataType, Field};
use ar_row::deserialize::{ArRowStruct, CheckableDataType};
use ar_row::FixedSizeBinary;
use ar_row_derive::ArRowDeserialize;
#[test]
fn test_fixedsizebinary() {
#[derive(ArRowDeserialize, Clone, Default, Debug, PartialEq)]
struct Test {
abc: String,
def: FixedSizeBinary<20>,
}
Test::check_datatype(&DataType::Struct(
vec![
Field::new("abc", DataType::Utf8, false),
Field::new("def", DataType::FixedSizeBinary(20), false),
]
.into(),
))
.unwrap();
assert!(Test::check_datatype(&DataType::Struct(
vec![
Field::new("abc", DataType::Utf8, false),
Field::new("def", DataType::FixedSizeBinary(21), false),
]
.into(),
))
.is_err());
assert_eq!(Test::columns(), vec!["abc", "def"]);
}
#[test]
fn test_fixedsizebinary_overflow_i32() {
#[derive(ArRowDeserialize, Clone, Default, Debug, PartialEq)]
struct Test {
abc: String,
def: FixedSizeBinary<{ usize::MAX }>, }
assert!(Test::check_datatype(&DataType::Struct(
vec![
Field::new("abc", DataType::Utf8, false),
Field::new("def", DataType::FixedSizeBinary(21), false),
]
.into(),
))
.is_err());
}