pub const MAX_GRAPH_TRAVERSAL_DEPTH: usize = 64;
use serde::{Deserialize, Serialize};
#[derive(
Debug,
Clone,
PartialEq,
Eq,
Serialize,
Deserialize,
zerompk::ToMessagePack,
zerompk::FromMessagePack,
)]
pub struct GraphTraversalOptions {
pub max_visited: usize,
}
impl Default for GraphTraversalOptions {
fn default() -> Self {
Self {
max_visited: 100_000,
}
}
}
impl GraphTraversalOptions {
pub fn new() -> Self {
Self::default()
}
}
#[cfg(test)]
mod tests {
use super::*;
use sonic_rs;
#[test]
fn default_options_have_expected_values() {
let opts = GraphTraversalOptions::default();
assert_eq!(opts.max_visited, 100_000);
}
#[test]
fn new_returns_defaults() {
let opts = GraphTraversalOptions::new();
assert_eq!(opts, GraphTraversalOptions::default());
}
#[test]
fn serialization_roundtrip() {
let opts = GraphTraversalOptions {
max_visited: 50_000,
};
let json = sonic_rs::to_string(&opts).unwrap();
let deserialized: GraphTraversalOptions = sonic_rs::from_str(&json).unwrap();
assert_eq!(opts, deserialized);
}
}