yyyi_ru/mtgott/tests/parsing_test.rs

49 lines
1.3 KiB
Rust

use std::collections::HashMap;
fn generate_strings(
prefix: &mut String,
target_length: usize,
alphabet: &[char],
f: &mut impl Fn(String),
) {
if prefix.len() == target_length {
f(prefix.clone());
} else {
for &c in alphabet {
prefix.push(c);
generate_strings(prefix, target_length, alphabet, f);
prefix.pop();
}
}
}
#[test]
fn test_parse_file_with_all_combinations() {
let alphabet = [' ', '{', '%', '}', '$', 'a'];
let target_length = 5 ;
generate_strings(&mut String::new(), target_length, &alphabet, &mut |s| {
println!("Parsing {s}");
// parse_one_file_packed(&s);
// parse_one_file_packed((String::from("{% as s e1e %} adasd {%}") + s.as_str()).as_str());
// parse_one_file_packed((String::from("{% as s e1e %} a{[111 . 2332]]dasd {%} {% as s e1e %} adas {{}}d {%} ") + s.as_str()).as_str());
});
}
macro_rules! string_map {
($($key:expr => $val:expr),* $(,)?) => {{
let mut map = HashMap::new();
$( map.insert($key.to_string(), $val); )*
map
}};
}
#[test]
fn resulting_package() {
// assert_eq!(parse_one_file_packed("{@ x @}{@}"),
// Ok(Plemege::Package(string_map! {
// "x" => Plemege::Element(Element{argc: 0, sub_elements: vec![]})
// })))
}