pub use crate::graph::unified::build::CancellationToken;
impl CancellationToken {
#[inline]
pub fn query_check(&self) -> Result<(), crate::query::error::QueryError> {
if self.is_cancelled() {
Err(crate::query::error::QueryError::Cancelled)
} else {
Ok(())
}
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn query_check_returns_ok_when_not_cancelled() {
let token = CancellationToken::new();
assert!(token.query_check().is_ok());
}
#[test]
fn query_check_returns_query_error_cancelled_when_cancelled() {
let token = CancellationToken::new();
token.cancel();
let err = token.query_check().expect_err("must error after cancel");
assert!(
matches!(err, crate::query::error::QueryError::Cancelled),
"expected QueryError::Cancelled, got: {err:?}"
);
}
#[test]
fn query_check_observes_cancel_through_clone() {
let token = CancellationToken::new();
let clone = token.clone();
clone.cancel();
assert!(token.query_check().is_err());
}
}