use std::io;
use qubit_executor::{
TaskCompletionPair,
TaskExecutionError,
};
#[test]
fn test_task_completion_start_complete_and_cancel_paths() {
let (handle, completion) = TaskCompletionPair::<usize, io::Error>::new().into_parts();
assert!(completion.start());
assert!(!completion.cancel());
completion.complete(Ok(42));
assert_eq!(
handle.get().expect("completed task should return value"),
42
);
let (handle, completion) = TaskCompletionPair::<usize, io::Error>::new().into_parts();
assert!(completion.cancel());
assert!(!completion.start());
assert!(matches!(handle.get(), Err(TaskExecutionError::Cancelled)));
}