mirror of https://github.com/databricks/cli.git
77 lines
2.3 KiB
Go
77 lines
2.3 KiB
Go
|
package dyn_test
|
||
|
|
||
|
import (
|
||
|
"testing"
|
||
|
|
||
|
"github.com/databricks/cli/libs/dyn"
|
||
|
"github.com/stretchr/testify/assert"
|
||
|
)
|
||
|
|
||
|
func TestPathAppend(t *testing.T) {
|
||
|
p := dyn.NewPath(dyn.Key("foo"))
|
||
|
|
||
|
// Single arg.
|
||
|
p1 := p.Append(dyn.Key("bar"))
|
||
|
assert.True(t, p1.Equal(dyn.NewPath(dyn.Key("foo"), dyn.Key("bar"))))
|
||
|
|
||
|
// Multiple args.
|
||
|
p2 := p.Append(dyn.Key("bar"), dyn.Index(1))
|
||
|
assert.True(t, p2.Equal(dyn.NewPath(dyn.Key("foo"), dyn.Key("bar"), dyn.Index(1))))
|
||
|
}
|
||
|
|
||
|
func TestPathJoin(t *testing.T) {
|
||
|
p := dyn.NewPath(dyn.Key("foo"))
|
||
|
|
||
|
// Single arg.
|
||
|
p1 := p.Join(dyn.NewPath(dyn.Key("bar")))
|
||
|
assert.True(t, p1.Equal(dyn.NewPath(dyn.Key("foo"), dyn.Key("bar"))))
|
||
|
|
||
|
// Multiple args.
|
||
|
p2 := p.Join(dyn.NewPath(dyn.Key("bar")), dyn.NewPath(dyn.Index(1)))
|
||
|
assert.True(t, p2.Equal(dyn.NewPath(dyn.Key("foo"), dyn.Key("bar"), dyn.Index(1))))
|
||
|
}
|
||
|
|
||
|
func TestPathEqualEmpty(t *testing.T) {
|
||
|
assert.True(t, dyn.EmptyPath.Equal(dyn.EmptyPath))
|
||
|
}
|
||
|
|
||
|
func TestPathEqual(t *testing.T) {
|
||
|
p1 := dyn.NewPath(dyn.Key("foo"), dyn.Index(1))
|
||
|
p2 := dyn.NewPath(dyn.Key("bar"), dyn.Index(2))
|
||
|
assert.False(t, p1.Equal(p2), "expected %q to not equal %q", p1, p2)
|
||
|
|
||
|
p3 := dyn.NewPath(dyn.Key("foo"), dyn.Index(1))
|
||
|
assert.True(t, p1.Equal(p3), "expected %q to equal %q", p1, p3)
|
||
|
|
||
|
p4 := dyn.NewPath(dyn.Key("foo"), dyn.Index(1), dyn.Key("bar"), dyn.Index(2))
|
||
|
assert.False(t, p1.Equal(p4), "expected %q to not equal %q", p1, p4)
|
||
|
}
|
||
|
|
||
|
func TestPathHasPrefixEmpty(t *testing.T) {
|
||
|
empty := dyn.EmptyPath
|
||
|
nonEmpty := dyn.NewPath(dyn.Key("foo"))
|
||
|
assert.True(t, empty.HasPrefix(empty))
|
||
|
assert.True(t, nonEmpty.HasPrefix(empty))
|
||
|
assert.False(t, empty.HasPrefix(nonEmpty))
|
||
|
}
|
||
|
|
||
|
func TestPathHasPrefix(t *testing.T) {
|
||
|
p1 := dyn.NewPath(dyn.Key("foo"), dyn.Index(1))
|
||
|
p2 := dyn.NewPath(dyn.Key("bar"), dyn.Index(2))
|
||
|
assert.False(t, p1.HasPrefix(p2), "expected %q to not have prefix %q", p1, p2)
|
||
|
|
||
|
p3 := dyn.NewPath(dyn.Key("foo"))
|
||
|
assert.True(t, p1.HasPrefix(p3), "expected %q to have prefix %q", p1, p3)
|
||
|
}
|
||
|
|
||
|
func TestPathString(t *testing.T) {
|
||
|
p1 := dyn.NewPath(dyn.Key("foo"), dyn.Index(1))
|
||
|
assert.Equal(t, "foo[1]", p1.String())
|
||
|
|
||
|
p2 := dyn.NewPath(dyn.Key("bar"), dyn.Index(2), dyn.Key("baz"))
|
||
|
assert.Equal(t, "bar[2].baz", p2.String())
|
||
|
|
||
|
p3 := dyn.NewPath(dyn.Key("foo"), dyn.Index(1), dyn.Key("bar"), dyn.Index(2), dyn.Key("baz"))
|
||
|
assert.Equal(t, "foo[1].bar[2].baz", p3.String())
|
||
|
}
|