mirror of https://github.com/ledisdb/ledisdb.git
57 lines
1.4 KiB
Go
57 lines
1.4 KiB
Go
|
package toml
|
||
|
|
||
|
import (
|
||
|
"fmt"
|
||
|
"testing"
|
||
|
)
|
||
|
|
||
|
func testResult(t *testing.T, key string, expected []string) {
|
||
|
parsed, err := parseKey(key)
|
||
|
t.Logf("key=%s expected=%s parsed=%s", key, expected, parsed)
|
||
|
if err != nil {
|
||
|
t.Fatal("Unexpected error:", err)
|
||
|
}
|
||
|
if len(expected) != len(parsed) {
|
||
|
t.Fatal("Expected length", len(expected), "but", len(parsed), "parsed")
|
||
|
}
|
||
|
for index, expectedKey := range expected {
|
||
|
if expectedKey != parsed[index] {
|
||
|
t.Fatal("Expected", expectedKey, "at index", index, "but found", parsed[index])
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func testError(t *testing.T, key string, expectedError string) {
|
||
|
_, err := parseKey(key)
|
||
|
if fmt.Sprintf("%s", err) != expectedError {
|
||
|
t.Fatalf("Expected error \"%s\", but got \"%s\".", expectedError, err)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func TestBareKeyBasic(t *testing.T) {
|
||
|
testResult(t, "test", []string{"test"})
|
||
|
}
|
||
|
|
||
|
func TestBareKeyDotted(t *testing.T) {
|
||
|
testResult(t, "this.is.a.key", []string{"this", "is", "a", "key"})
|
||
|
}
|
||
|
|
||
|
func TestDottedKeyBasic(t *testing.T) {
|
||
|
testResult(t, "\"a.dotted.key\"", []string{"a.dotted.key"})
|
||
|
}
|
||
|
|
||
|
func TestBaseKeyPound(t *testing.T) {
|
||
|
testError(t, "hello#world", "invalid bare character: #")
|
||
|
}
|
||
|
|
||
|
func TestQuotedKeys(t *testing.T) {
|
||
|
testResult(t, `hello."foo".bar`, []string{"hello", "foo", "bar"})
|
||
|
testResult(t, `"hello!"`, []string{"hello!"})
|
||
|
}
|
||
|
|
||
|
func TestEmptyKey(t *testing.T) {
|
||
|
testError(t, "", "empty key")
|
||
|
testError(t, " ", "empty key")
|
||
|
testResult(t, `""`, []string{""})
|
||
|
}
|