package parser_test import ( "testing" "github.com/mmakaay/toml/parser" ) func TestEmptyInput(t *testing.T) { runStatesT(t, statesT{"empty string", "", "", ""}) } func TestErrorsIncludeLineAndRowPosition(t *testing.T) { _, err := parser.NewParser("# 12345 abcde\t\n\n\n# 67890\r\n# 12345\xbc").ToArray() t.Logf("Got error: %s", err.Error()) if err.Row != 4 { t.Errorf("Unexpected line number: %d (expected %d)", err.Row, 4) } if err.Column != 6 { t.Errorf("Unexpected line position: %d (expected %d)", err.Column, 6) } } func TestInvalidUtf8Data(t *testing.T) { runStatesTs(t, []statesT{ {"inside comment", "# \xbc", "", "invalid UTF8 character in input (expected comment contents)"}, {"bare key 1", "\xbc", "", "invalid UTF8 character in input (expected end of file)"}, {"bare key 2", "key\xbc", "[key]", "invalid UTF8 character in input (expected a value assignment)"}, {"start of value", "key=\xbc", "[key]=", "invalid UTF8 character in input (expected a value)"}, {"basic string value", "a=\"\xbc\"", "[a]=", "invalid UTF8 character in input (expected string contents)"}, }) } func TestWhiteSpaceAndNewlines(t *testing.T) { runStatesTs(t, []statesT{ {"space", " ", "", ""}, {"tab", "\t", "", ""}, {"newline", "\n", "", ""}, {"carriage return", "\r", "", ""}, {"all whitespace and newlines", " \t \t \r\r\n\n \n \t", "", ""}, }) }