#![allow(clippy::unwrap_used)]
use iqdb_types::IqdbError;
#[test]
fn invalid_config_carries_a_static_reason() {
let err = IqdbError::InvalidConfig {
reason: "dim must be greater than zero",
};
let reason = match err {
IqdbError::InvalidConfig { reason } => reason,
other => panic!("expected InvalidConfig, got {other:?}"),
};
assert_eq!(reason, "dim must be greater than zero");
}
#[test]
fn display_includes_the_reason() {
let err = IqdbError::InvalidConfig {
reason: "dim must be set before building",
};
let rendered = err.to_string();
assert!(
rendered.contains("invalid configuration"),
"missing variant prefix: {rendered}",
);
assert!(
rendered.contains("dim must be set before building"),
"missing reason: {rendered}",
);
}
#[test]
fn distinct_reasons_render_distinctly() {
let a = IqdbError::InvalidConfig {
reason: "dim must be greater than zero",
};
let b = IqdbError::InvalidConfig {
reason: "output buffer length mismatch",
};
assert_ne!(a.to_string(), b.to_string());
}
#[test]
fn error_remains_copy() {
fn assert_copy<T: Copy>() {}
assert_copy::<IqdbError>();
let err = IqdbError::InvalidConfig { reason: "x" };
let copied = err;
let _ = err; let _ = copied;
let limit_err = IqdbError::ResourceLimitExceeded {
kind: "id_bytes",
max: 1,
found: 2,
};
let limit_copy = limit_err;
let _ = limit_err;
let _ = limit_copy;
}