Merge pull request #350 from spacebudz/constr_tests

Added tag/constructor conversion tests
This commit is contained in:
Matthias Benkort 2023-02-08 16:54:51 +01:00 committed by GitHub
commit f9892434bf
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 52 additions and 0 deletions

View File

@ -1211,3 +1211,55 @@ fn verify_schnorr(public_key: &[u8], message: &[u8], signature: &[u8]) -> Result
Ok(Value::Con(Constant::Bool(valid.is_ok()).into()).into()) Ok(Value::Con(Constant::Bool(valid.is_ok()).into()).into())
} }
#[cfg(test)]
mod tests {
use super::{convert_constr_to_tag, convert_tag_to_constr};
#[test]
fn compact_tag_range() {
assert_eq!(convert_constr_to_tag(0), Some(121));
assert_eq!(convert_constr_to_tag(1), Some(122));
assert_eq!(convert_constr_to_tag(6), Some(127));
assert_ne!(convert_constr_to_tag(7), Some(128)); // This is not allowed
}
#[test]
fn compact_tag_mid_range() {
assert_eq!(convert_constr_to_tag(7), Some(1280));
assert_eq!(convert_constr_to_tag(8), Some(1281));
assert_eq!(convert_constr_to_tag(100), Some(1373));
assert_eq!(convert_constr_to_tag(127), Some(1400));
assert_ne!(convert_constr_to_tag(128), Some(1401)); // This is not allowed
}
#[test]
fn any_range() {
assert_eq!(convert_constr_to_tag(128), None);
assert_eq!(
convert_constr_to_tag(128).map_or(Some(128), |_| None),
Some(128)
);
assert_eq!(convert_constr_to_tag(123124125125), None);
assert_eq!(convert_constr_to_tag(1).map_or(Some(1), |_| None), None); // This is a compact tag
}
#[test]
fn to_compact_tag() {
assert_eq!(convert_tag_to_constr(121), Some(0));
assert_eq!(convert_tag_to_constr(122), Some(1));
assert_eq!(convert_tag_to_constr(127), Some(6));
assert_eq!(convert_tag_to_constr(128), None); // This can never happen actually. Pallas sorts that out already during deserialization.
}
#[test]
fn to_compact_tag_mid() {
assert_eq!(convert_tag_to_constr(1280), Some(7));
assert_eq!(convert_tag_to_constr(1281), Some(8));
assert_eq!(convert_tag_to_constr(1400), Some(127));
assert_eq!(convert_tag_to_constr(1401), None); // This can never happen actually. Pallas sorts that out already during deserialization.
}
#[test]
fn to_any_tag() {
assert_eq!(convert_tag_to_constr(102), None);
}
}