use crate::error::Result;
use crate::provider::policy::Sensitivity;
pub trait ContentClassifier: Send + Sync {
fn classify(&self, content: &str) -> Result<Option<Sensitivity>>;
}
#[cfg(test)]
mod tests {
use super::*;
struct Fixed(Option<Sensitivity>);
impl ContentClassifier for Fixed {
fn classify(&self, _content: &str) -> Result<Option<Sensitivity>> {
Ok(self.0)
}
}
#[test]
fn classifier_returns_verdict_or_none() {
let upgrader = Fixed(Some(Sensitivity::Confidential));
assert_eq!(
upgrader.classify("ambiguous merger notes").unwrap(),
Some(Sensitivity::Confidential)
);
let defer = Fixed(None);
assert_eq!(defer.classify("anything").unwrap(), None);
}
#[test]
fn classifier_is_send_sync() {
fn assert_send_sync<T: Send + Sync>() {}
assert_send_sync::<Fixed>();
}
}