All checks were successful
ci / Build (push) Successful in 3m7s
- New UCL method for setting up item annotations - New UCL package for running commands asynchronously Reviewed-on: #4 Co-authored-by: Leon Mika <lmika@lmika.org> Co-committed-by: Leon Mika <lmika@lmika.org>
102 lines
2.7 KiB
Go
102 lines
2.7 KiB
Go
package cmdpacks
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
"lmika.dev/cmd/dynamo-browse/internal/dynamo-browse/models"
|
|
)
|
|
|
|
func TestAttrPathProxy_Index(t *testing.T) {
|
|
tests := []struct {
|
|
descr string
|
|
attrPath models.AttrPathNode
|
|
index int
|
|
want string
|
|
wantNil bool
|
|
}{
|
|
{
|
|
descr: "return leaf 1",
|
|
attrPath: models.AttrPathNode{Key: "leaf"},
|
|
index: -1,
|
|
want: "leaf",
|
|
},
|
|
{
|
|
descr: "return leaf 2",
|
|
attrPath: models.AttrPathNode{Key: "leaf", Parent: &models.AttrPathNode{Key: "parent"}},
|
|
index: -1,
|
|
want: "leaf",
|
|
},
|
|
{
|
|
descr: "return parent 1",
|
|
attrPath: models.AttrPathNode{Key: "leaf", Parent: &models.AttrPathNode{Key: "parent"}},
|
|
index: -2,
|
|
want: "parent",
|
|
},
|
|
{
|
|
descr: "return parent 1",
|
|
attrPath: models.AttrPathNode{Key: "leaf", Parent: &models.AttrPathNode{Key: "parent", Parent: &models.AttrPathNode{Key: "grandparent"}}},
|
|
index: -2,
|
|
want: "parent",
|
|
},
|
|
{
|
|
descr: "return parent 3",
|
|
attrPath: models.AttrPathNode{Key: "leaf", Parent: &models.AttrPathNode{Key: "parent", Parent: &models.AttrPathNode{Key: "grandparent"}}},
|
|
index: -3,
|
|
want: "grandparent",
|
|
},
|
|
{
|
|
descr: "return root 1",
|
|
attrPath: models.AttrPathNode{Key: "leaf", Parent: &models.AttrPathNode{Key: "parent", Parent: &models.AttrPathNode{Key: "grandparent"}}},
|
|
index: 0,
|
|
want: "grandparent",
|
|
},
|
|
{
|
|
descr: "return root 2",
|
|
attrPath: models.AttrPathNode{Key: "leaf", Parent: &models.AttrPathNode{Key: "parent"}},
|
|
index: 0,
|
|
want: "parent",
|
|
},
|
|
{
|
|
descr: "return root 3",
|
|
attrPath: models.AttrPathNode{Key: "leaf"},
|
|
index: 0,
|
|
want: "leaf",
|
|
},
|
|
{
|
|
descr: "return first child 1",
|
|
attrPath: models.AttrPathNode{Key: "leaf", Parent: &models.AttrPathNode{Key: "parent", Parent: &models.AttrPathNode{Key: "grandparent"}}},
|
|
index: 1,
|
|
want: "parent",
|
|
},
|
|
{
|
|
descr: "return first child 2",
|
|
attrPath: models.AttrPathNode{Key: "leaf", Parent: &models.AttrPathNode{Key: "parent"}},
|
|
index: 1,
|
|
want: "leaf",
|
|
},
|
|
{
|
|
descr: "return nil 1",
|
|
attrPath: models.AttrPathNode{Key: "leaf", Parent: &models.AttrPathNode{Key: "parent", Parent: &models.AttrPathNode{Key: "grandparent"}}},
|
|
index: -5,
|
|
wantNil: true,
|
|
},
|
|
{
|
|
descr: "return nil 2",
|
|
attrPath: models.AttrPathNode{Key: "leaf", Parent: &models.AttrPathNode{Key: "parent"}},
|
|
index: 56,
|
|
wantNil: true,
|
|
},
|
|
}
|
|
for _, tt := range tests {
|
|
t.Run(tt.descr, func(t *testing.T) {
|
|
proxy := attrPathProxy{&tt.attrPath}
|
|
if tt.wantNil {
|
|
assert.Nil(t, proxy.Index(tt.index))
|
|
} else {
|
|
assert.Equal(t, tt.want, proxy.Index(tt.index).String())
|
|
}
|
|
})
|
|
}
|
|
}
|