Files
xtcl/src/tests.rs
nichkara 20330f746f
All checks were successful
Run the tests for a working verification of xtcl. / build (ubuntu-20.04) (push) Successful in 41s
Implement rule to remove comments
2025-09-03 09:43:52 +02:00

82 lines
2.3 KiB
Rust

#[cfg(test)]
use crate::tcl::{commands, comments, words};
#[test]
fn test_commands_working() {
let testcase_1: &str = "cmd_a;cmd_b;cmd_c";
let testcase_2: &str = "cmd_a\ncmd_b\ncmd_c";
let verify: Vec<String> = vec![
String::from("cmd_a"),
String::from("cmd_b"),
String::from("cmd_c"),
];
assert_eq!(commands(testcase_1), verify);
assert_eq!(commands(testcase_2), verify);
}
#[test]
fn test_commands_quotes() {
let testcase_1: &str = "cmd_a\n\"cmd_b\"\ncmd_c";
let verify_1: Vec<String> = vec![
String::from("cmd_a"),
String::from("\"cmd_b\""),
String::from("cmd_c"),
];
let testcase_2: &str = "cmd_a;\"cmd_b;cmd_c\"";
let verify_2: Vec<String> = vec![String::from("cmd_a"), String::from("\"cmd_b;cmd_c\"")];
let testcase_3: &str = "cmd_a;\"cmd_b\ncmd_c\"";
let verify_3: Vec<String> = vec![String::from("cmd_a"), String::from("\"cmd_b\ncmd_c\"")];
let case_1 = commands(testcase_1);
let case_2 = commands(testcase_2);
let case_3 = commands(testcase_3);
assert_eq!(case_1, verify_1);
assert_eq!(case_2, verify_2);
assert_eq!(case_3, verify_3);
}
#[test]
fn test_words_simple() {
let testcase: &str = "routine argument 1234 0x123 abcd";
let verify: Vec<String> = vec![
String::from("routine"),
String::from("argument"),
String::from("1234"),
String::from("0x123"),
String::from("abcd"),
];
let case: Vec<String> = words(testcase);
assert_eq!(case, verify);
}
#[test]
fn test_words_quoted() {
let testcase: &str = "routine \"argument with spaces\" 1234 0x543";
let verify: Vec<String> = vec![
String::from("routine"),
String::from("\"argument with spaces\""),
String::from("1234"),
String::from("0x543"),
];
let case: Vec<String> = words(testcase);
assert_eq!(case, verify);
}
#[test]
fn test_remove_comments() {
let testcase_1: &str = "test#noreplacement";
let testcase_2: &str = ";#replace_this\n";
let verify_1: &str = "test#noreplacement";
let verify_2: &str = ";";
let case_1: String = comments(testcase_1);
let case_2: String = comments(testcase_2);
assert_eq!(verify_1, case_1.as_str());
assert_eq!(verify_2, case_2.as_str());
}