diff --git a/src/confid/mod.rs b/src/confid/mod.rs index 63dc290..077c2f5 100644 --- a/src/confid/mod.rs +++ b/src/confid/mod.rs @@ -4,7 +4,7 @@ use thiserror::Error; mod black_box; -#[derive(Error, Debug)] +#[derive(Error, Debug, PartialEq, Eq)] pub enum ConfirmationIdError { #[error("Installation ID is too short.")] TooShort, @@ -47,3 +47,32 @@ pub fn generate(installation_id: &str) -> Result { .to_string()) } } + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn test_generate() { + assert_eq!( + generate("334481558826870862843844566221823392794862457401103810").unwrap(), + "110281-200130-887120-647974-697175-027544-252733" + ); + assert!( + generate("33448155882687086284384456622182339279486245740110381") + .is_err_and(|err| err == ConfirmationIdError::TooShort), + ); + assert!( + generate("3344815588268708628438445662218233927948624574011038100") + .is_err_and(|err| err == ConfirmationIdError::TooLarge), + ); + assert!( + generate("33448155882687086284384456622182339279486245740110381!") + .is_err_and(|err| err == ConfirmationIdError::InvalidCharacter), + ); + assert!( + generate("334481558826870862843844566221823392794862457401103811") + .is_err_and(|err| err == ConfirmationIdError::InvalidCheckDigit), + ); + } +}