use ic_core::{module, Error, ErrorKind};
#[test]
fn a_failed_conditional_self_test_enters_the_error_state() {
for _ in 0..3 {
module::conditional_self_test(Ok(())).unwrap();
}
assert!(!module::in_error_state());
module::operational().unwrap();
let failure = Error::new(ErrorKind::SelfTestFailed, "pairwise consistency");
let passed_on = module::conditional_self_test(Err(failure)).unwrap_err();
assert_eq!(passed_on.kind(), ErrorKind::SelfTestFailed);
assert!(module::in_error_state());
assert_eq!(
module::operational().unwrap_err().kind(),
ErrorKind::ModuleErrorState
);
module::conditional_self_test(Ok(())).unwrap();
assert!(module::in_error_state());
}