use serde_json::Value; macro_rules! bad { ($toml:expr, $msg:expr) => { match basic_toml::from_str::($toml) { Ok(s) => panic!("parsed to: {:#?}", s), Err(e) => assert_eq!(e.to_string(), $msg), } }; } #[test] fn times() { fn multi_bad(s: &str, msg: &str) { bad!(s, msg); bad!(&s.replace('T', " "), msg); bad!(&s.replace('T', "t"), msg); bad!(&s.replace('Z', "z"), msg); } multi_bad( "foo = 1997-09-09T09:09:09Z", "invalid number at line 1 column 7", ); multi_bad( "foo = 1997-09-09T09:09:09+09:09", "invalid number at line 1 column 7", ); multi_bad( "foo = 1997-09-09T09:09:09-09:09", "invalid number at line 1 column 7", ); multi_bad( "foo = 1997-09-09T09:09:09", "invalid number at line 1 column 7", ); multi_bad("foo = 1997-09-09", "invalid number at line 1 column 7"); bad!("foo = 1997-09-09 ", "invalid number at line 1 column 7"); bad!( "foo = 1997-09-09 # comment", "invalid number at line 1 column 7" ); multi_bad("foo = 09:09:09", "invalid number at line 1 column 8"); multi_bad( "foo = 1997-09-09T09:09:09.09Z", "invalid number at line 1 column 7", ); multi_bad( "foo = 1997-09-09T09:09:09.09+09:09", "invalid number at line 1 column 7", ); multi_bad( "foo = 1997-09-09T09:09:09.09-09:09", "invalid number at line 1 column 7", ); multi_bad( "foo = 1997-09-09T09:09:09.09", "invalid number at line 1 column 7", ); multi_bad("foo = 09:09:09.09", "invalid number at line 1 column 8"); } #[test] fn bad_times() { bad!("foo = 199-09-09", "invalid number at line 1 column 7"); bad!("foo = 199709-09", "invalid number at line 1 column 7"); bad!("foo = 1997-9-09", "invalid number at line 1 column 7"); bad!("foo = 1997-09-9", "invalid number at line 1 column 7"); bad!( "foo = 1997-09-0909:09:09", "invalid number at line 1 column 7" ); bad!( "foo = 1997-09-09T09:09:09.", "invalid number at line 1 column 7" ); bad!( "foo = T", "invalid TOML value, did you mean to use a quoted string? at line 1 column 7" ); bad!( "foo = T.", "invalid TOML value, did you mean to use a quoted string? at line 1 column 7" ); bad!( "foo = TZ", "invalid TOML value, did you mean to use a quoted string? at line 1 column 7" ); bad!( "foo = 1997-09-09T09:09:09.09+", "invalid number at line 1 column 7" ); bad!( "foo = 1997-09-09T09:09:09.09+09", "invalid number at line 1 column 7" ); bad!( "foo = 1997-09-09T09:09:09.09+09:9", "invalid number at line 1 column 7" ); bad!( "foo = 1997-09-09T09:09:09.09+0909", "invalid number at line 1 column 7" ); bad!( "foo = 1997-09-09T09:09:09.09-", "invalid number at line 1 column 7" ); bad!( "foo = 1997-09-09T09:09:09.09-09", "invalid number at line 1 column 7" ); bad!( "foo = 1997-09-09T09:09:09.09-09:9", "invalid number at line 1 column 7" ); bad!( "foo = 1997-09-09T09:09:09.09-0909", "invalid number at line 1 column 7" ); bad!( "foo = 1997-00-09T09:09:09.09Z", "invalid number at line 1 column 7" ); bad!( "foo = 1997-09-00T09:09:09.09Z", "invalid number at line 1 column 7" ); bad!( "foo = 1997-09-09T30:09:09.09Z", "invalid number at line 1 column 7" ); bad!( "foo = 1997-09-09T12:69:09.09Z", "invalid number at line 1 column 7" ); bad!( "foo = 1997-09-09T12:09:69.09Z", "invalid number at line 1 column 7" ); }