extern crate milf; macro_rules! bad { ($milf:expr, $msg:expr) => { match $milf.parse::() { Ok(s) => panic!("parsed to: {:#?}", s), Err(e) => assert_eq!(e.to_string(), $msg), } }; } macro_rules! test( ($name:ident, $s:expr, $msg:expr) => ( #[test] fn $name() { bad!($s, $msg); } ) ); test!( datetime_malformed_no_leads, include_str!("invalid/datetime-malformed-no-leads.milf"), "failed to parse datetime for key `no-leads` at line 1 column 12" ); test!( datetime_malformed_no_secs, include_str!("invalid/datetime-malformed-no-secs.milf"), "expected a colon, found a newline at line 1 column 28" ); test!( datetime_malformed_no_t, include_str!("invalid/datetime-malformed-no-t.milf"), "failed to parse datetime for key `no-t` at line 1 column 8" ); test!( datetime_malformed_with_milli, include_str!("invalid/datetime-malformed-with-milli.milf"), "failed to parse datetime for key `with-milli` at line 1 column 14" ); test!( duplicate_key_table, include_str!("invalid/duplicate-key-table.milf"), "duplicate key: `type` for key `fruit` at line 4 column 1" ); test!( duplicate_keys, include_str!("invalid/duplicate-keys.milf"), "duplicate key: `dupe` at line 1 column 1" ); test!( duplicate_table, include_str!("invalid/duplicate-table.milf"), "redefinition of table `dependencies` for key `dependencies` at line 7 column 1" ); test!( duplicate_tables, include_str!("invalid/duplicate-tables.milf"), "redefinition of table `a` for key `a` at line 2 column 1" ); test!( empty_implicit_table, include_str!("invalid/empty-implicit-table.milf"), "expected a table key, found a period at line 1 column 10" ); test!( empty_table, include_str!("invalid/empty-table.milf"), "expected a table key, found a right bracket at line 1 column 2" ); test!( float_no_leading_zero, include_str!("invalid/float-no-leading-zero.milf"), "expected a value, found a period at line 1 column 10" ); test!( float_no_suffix, include_str!("invalid/float-no-suffix.milf"), "invalid number at line 1 column 5" ); test!( float_no_trailing_digits, include_str!("invalid/float-no-trailing-digits.milf"), "invalid number at line 1 column 12" ); test!( key_after_array, include_str!("invalid/key-after-array.milf"), "expected newline, found an identifier at line 1 column 14" ); test!( key_after_table, include_str!("invalid/key-after-table.milf"), "expected newline, found an identifier at line 1 column 11" ); test!( key_empty, include_str!("invalid/key-empty.milf"), "expected a table key, found an equals at line 1 column 2" ); test!( key_hash, include_str!("invalid/key-hash.milf"), "expected an equals, found a comment at line 1 column 2" ); test!( key_newline, include_str!("invalid/key-newline.milf"), "expected an equals, found a newline at line 1 column 2" ); test!( key_open_bracket, include_str!("invalid/key-open-bracket.milf"), "expected a right bracket, found an equals at line 1 column 6" ); test!( key_single_open_bracket, include_str!("invalid/key-single-open-bracket.milf"), "expected a table key, found eof at line 1 column 2" ); test!( key_space, include_str!("invalid/key-space.milf"), "expected an equals, found an identifier at line 1 column 3" ); test!( key_start_bracket, include_str!("invalid/key-start-bracket.milf"), "expected a right bracket, found an equals at line 2 column 6" ); test!( key_two_equals, include_str!("invalid/key-two-equals.milf"), "expected a value, found an equals at line 1 column 6" ); test!( string_bad_byte_escape, include_str!("invalid/string-bad-byte-escape.milf"), "invalid escape character in string: `x` at line 1 column 13" ); test!( string_bad_escape, include_str!("invalid/string-bad-escape.milf"), "invalid escape character in string: `a` at line 1 column 42" ); test!( string_bad_line_ending_escape, include_str!("invalid/string-bad-line-ending-escape.milf"), "invalid escape character in string: ` ` at line 2 column 79" ); test!( string_byte_escapes, include_str!("invalid/string-byte-escapes.milf"), "invalid escape character in string: `x` at line 1 column 12" ); test!( string_no_close, include_str!("invalid/string-no-close.milf"), "newline in string found at line 1 column 42" ); test!( table_array_implicit, include_str!("invalid/table-array-implicit.milf"), "table redefined as array for key `albums` at line 13 column 1" ); test!( table_array_malformed_bracket, include_str!("invalid/table-array-malformed-bracket.milf"), "expected a right bracket, found a newline at line 1 column 10" ); test!( table_array_malformed_empty, include_str!("invalid/table-array-malformed-empty.milf"), "expected a table key, found a right bracket at line 1 column 3" ); test!( table_empty, include_str!("invalid/table-empty.milf"), "expected a table key, found a right bracket at line 1 column 2" ); test!( table_nested_brackets_close, include_str!("invalid/table-nested-brackets-close.milf"), "expected newline, found an identifier at line 1 column 4" ); test!( table_nested_brackets_open, include_str!("invalid/table-nested-brackets-open.milf"), "expected a right bracket, found a left bracket at line 1 column 3" ); test!( table_whitespace, include_str!("invalid/table-whitespace.milf"), "expected a right bracket, found an identifier at line 1 column 10" ); test!( table_with_pound, include_str!("invalid/table-with-pound.milf"), "expected a right bracket, found a comment at line 1 column 5" ); test!( text_after_array_entries, include_str!("invalid/text-after-array-entries.milf"), "invalid MILF value, did you mean to use a quoted string? at line 2 column 46" ); test!( text_after_integer, include_str!("invalid/text-after-integer.milf"), "expected newline, found an identifier at line 1 column 13" ); test!( text_after_string, include_str!("invalid/text-after-string.milf"), "expected newline, found an identifier at line 1 column 41" ); test!( text_after_table, include_str!("invalid/text-after-table.milf"), "expected newline, found an identifier at line 1 column 9" ); test!( text_before_array_separator, include_str!("invalid/text-before-array-separator.milf"), "expected a right bracket, found an identifier at line 2 column 46" ); test!( text_in_array, include_str!("invalid/text-in-array.milf"), "invalid MILF value, did you mean to use a quoted string? at line 3 column 3" );