use clvm_traits::{FromClvm, ToClvm};
use clvmr::NodePtr;
#[derive(Debug, Default, Clone, Copy, PartialEq, Eq, ToClvm, FromClvm)]
#[cfg_attr(feature = "arbitrary", derive(arbitrary::Arbitrary))]
#[clvm(untagged, list)]
pub enum Memos<T = NodePtr> {
Some(T),
#[default]
None,
}
#[cfg(test)]
mod tests {
use anyhow::Result;
use clvmr::Allocator;
use rstest::rstest;
use super::*;
#[rstest]
fn test_memos_roundtrip(
#[values(Memos::None, Memos::Some(0), Memos::Some(100))] expected: Memos<u64>,
) -> Result<()> {
let mut allocator = Allocator::new();
let ptr = expected.to_clvm(&mut allocator)?;
let memos = Memos::<u64>::from_clvm(&allocator, ptr)?;
assert_eq!(memos, expected);
Ok(())
}
}