tipping_rs/
lib.rs

1mod graph;
2mod misc;
3mod parser;
4mod template;
5mod token_filter;
6mod token_record;
7mod tokenizer;
8mod traits;
9pub use misc::compile_into_regex;
10pub use parser::Parser;
11pub use template::{parameter_masks, shared_slices};
12pub use tokenizer::Tokenizer;
13pub use traits::Tokenize;
14
15#[cfg(test)]
16mod tests {
17    use super::*;
18    use std::collections::{HashMap, HashSet};
19
20    #[test]
21    fn trivial_test() {
22        let msgs = [
23            "a x1 x2 b",
24            "a x2 b",
25            "a x3 b",
26            "a x4 b",
27            "c x1 d",
28            "c x2 d",
29            "c x3 d",
30            "c x4 d",
31        ];
32        let (clus, temps, masks) = Parser::default()
33            .compute_templates()
34            .compute_masks()
35            .parse(&msgs);
36        let s1 = clus[..4]
37            .iter()
38            .map(|item| item.unwrap())
39            .collect::<HashSet<_>>();
40        let s2 = clus[4..]
41            .iter()
42            .map(|item| item.unwrap())
43            .collect::<HashSet<_>>();
44        assert_eq!(s1.len(), 1);
45        assert_eq!(s2.len(), 1);
46
47        // let exp_temps = vec![
48
49        // ]
50        let exp_all_temps = ["a <*> b", "a <*> <*> b", "c <*> d"]
51            .into_iter()
52            .map(ToOwned::to_owned)
53            .collect::<HashSet<String>>();
54        let all_temps = temps
55            .into_iter()
56            .flat_map(|t| t.into_iter())
57            .collect::<HashSet<String>>();
58        assert_eq!(all_temps, exp_all_temps);
59
60        let exp_masks = [
61            ("a x1 x2 b", "001101100"),
62            ("a x2 b", "001100"),
63            ("a x3 b", "001100"),
64            ("a x4 b", "001100"),
65            ("c x1 d", "001100"),
66            ("c x2 d", "001100"),
67            ("c x3 d", "001100"),
68            ("c x4 d", "001100"),
69        ]
70        .into_iter()
71        .map(|(k, v)| (k.to_owned(), v.to_owned()))
72        .collect::<HashMap<String, String>>();
73        assert_eq!(masks, exp_masks);
74    }
75}