use arrow2::array::*;
use arrow2::chunk::Chunk;
use arrow2::datatypes::*;
use arrow2::error::Result;
use arrow2::io::ipc::read;
use arrow2::io::ipc::write::{FileWriter, WriteOptions};
use super::file::write;
#[test]
fn basic() -> Result<()> {
let array = BooleanArray::from([Some(true), Some(false), None, Some(true)]).boxed();
let schema = Schema::from(vec![Field::new("a", array.data_type().clone(), true)]);
let columns = Chunk::try_new(vec![array])?;
let (expected_schema, expected_batches) = (schema.clone(), vec![columns.clone()]);
let result = write(&expected_batches, &schema, None, None)?;
let mut file = std::io::Cursor::new(result);
let metadata = read::read_file_metadata(&mut file)?;
let mut writer = FileWriter::try_from_file(file, metadata, WriteOptions { compression: None })?;
writer.write(&columns, None)?;
writer.finish()?;
let data = writer.into_inner();
let mut reader = std::io::Cursor::new(data.into_inner());
let metadata = read::read_file_metadata(&mut reader)?;
assert_eq!(schema, expected_schema);
let reader = read::FileReader::new(reader, metadata, None, None);
let chunks = reader.collect::<Result<Vec<_>>>()?;
assert_eq!(chunks, vec![columns.clone(), columns]);
Ok(())
}