dtparse/src/tests/fuzzing.rs

63 lines
1.3 KiB
Rust
Raw Normal View History

use chrono::NaiveDate;
use std::collections::HashMap;
2018-06-25 23:08:03 -04:00
use parse;
use ParseError;
use Parser;
2018-06-25 23:08:03 -04:00
#[test]
fn test_fuzz() {
2019-11-13 23:18:37 -05:00
assert_eq!(
parse("\x2D\x38\x31\x39\x34\x38\x34"),
Err(ParseError::ImpossibleTimestamp("Invalid month"))
);
// Garbage in the third delimited field
2019-11-13 23:18:37 -05:00
assert_eq!(
parse("2..\x00\x000d\x00+\x010d\x01\x00\x00\x00+"),
Err(ParseError::UnrecognizedFormat)
);
let default = NaiveDate::from_ymd(2016, 6, 29).and_hms(0, 0, 0);
let p = Parser::default();
let res = p.parse(
"\x0D\x31",
None,
None,
false,
false,
Some(&default),
false,
&HashMap::new(),
);
assert_eq!(res, Err(ParseError::NoDate));
2019-11-13 23:18:37 -05:00
assert_eq!(
parse("\x2D\x2D\x32\x31\x38\x6D"),
Err(ParseError::ImpossibleTimestamp("Invalid minute"))
);
}
2020-05-29 14:23:54 -04:00
#[test]
fn large_int() {
let parse_result = parse("1412409095009.jpg");
assert!(parse_result.is_err());
}
2020-10-04 19:17:44 -04:00
#[test]
fn another_large_int() {
let parse_result = parse("1412409095009");
assert!(parse_result.is_err());
}
#[test]
fn an_even_larger_int() {
let parse_result = parse("1566997680962280");
assert!(parse_result.is_err());
}
#[test]
fn empty_string() {
assert_eq!(parse(""), Err(ParseError::NoDate))
2020-06-11 13:11:52 -04:00
}