use langchainrust::{GraphEdge, EdgeTarget};
#[test]
fn test_fixed_edge_creation() {
let edge = GraphEdge::fixed("source", "target");
assert_eq!(edge.source(), "source");
assert_eq!(edge.fixed_target(), Some("target"));
}
#[test]
fn test_fixed_edge_from_start() {
let edge = GraphEdge::fixed("__start__", "first_node");
assert_eq!(edge.source(), "__start__");
assert_eq!(edge.fixed_target(), Some("first_node"));
}
#[test]
fn test_fixed_edge_to_end() {
let edge = GraphEdge::fixed("last_node", "__end__");
assert_eq!(edge.source(), "last_node");
assert_eq!(edge.fixed_target(), Some("__end__"));
}
#[test]
fn test_conditional_edge_creation() {
use std::collections::HashMap;
let targets = HashMap::from([
("route_a".to_string(), "node_a".to_string()),
("route_b".to_string(), "node_b".to_string()),
]);
let edge = GraphEdge::conditional("source", "router_name", targets, None);
assert_eq!(edge.source(), "source");
assert!(edge.fixed_target().is_none());
}
#[test]
fn test_conditional_edge_with_default() {
use std::collections::HashMap;
let targets = HashMap::from([
("yes".to_string(), "proceed".to_string()),
]);
let edge = GraphEdge::conditional("decision", "router", targets, Some("fallback".to_string()));
assert_eq!(edge.source(), "decision");
}
#[test]
fn test_edge_target_fixed() {
let target = EdgeTarget::to("node_name");
match target {
EdgeTarget::Fixed(name) => assert_eq!(name, "node_name"),
EdgeTarget::Conditional(_) => panic!("Expected Fixed target"),
}
}
#[test]
fn test_edge_target_conditional() {
let target = EdgeTarget::conditional("router_func");
match target {
EdgeTarget::Fixed(_) => panic!("Expected Conditional target"),
EdgeTarget::Conditional(name) => assert_eq!(name, "router_func"),
}
}