mirror of
https://lab.forgefriends.org/friendlyforgeformat/gof3.git
synced 2025-10-06 08:02:46 +02:00
107 lines
3.3 KiB
Go
107 lines
3.3 KiB
Go
// Copyright Earl Warren <contact@earl-warren.org>
|
|
// Copyright Loïc Dachary <loic@dachary.org>
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
package generic
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func TestNewPathFromString(t *testing.T) {
|
|
for _, pathString := range []string{"", ".", "A/.."} {
|
|
path := NewPathFromString(pathString)
|
|
assert.False(t, path.Empty(), path.String())
|
|
assert.Len(t, path, 1, path.String())
|
|
assert.EqualValues(t, ".", string(path.First().GetID()))
|
|
}
|
|
for _, pathString := range []string{"/", "/.", "/..", "/A/.."} {
|
|
path := NewPathFromString(pathString)
|
|
assert.False(t, path.Empty(), path.String())
|
|
assert.Len(t, path, 1, path.String())
|
|
assert.EqualValues(t, KindRoot, path.First().GetKind(), path.String())
|
|
assert.EqualValues(t, "", string(path.First().GetID()))
|
|
}
|
|
for _, pathString := range []string{"A", "A/.", "B/../A"} {
|
|
path := NewPathFromString(pathString)
|
|
assert.False(t, path.Empty(), path.String())
|
|
assert.Len(t, path, 1, path.String())
|
|
assert.NotEqualValues(t, KindRoot, path.First().GetKind(), path.String())
|
|
assert.EqualValues(t, "A", string(path.First().GetID()))
|
|
}
|
|
{
|
|
pathString := "/A"
|
|
path := NewPathFromString(pathString)
|
|
assert.False(t, path.Empty(), path.String())
|
|
assert.Len(t, path, 2, path.String())
|
|
assert.EqualValues(t, KindRoot, path.First().GetKind(), path.String())
|
|
notRoot := path.RemoveFirst()
|
|
assert.NotEqualValues(t, KindRoot, notRoot.First().GetKind(), path.String())
|
|
assert.EqualValues(t, pathString, path.String(), path.String())
|
|
}
|
|
{
|
|
pathString := "A/B"
|
|
path := NewPathFromString(pathString)
|
|
assert.False(t, path.Empty(), path.String())
|
|
assert.Len(t, path, 2, path.String())
|
|
assert.NotEqualValues(t, KindRoot, path.First().GetKind(), path.String())
|
|
notRoot := path.RemoveFirst()
|
|
assert.NotEqualValues(t, KindRoot, notRoot.First().GetKind(), path.String())
|
|
assert.EqualValues(t, pathString, path.String(), path.String())
|
|
}
|
|
{
|
|
pathString := "../B"
|
|
path := NewPathFromString(pathString)
|
|
assert.False(t, path.Empty(), path.String())
|
|
assert.Len(t, path, 2, path.String())
|
|
assert.NotEqualValues(t, KindRoot, path.First().GetKind(), path.String())
|
|
notRoot := path.RemoveFirst()
|
|
assert.NotEqualValues(t, KindRoot, notRoot.First().GetKind(), path.String())
|
|
assert.EqualValues(t, pathString, path.String(), path.String())
|
|
}
|
|
}
|
|
|
|
func TestNodePath(t *testing.T) {
|
|
{
|
|
path := NilNode.GetCurrentPath()
|
|
assert.True(t, path.Empty())
|
|
pathString := path.PathString()
|
|
assert.True(t, pathString.Empty())
|
|
assert.EqualValues(t, "", pathString.Join())
|
|
}
|
|
|
|
root := NewNode()
|
|
root.SetIsNil(false)
|
|
root.SetKind(KindRoot)
|
|
|
|
level1 := NewNode()
|
|
level1.SetIsNil(false)
|
|
level1.SetParent(root)
|
|
id1 := NodeID("1")
|
|
level1.SetID(id1)
|
|
|
|
level2 := NewNode()
|
|
level2.SetIsNil(false)
|
|
level2.SetParent(level1)
|
|
id2 := NodeID("2")
|
|
level2.SetID(id2)
|
|
|
|
{
|
|
path := level2.GetCurrentPath()
|
|
assert.False(t, path.Empty())
|
|
if assert.EqualValues(t, 3, path.Length()) {
|
|
assert.True(t, root == path.First(), path.First().GetID())
|
|
rest := path.RemoveFirst()
|
|
assert.True(t, level1 == rest.First(), path.First().GetID())
|
|
rest = rest.RemoveFirst()
|
|
assert.True(t, level2 == rest.First(), path.First().GetID())
|
|
}
|
|
pathString := path.PathString()
|
|
assert.False(t, pathString.Empty())
|
|
assert.EqualValues(t, 3, len(pathString))
|
|
assert.EqualValues(t, "/1/2", pathString.Join())
|
|
}
|
|
}
|