use std::io::Cursor;
use kf_protocol::derive::Decode;
use kf_protocol::derive::Encode;
use kf_protocol::Decoder;
use kf_protocol::Encoder;
#[derive(Encode,Decode,Default,Debug)]
struct TestRecord {
value: i8,
#[fluvio_kf(min_version = 1,max_version = 1)]
value2: i8,
#[fluvio_kf(min_version = 1)]
value3: i8
}
#[test]
fn test_encode_version() {
flv_util::init_logger();
let mut record = TestRecord::default();
record.value2 = 10;
record.value3 = 5;
let mut dest = vec![];
record.encode(&mut dest,0).expect("encode");
assert_eq!(dest.len(),1);
assert_eq!(record.write_size(0),1);
let mut dest = vec![];
record.encode(&mut dest,1).expect("encode");
assert_eq!(dest.len(),3);
assert_eq!(record.write_size(1),3);
let mut dest = vec![];
record.encode(&mut dest,2).expect("encode");
assert_eq!(dest.len(),2);
assert_eq!(dest[1],5);
assert_eq!(record.write_size(2),2);
}
#[test]
fn test_decode_version() {
let data = [0x08];
let record = TestRecord::decode_from(&mut Cursor::new(&data),0).expect("decode");
assert_eq!(record.value,8);
assert_eq!(record.value2,0);
let data = [0x08];
assert!(TestRecord::decode_from(&mut Cursor::new(&data),1).is_err(),"version 1 needs 3 bytes");
let data = [0x08,0x01,0x05];
let record = TestRecord::decode_from(&mut Cursor::new(&data),1).expect("decode");
assert_eq!(record.value,8);
assert_eq!(record.value2,1);
assert_eq!(record.value3,5);
let data = [0x08,0x01,0x05];
let record = TestRecord::decode_from(&mut Cursor::new(&data),3).expect("decode");
assert_eq!(record.value,8);
assert_eq!(record.value2,0);
assert_eq!(record.value3,1);
}