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); }