use std::fmt::Debug;
use crate::{
layouts::{FillUniform, ReaderFrom, WriterTo},
source::Source,
};
pub fn test_reader_writer_interface<T>(mut original: T)
where
T: WriterTo + ReaderFrom + PartialEq + Eq + Debug + Clone + FillUniform,
{
let mut source = Source::new([0u8; 32]);
original.fill_uniform(50, &mut source);
let mut buffer = Vec::new();
original.write_to(&mut buffer).expect("write_to failed");
let mut receiver = original.clone();
receiver.fill_uniform(50, &mut source);
let mut reader: &[u8] = &buffer;
receiver.read_from(&mut reader).expect("read_from failed");
assert_eq!(&original, &receiver, "Deserialized object does not match the original");
}
#[test]
fn scalar_znx_serialize() {
let original: crate::layouts::ScalarZnx<Vec<u8>> = crate::layouts::ScalarZnx::alloc(1024, 3);
test_reader_writer_interface(original);
}
#[test]
fn vec_znx_serialize() {
let original: crate::layouts::VecZnx<Vec<u8>> = crate::layouts::VecZnx::alloc(1024, 3, 4);
test_reader_writer_interface(original);
}
#[test]
fn mat_znx_serialize() {
let original: crate::layouts::MatZnx<Vec<u8>> = crate::layouts::MatZnx::alloc(1024, 3, 2, 2, 4);
test_reader_writer_interface(original);
}