in src/util.rs [1051:1127]
fn test_time_macro_short_read() {
// Normal "read" should succeed
let mut finder = TimeMacroFinder::new();
finder.find_time_macros(b"__TIME__");
assert!(finder.found_time());
// So should a partial "read"
let mut finder = TimeMacroFinder::new();
finder.find_time_macros(b"__");
assert!(!finder.found_time());
finder.find_time_macros(b"TIME__");
assert!(finder.found_time());
// So should a partial "read" later down the line
let mut finder = TimeMacroFinder::new();
finder.find_time_macros(b"Something or other larger than the haystack");
finder.find_time_macros(b"__");
assert!(!finder.found_time());
finder.find_time_macros(b"TIME__");
assert!(finder.found_time());
// Even if the last "read" is large
let mut finder = TimeMacroFinder::new();
finder.find_time_macros(b"Something or other larger than the haystack");
finder.find_time_macros(b"__");
assert!(!finder.found_time());
finder.find_time_macros(b"TIME__ something or other larger than the haystack");
assert!(finder.found_time());
// Pathological case
let mut finder = TimeMacroFinder::new();
finder.find_time_macros(b"__");
assert!(!finder.found_time());
finder.find_time_macros(b"TI");
assert!(!finder.found_time());
finder.find_time_macros(b"ME");
assert!(!finder.found_time());
finder.find_time_macros(b"__");
assert!(finder.found_time());
// Odd-numbered pathological case
let mut finder = TimeMacroFinder::new();
finder.find_time_macros(b"This is larger than the haystack __");
assert!(!finder.found_time());
finder.find_time_macros(b"TI");
assert!(!finder.found_time());
finder.find_time_macros(b"ME");
assert!(!finder.found_time());
finder.find_time_macros(b"__");
assert!(finder.found_time());
// Sawtooth length pathological case
let mut finder = TimeMacroFinder::new();
finder.find_time_macros(b"This is larger than the haystack __");
assert!(!finder.found_time());
finder.find_time_macros(b"TI");
assert!(!finder.found_time());
finder.find_time_macros(b"ME__ This is larger than the haystack");
assert!(finder.found_time());
assert!(!finder.found_timestamp());
finder.find_time_macros(b"__");
assert!(!finder.found_timestamp());
finder.find_time_macros(b"TIMESTAMP__ This is larger than the haystack");
assert!(finder.found_timestamp());
// Odd-numbered sawtooth length pathological case
let mut finder = TimeMacroFinder::new();
finder.find_time_macros(b"__");
assert!(!finder.found_time());
finder.find_time_macros(b"TIME__ This is larger than the haystack");
assert!(finder.found_time());
assert!(!finder.found_timestamp());
finder.find_time_macros(b"__");
assert!(!finder.found_timestamp());
finder.find_time_macros(b"TIMESTAMP__ This is larger than the haystack");
assert!(finder.found_timestamp());
}