use super::*;
impl<N: Network> FromBytes for Rejected<N> {
fn read_le<R: Read>(mut reader: R) -> IoResult<Self> {
let variant = u8::read_le(&mut reader)?;
match variant {
0 => {
let program_owner = ProgramOwner::read_le(&mut reader)?;
let deployment = Deployment::read_le(&mut reader)?;
Ok(Self::new_deployment(program_owner, deployment))
}
1 => {
let execution = Execution::read_le(&mut reader)?;
Ok(Self::new_execution(execution))
}
2.. => Err(error(format!("Failed to decode rejected transaction variant {variant}"))),
}
}
}
impl<N: Network> ToBytes for Rejected<N> {
fn write_le<W: Write>(&self, mut writer: W) -> IoResult<()> {
match self {
Self::Deployment(program_owner, deployment) => {
0u8.write_le(&mut writer)?;
program_owner.write_le(&mut writer)?;
deployment.write_le(&mut writer)
}
Self::Execution(execution) => {
1u8.write_le(&mut writer)?;
execution.write_le(&mut writer)
}
}
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_bytes() {
for expected in crate::transactions::rejected::test_helpers::sample_rejected_transactions() {
let expected_bytes = expected.to_bytes_le().unwrap();
assert_eq!(expected, Rejected::read_le(&expected_bytes[..]).unwrap());
}
}
}