44 lines
1.2 KiB
Go
44 lines
1.2 KiB
Go
package lexer_test
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/mmakaay/toml/lexer"
|
|
)
|
|
|
|
func TestErrorsIncludeLineAndRowPosition(t *testing.T) {
|
|
_, err := lexer.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 TestEmptyInput(t *testing.T) {
|
|
runStatesT(t, statesT{"empty string", "", "", ""})
|
|
}
|
|
|
|
func TestInvalidUtf8Data(t *testing.T) {
|
|
runStatesTs(t, []statesT{
|
|
{"inside comment", "# \xbc", "", "invalid UTF8 character"},
|
|
{"bare key 1", "\xbc", "", "invalid UTF8 character"},
|
|
{"bare key 2", "key\xbc", "[key]", "invalid UTF8 character"},
|
|
{"assignment", "key \xbc", "[key]", "invalid UTF8 character"},
|
|
{"start of value", "key=\xbc", "[key]=", "invalid UTF8 character"},
|
|
{"basic string value", "a=\"\xbc\"", "[a]=", "invalid UTF8 character"},
|
|
})
|
|
}
|
|
|
|
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", "", ""},
|
|
})
|
|
}
|