#![forbid(unsafe_code)]
#![deny(missing_docs)]
#![deny(rustdoc::broken_intra_doc_links)]
pub mod decision;
pub mod degradation;
pub mod error;
pub mod policy;
pub mod receipt;
pub use decision::{CodecDecision, CodecProfile};
pub use degradation::DegradationReceipt;
pub use error::GovernorError;
pub use policy::{AdmissibilityClass, ContentType, GovernancePolicy, GovernanceRequest};
pub use receipt::ExactFallbackReceipt;
pub fn evaluate(
request: GovernanceRequest,
policy: &GovernancePolicy,
) -> Result<CodecDecision, GovernorError> {
policy.evaluate(request)
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn default_policy_selects_raw_for_critical() {
let policy = GovernancePolicy::default();
let request = GovernanceRequest::default();
let result = evaluate(request.clone(), &policy);
assert!(result.is_ok());
let decision = result.unwrap();
assert_eq!(decision.codec, CodecProfile::Raw);
}
#[test]
fn small_text_bypasses_compression() {
let policy = GovernancePolicy::default();
let request = GovernanceRequest {
content_type: ContentType::Text,
size_bytes: 100,
..Default::default()
};
let result = evaluate(request, &policy);
assert!(result.is_ok());
}
}