use typed_builder::TypedBuilder;
#[derive(Clone, Copy, Debug, PartialEq, Eq, TypedBuilder)]
#[non_exhaustive]
pub struct LoaderLimits {
#[builder(default = 4 * 1024 * 1024)]
pub max_file_bytes: u32,
#[builder(default = 10_000)]
pub max_blocks_per_file: u32,
#[builder(default = 64)]
pub max_attr_depth: u32,
#[builder(default = 1024)]
pub max_template_parts: u32,
}
impl Default for LoaderLimits {
fn default() -> Self {
Self::builder().build()
}
}
#[cfg(test)]
#[allow(clippy::unwrap_used)]
mod tests {
use super::*;
#[test]
fn test_defaults_match_spec() {
let l = LoaderLimits::default();
assert_eq!(l.max_file_bytes, 4 * 1024 * 1024);
assert_eq!(l.max_blocks_per_file, 10_000);
assert_eq!(l.max_attr_depth, 64);
assert_eq!(l.max_template_parts, 1024);
}
#[test]
fn test_builder_overrides() {
let l = LoaderLimits::builder()
.max_file_bytes(1024_u32)
.max_blocks_per_file(2_u32)
.build();
assert_eq!(l.max_file_bytes, 1024);
assert_eq!(l.max_blocks_per_file, 2);
assert_eq!(l.max_attr_depth, 64);
}
}