use std::io;
use qubit_dcl::double_checked::{
DoubleCheckedLockExecutor,
ExecutionResult,
};
use qubit_lock::ArcMutex;
#[test]
fn test_execution_context_peek_get_and_finish() {
let executor = DoubleCheckedLockExecutor::builder()
.on(ArcMutex::new(0))
.when(|| true)
.build();
let context = executor.call(|| Ok::<i32, io::Error>(7));
assert!(context.is_success());
assert!(matches!(context.peek_result(), ExecutionResult::Success(7)));
assert!(matches!(context.get_result(), ExecutionResult::Success(7)));
assert!(executor.execute(|| Ok::<(), io::Error>(())).finish(),);
}