diff options
Diffstat (limited to 'vendor/github.com/pelletier/go-toml/query_test.go')
-rw-r--r-- | vendor/github.com/pelletier/go-toml/query_test.go | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/vendor/github.com/pelletier/go-toml/query_test.go b/vendor/github.com/pelletier/go-toml/query_test.go new file mode 100644 index 000000000..0d9f3832b --- /dev/null +++ b/vendor/github.com/pelletier/go-toml/query_test.go @@ -0,0 +1,70 @@ +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)) + } +} |