49 lines
1.3 KiB
Rust
49 lines
1.3 KiB
Rust
extern crate toml;
|
|
|
|
macro_rules! bad {
|
|
($toml:expr, $msg:expr) => {
|
|
match $toml.parse::<toml::Value>() {
|
|
Ok(s) => panic!("parsed to: {:#?}", s),
|
|
Err(e) => assert_eq!(e.to_string(), $msg),
|
|
}
|
|
};
|
|
}
|
|
|
|
#[test]
|
|
fn bad() {
|
|
bad!("a = 01", "invalid number at line 1 column 6");
|
|
bad!("a = 1__1", "invalid number at line 1 column 5");
|
|
bad!("a = 1_", "invalid number at line 1 column 5");
|
|
bad!("''", "empty table key found at line 1 column 1");
|
|
bad!("a = 9e99999", "invalid number at line 1 column 5");
|
|
|
|
bad!(
|
|
"a = \"\u{7f}\"",
|
|
"invalid character in string: `\\u{7f}` at line 1 column 6"
|
|
);
|
|
bad!(
|
|
"a = '\u{7f}'",
|
|
"invalid character in string: `\\u{7f}` at line 1 column 6"
|
|
);
|
|
|
|
bad!("a = -0x1", "invalid number at line 1 column 5");
|
|
bad!("a = 0x-1", "failed to parse datetime for key `a`");
|
|
|
|
// Dotted keys.
|
|
bad!(
|
|
"a.b.c = 1
|
|
a.b = 2
|
|
",
|
|
"duplicate key: `b` for key `a`"
|
|
);
|
|
bad!(
|
|
"a = 1
|
|
a.b = 2",
|
|
"dotted key attempted to extend non-table type at line 1 column 5"
|
|
);
|
|
bad!(
|
|
"a = {k1 = 1, k1.name = \"joe\"}",
|
|
"dotted key attempted to extend non-table type at line 1 column 11"
|
|
);
|
|
}
|