1pub mod rewrite;
4pub mod prelude {
5 pub use crate::rewrite::*;
7}
8
9#[cfg(test)]
10mod tests {
11 use super::*;
12 use crate::prelude::*;
13 use kotoba_core::{types::*, ir::*};
14 use std::collections::HashMap;
15
16 #[test]
17 fn test_rewrite_engine_creation() {
18 assert!(true);
21 }
22
23 #[test]
24 fn test_rule_matcher_creation() {
25 assert!(true);
28 }
29
30 #[test]
31 fn test_rule_applier_creation() {
32 assert!(true);
35 }
36
37 #[test]
38 fn test_rule_ir_creation() {
39 let rule = RuleIR {
41 name: "test_rule".to_string(),
42 types: std::collections::HashMap::new(),
43 lhs: GraphPattern { nodes: vec![], edges: vec![] },
44 context: GraphPattern { nodes: vec![], edges: vec![] },
45 rhs: GraphPattern { nodes: vec![], edges: vec![] },
46 nacs: vec![],
47 guards: vec![],
48 };
49 assert_eq!(rule.name, "test_rule");
50 assert!(rule.lhs.nodes.is_empty());
51 assert!(rule.rhs.nodes.is_empty());
52 }
53
54 #[test]
55 fn test_strategy_ir_creation() {
56 let strategy = StrategyIR {
58 strategy: StrategyOp::Once {
59 rule: "test_rule".to_string(),
60 },
61 };
62
63 if let StrategyOp::Once { rule } = &strategy.strategy {
64 assert_eq!(rule, "test_rule");
65 } else {
66 panic!("Expected Once strategy");
67 }
68 }
69
70 #[test]
71 fn test_pattern_creation() {
72 let mut pattern = GraphPattern { nodes: vec![], edges: vec![] };
74 assert!(pattern.nodes.is_empty());
75 assert!(pattern.edges.is_empty());
76
77 let element = GraphElement {
79 id: "person1".to_string(),
80 type_: Some("Person".to_string()),
81 props: Some(HashMap::new()),
82 };
83 pattern.nodes.push(element);
84 assert_eq!(pattern.nodes.len(), 1);
85 assert!(pattern.nodes.iter().any(|e| e.id == "person1"));
86 }
87
88 #[test]
89 fn test_patch_creation() {
90 let patch = Patch::empty();
92 assert!(patch.adds.vertices.is_empty() && patch.adds.edges.is_empty());
93 assert!(patch.dels.vertices.is_empty() && patch.dels.edges.is_empty());
94 assert!(patch.updates.props.is_empty() && patch.updates.relinks.is_empty());
95 }
96
97 #[test]
98 fn test_match_creation() {
99 let mut mapping = HashMap::new();
101 mapping.insert("x".to_string(), VertexId::new_v4());
102
103 let match_result = Match { mapping, score: 1.0 };
104 assert_eq!(match_result.mapping.len(), 1);
105 assert!(match_result.mapping.contains_key("x"));
106 }
107
108 #[test]
109 fn test_catalog_creation() {
110 let catalog = Catalog::empty();
112 assert!(catalog.labels.is_empty());
113 assert!(catalog.indexes.is_empty());
114 assert!(catalog.invariants.is_empty());
115 }
116
117 #[test]
118 fn test_rewrite_engine_with_empty_graph() {
119 assert!(true);
122 }
123
124 #[test]
125 fn test_rewrite_engine_with_strategy() {
126 assert!(true);
129 }
130}