#![cfg(feature = "jit")]
use facet::Facet;
use facet_postcard::from_slice;
use postcard::to_allocvec as postcard_to_vec;
use serde::{Deserialize, Serialize};
#[derive(Debug, PartialEq, Facet, Serialize, Deserialize)]
#[repr(u8)]
#[allow(clippy::enum_variant_names)]
enum CancelReason {
NoError,
ProtocolError,
InternalError,
}
#[derive(Debug, PartialEq, Facet, Serialize, Deserialize)]
#[repr(u8)]
enum ControlPayload {
CancelChannel {
channel_id: u32,
reason: CancelReason,
},
GrantCredits {
channel_id: u32,
bytes: u32,
},
}
#[test]
fn test_control_payload_cancel() {
facet_testhelpers::setup();
let payload = ControlPayload::CancelChannel {
channel_id: 42,
reason: CancelReason::ProtocolError,
};
let bytes = postcard_to_vec(&payload).expect("postcard should encode");
let decoded: ControlPayload = from_slice(&bytes).expect("should deserialize");
assert_eq!(decoded, payload);
}
#[test]
fn test_control_payload_grant() {
facet_testhelpers::setup();
let payload = ControlPayload::GrantCredits {
channel_id: 100,
bytes: 1024,
};
let bytes = postcard_to_vec(&payload).expect("postcard should encode");
let decoded: ControlPayload = from_slice(&bytes).expect("should deserialize");
assert_eq!(decoded, payload);
}