All checks were successful
Run the tests for a working verification of xtcl. / build (ubuntu-20.04) (push) Successful in 41s
82 lines
2.3 KiB
Rust
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());
|
|
}
|