use super::*;
#[test]
fn a_policy_for_a_model_reads_its_cached_ratio_from_the_catalog() {
let image = AutoCache::for_model("gemini-2.5-flash-image");
assert!((image.cached_ratio - 0.25).abs() < 1e-9, "{image:?}");
assert_eq!(
AutoCache {
cached_ratio: AutoCache::default().cached_ratio,
..image
},
AutoCache::default()
);
assert_eq!(AutoCache::for_model("x-rig-unlisted"), AutoCache::default());
}
#[test]
fn a_policy_keeps_the_default_ratio_for_prices_it_cannot_divide() {
let pricing = |input, cache_read| crate::catalog::Pricing {
input,
output: 1.0,
cache_read,
cache_write: None,
};
for unusable in [
pricing(1.0, None),
pricing(1.0, Some(-0.1)),
pricing(0.0, Some(0.0)),
] {
assert_eq!(
AutoCache::priced(Some(&unusable)),
AutoCache::default(),
"{unusable:?}"
);
}
assert_eq!(AutoCache::priced(None), AutoCache::default());
let priced = AutoCache::priced(Some(&pricing(2.0, Some(0.5))));
assert!((priced.cached_ratio - 0.25).abs() < 1e-9, "{priced:?}");
}