6e26017b00
The only real change in this commit is that MaxInt is made private. Everything else should be gofmt'ing, docs and cleanup of lint.
71 lines
1.7 KiB
Go
71 lines
1.7 KiB
Go
package toml
|
|
|
|
import (
|
|
"testing"
|
|
)
|
|
|
|
func assertArrayContainsInAnyOrder(t *testing.T, array []interface{}, objects ...interface{}) {
|
|
if len(array) != len(objects) {
|
|
t.Fatalf("array contains %d objects but %d are expected", len(array), len(objects))
|
|
}
|
|
|
|
for _, o := range objects {
|
|
found := false
|
|
for _, a := range array {
|
|
if a == o {
|
|
found = true
|
|
break
|
|
}
|
|
}
|
|
if !found {
|
|
t.Fatal(o, "not found in array", array)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestQueryExample(t *testing.T) {
|
|
config, _ := Load(`
|
|
[[book]]
|
|
title = "The Stand"
|
|
author = "Stephen King"
|
|
[[book]]
|
|
title = "For Whom the Bell Tolls"
|
|
author = "Ernest Hemmingway"
|
|
[[book]]
|
|
title = "Neuromancer"
|
|
author = "William Gibson"
|
|
`)
|
|
|
|
authors, _ := config.Query("$.book.author")
|
|
names := authors.Values()
|
|
if len(names) != 3 {
|
|
t.Fatalf("query should return 3 names but returned %d", len(names))
|
|
}
|
|
assertArrayContainsInAnyOrder(t, names, "Stephen King", "Ernest Hemmingway", "William Gibson")
|
|
}
|
|
|
|
func TestQueryReadmeExample(t *testing.T) {
|
|
config, _ := Load(`
|
|
[postgres]
|
|
user = "pelletier"
|
|
password = "mypassword"
|
|
`)
|
|
results, _ := config.Query("$..[user,password]")
|
|
values := results.Values()
|
|
if len(values) != 2 {
|
|
t.Fatalf("query should return 2 values but returned %d", len(values))
|
|
}
|
|
assertArrayContainsInAnyOrder(t, values, "pelletier", "mypassword")
|
|
}
|
|
|
|
func TestQueryPathNotPresent(t *testing.T) {
|
|
config, _ := Load(`a = "hello"`)
|
|
results, err := config.Query("$.foo.bar")
|
|
if err != nil {
|
|
t.Fatalf("err should be nil. got %s instead", err)
|
|
}
|
|
if len(results.items) != 0 {
|
|
t.Fatalf("no items should be matched. %d matched instead", len(results.items))
|
|
}
|
|
}
|