summaryrefslogtreecommitdiff
path: root/test_util/src
diff options
context:
space:
mode:
Diffstat (limited to 'test_util/src')
-rw-r--r--test_util/src/lib.rs64
1 files changed, 64 insertions, 0 deletions
diff --git a/test_util/src/lib.rs b/test_util/src/lib.rs
index 14ec723f2..da7c8703e 100644
--- a/test_util/src/lib.rs
+++ b/test_util/src/lib.rs
@@ -1559,6 +1559,70 @@ mod tests {
}
#[test]
+ fn test_pattern_match() {
+ // foo, bar, baz, qux, quux, quuz, corge, grault, garply, waldo, fred, plugh, xyzzy
+
+ let wildcard = "[BAR]";
+ assert!(pattern_match("foo[BAR]baz", "foobarbaz", wildcard));
+ assert!(!pattern_match("foo[BAR]baz", "foobazbar", wildcard));
+
+ let multiline_pattern = "[BAR]
+foo:
+[BAR]baz[BAR]";
+
+ fn multi_line_builder(input: &str, leading_text: Option<&str>) -> String {
+ // If there is leading text add a newline so it's on it's own line
+ let head = match leading_text {
+ Some(v) => format!("{}\n", v),
+ None => "".to_string(),
+ };
+ format!(
+ "{}foo:
+quuz {} corge
+grault",
+ head, input
+ )
+ }
+
+ // Validate multi-line string builder
+ assert_eq!(
+ "QUUX=qux
+foo:
+quuz BAZ corge
+grault",
+ multi_line_builder("BAZ", Some("QUUX=qux"))
+ );
+
+ // Correct input & leading line
+ assert!(pattern_match(
+ multiline_pattern,
+ &multi_line_builder("baz", Some("QUX=quux")),
+ wildcard
+ ));
+
+ // Correct input & no leading line
+ assert!(pattern_match(
+ multiline_pattern,
+ &multi_line_builder("baz", None),
+ wildcard
+ ));
+
+ // Incorrect input & leading line
+ assert!(!pattern_match(
+ multiline_pattern,
+ &multi_line_builder("garply", Some("QUX=quux")),
+ wildcard
+ ));
+
+ // Incorrect input & no leading line
+ assert!(!pattern_match(
+ multiline_pattern,
+ &multi_line_builder("garply", None),
+ wildcard
+ ));
+ }
+
+ #[test]
fn max_mem_parse() {
const TEXT: &str = include_str!("./testdata/time.out");
let size = parse_max_mem(TEXT);