gopass/internal/tree/tree_test.go
Dominik Schulz 936f0db2a5
Add more test coverage (#3073)
* [chore] Add more test coverage

Signed-off-by: Dominik Schulz <dominik.schulz@gauner.org>

* Fix lint issues

Signed-off-by: Dominik Schulz <dominik.schulz@gauner.org>

* Fix assert.Len invocation

Signed-off-by: Dominik Schulz <dominik.schulz@gauner.org>

---------

Signed-off-by: Dominik Schulz <dominik.schulz@gauner.org>
2025-03-02 19:49:22 +01:00

82 lines
1.5 KiB
Go

package tree
import (
"testing"
"github.com/stretchr/testify/assert"
)
func TestTree(t *testing.T) {
t.Parallel()
t1 := NewTree()
t2 := NewTree()
assert.True(t, t1.Equals(t2))
_ = t1.Insert(&Node{Name: "foo"})
assert.False(t, t1.Equals(t2))
_ = t2.Insert(&Node{Name: "foo"})
assert.True(t, t1.Equals(t2))
}
func TestTreeInsert(t *testing.T) {
t.Parallel()
tree := NewTree()
node := &Node{Name: "foo"}
insertedNode := tree.Insert(node)
assert.Equal(t, node, insertedNode)
assert.Len(t, tree.Nodes, 1)
assert.Equal(t, "foo", tree.Nodes[0].Name)
}
func TestTreeString(t *testing.T) {
t.Parallel()
tree := NewTree()
assert.Equal(t, "Tree<0 nodes>", tree.String())
tree.Insert(&Node{Name: "foo"})
assert.Equal(t, "Tree<1 nodes>", tree.String())
}
func TestTreeSort(t *testing.T) {
t.Parallel()
tree := NewTree()
tree.Insert(&Node{Name: "foo"})
tree.Insert(&Node{Name: "bar"})
tree.Insert(&Node{Name: "baz"})
tree.Sort()
assert.Equal(t, "bar", tree.Nodes[0].Name)
assert.Equal(t, "baz", tree.Nodes[1].Name)
assert.Equal(t, "foo", tree.Nodes[2].Name)
}
func TestTreeFindPositionFor(t *testing.T) {
t.Parallel()
tree := NewTree()
tree.Insert(&Node{Name: "foo"})
tree.Insert(&Node{Name: "bar"})
pos, node := tree.findPositionFor("foo")
assert.Equal(t, 1, pos)
assert.NotNil(t, node)
assert.Equal(t, "foo", node.Name)
pos, node = tree.findPositionFor("bar")
assert.Equal(t, 0, pos)
assert.NotNil(t, node)
// does not exist
pos, node = tree.findPositionFor("baz")
assert.Equal(t, 1, pos)
assert.Nil(t, node)
}