|  | // Testing support for go-toml | 
|  |  | 
|  | package toml | 
|  |  | 
|  | import ( | 
|  | "testing" | 
|  | ) | 
|  |  | 
|  | func TestTomlHas(t *testing.T) { | 
|  | tree, _ := Load(` | 
|  | [test] | 
|  | key = "value" | 
|  | `) | 
|  |  | 
|  | if !tree.Has("test.key") { | 
|  | t.Errorf("Has - expected test.key to exists") | 
|  | } | 
|  |  | 
|  | if tree.Has("") { | 
|  | t.Errorf("Should return false if the key is not provided") | 
|  | } | 
|  | } | 
|  |  | 
|  | func TestTomlGet(t *testing.T) { | 
|  | tree, _ := Load(` | 
|  | [test] | 
|  | key = "value" | 
|  | `) | 
|  |  | 
|  | if tree.Get("") != tree { | 
|  | t.Errorf("Get should return the tree itself when given an empty path") | 
|  | } | 
|  |  | 
|  | if tree.Get("test.key") != "value" { | 
|  | t.Errorf("Get should return the value") | 
|  | } | 
|  | if tree.Get(`\`) != nil { | 
|  | t.Errorf("should return nil when the key is malformed") | 
|  | } | 
|  | } | 
|  |  | 
|  | func TestTomlGetDefault(t *testing.T) { | 
|  | tree, _ := Load(` | 
|  | [test] | 
|  | key = "value" | 
|  | `) | 
|  |  | 
|  | if tree.GetDefault("", "hello") != tree { | 
|  | t.Error("GetDefault should return the tree itself when given an empty path") | 
|  | } | 
|  |  | 
|  | if tree.GetDefault("test.key", "hello") != "value" { | 
|  | t.Error("Get should return the value") | 
|  | } | 
|  |  | 
|  | if tree.GetDefault("whatever", "hello") != "hello" { | 
|  | t.Error("GetDefault should return the default value if the key does not exist") | 
|  | } | 
|  | } | 
|  |  | 
|  | func TestTomlHasPath(t *testing.T) { | 
|  | tree, _ := Load(` | 
|  | [test] | 
|  | key = "value" | 
|  | `) | 
|  |  | 
|  | if !tree.HasPath([]string{"test", "key"}) { | 
|  | t.Errorf("HasPath - expected test.key to exists") | 
|  | } | 
|  | } | 
|  |  | 
|  | func TestTomlGetPath(t *testing.T) { | 
|  | node := newTomlTree() | 
|  | //TODO: set other node data | 
|  |  | 
|  | for idx, item := range []struct { | 
|  | Path     []string | 
|  | Expected *TomlTree | 
|  | }{ | 
|  | { // empty path test | 
|  | []string{}, | 
|  | node, | 
|  | }, | 
|  | } { | 
|  | result := node.GetPath(item.Path) | 
|  | if result != item.Expected { | 
|  | t.Errorf("GetPath[%d] %v - expected %v, got %v instead.", idx, item.Path, item.Expected, result) | 
|  | } | 
|  | } | 
|  |  | 
|  | tree, _ := Load("[foo.bar]\na=1\nb=2\n[baz.foo]\na=3\nb=4\n[gorf.foo]\na=5\nb=6") | 
|  | if tree.GetPath([]string{"whatever"}) != nil { | 
|  | t.Error("GetPath should return nil when the key does not exist") | 
|  | } | 
|  | } | 
|  |  | 
|  | func TestTomlQuery(t *testing.T) { | 
|  | tree, err := Load("[foo.bar]\na=1\nb=2\n[baz.foo]\na=3\nb=4\n[gorf.foo]\na=5\nb=6") | 
|  | if err != nil { | 
|  | t.Error(err) | 
|  | return | 
|  | } | 
|  | result, err := tree.Query("$.foo.bar") | 
|  | if err != nil { | 
|  | t.Error(err) | 
|  | return | 
|  | } | 
|  | values := result.Values() | 
|  | if len(values) != 1 { | 
|  | t.Errorf("Expected resultset of 1, got %d instead: %v", len(values), values) | 
|  | } | 
|  |  | 
|  | if tt, ok := values[0].(*TomlTree); !ok { | 
|  | t.Errorf("Expected type of TomlTree: %T", values[0]) | 
|  | } else if tt.Get("a") != int64(1) { | 
|  | t.Errorf("Expected 'a' with a value 1: %v", tt.Get("a")) | 
|  | } else if tt.Get("b") != int64(2) { | 
|  | t.Errorf("Expected 'b' with a value 2: %v", tt.Get("b")) | 
|  | } | 
|  | } | 
|  |  | 
|  | func TestTomlFromMap(t *testing.T) { | 
|  | simpleMap := map[string]interface{}{"hello": 42} | 
|  | tree := TreeFromMap(simpleMap) | 
|  | if tree.Get("hello") != 42 { | 
|  | t.Fatal("hello should be 42, not", tree.Get("hello")) | 
|  | } | 
|  | } |