use qubit_budget::json::JsonEncodeLimits;
use qubit_budget::json::JsonEncodeLimitsBuilder;
use qubit_budget::json::JsonEncodeSession;
use qubit_budget::json::JsonResource;
#[derive(Clone)]
pub(crate) struct JsonTestLimits {
limits: JsonEncodeLimitsBuilder,
}
impl JsonTestLimits {
pub(crate) fn new() -> Self {
Self {
limits: JsonEncodeLimits::<JsonResource, usize>::builder(),
}
}
pub(crate) fn max_output_bytes(mut self, maximum: usize) -> Self {
self.limits = self.limits.max_output_bytes(maximum);
self
}
pub(crate) fn max_depth(mut self, maximum: usize) -> Self {
self.limits = self.limits.max_depth(maximum);
self
}
pub(crate) fn max_nodes(mut self, maximum: usize) -> Self {
self.limits = self.limits.max_nodes(maximum);
self
}
pub(crate) fn max_sequence_items(mut self, maximum: usize) -> Self {
self.limits = self.limits.max_sequence_items(maximum);
self
}
pub(crate) fn max_map_entries(mut self, maximum: usize) -> Self {
self.limits = self.limits.max_map_entries(maximum);
self
}
pub(crate) fn max_key_bytes(mut self, maximum: usize) -> Self {
self.limits = self.limits.max_key_bytes(maximum);
self
}
pub(crate) fn max_string_bytes(mut self, maximum: usize) -> Self {
self.limits = self.limits.max_string_bytes(maximum);
self
}
pub(crate) fn max_number_bytes(mut self, maximum: usize) -> Self {
self.limits = self.limits.max_number_bytes(maximum);
self
}
pub(crate) fn max_payload_bytes(mut self, maximum: usize) -> Self {
self.limits = self.limits.max_payload_bytes(maximum);
self
}
pub(crate) fn encode_session(&self) -> JsonEncodeSession<'static> {
JsonEncodeSession::from_limits(self.limits.build())
}
}