use seedelf_core::data_structures::{create_mint_redeemer, create_spend_redeemer};
#[test]
fn mint_redeemer_encodes_label_as_bounded_bytes() {
let cbor = hex::encode(create_mint_redeemer("testing".to_string()).unwrap());
assert_eq!(cbor, "4774657374696e67");
}
#[test]
fn mint_redeemer_empty_label_is_empty_bytestring() {
let cbor = hex::encode(create_mint_redeemer("".to_string()).unwrap());
assert_eq!(cbor, "40");
}
#[test]
fn mint_redeemer_truncates_label_at_15_bytes() {
let label = "abcdefghijklmnopqrst";
let cbor = hex::encode(create_mint_redeemer(label.to_string()).unwrap());
assert_eq!(cbor, "4f6162636465666768696a6b6c6d6e6f");
}
#[test]
fn spend_redeemer_wraps_three_bytestrings_in_constr_121() {
let z = "aa".repeat(32);
let g_r = "bb".repeat(48);
let pkh = "cc".repeat(28);
let cbor = hex::encode(create_spend_redeemer(z, g_r, pkh).unwrap());
assert!(cbor.starts_with("d8799f"));
assert!(cbor.ends_with("ff"));
assert!(cbor.contains(&format!("5820{}", "aa".repeat(32))));
assert!(cbor.contains(&format!("5830{}", "bb".repeat(48))));
assert!(cbor.contains(&format!("581c{}", "cc".repeat(28))));
}
#[test]
fn spend_redeemer_rejects_non_hex_input() {
let bad = "zz".to_string();
assert!(create_spend_redeemer(bad.clone(), "aa".into(), "bb".into()).is_err());
assert!(create_spend_redeemer("aa".into(), bad.clone(), "bb".into()).is_err());
assert!(create_spend_redeemer("aa".into(), "bb".into(), bad).is_err());
}