test tree foreach
parent
63caf9ed03
commit
a7c8a0d481
|
|
@ -14,11 +14,11 @@ func NewID(s string) ID {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (id ID) Push(child string) ID {
|
func (id ID) Push(child string) ID {
|
||||||
return ID(path.Join(id.String(), child)).withClean()
|
return NewID(path.Join(id.String(), child)).withClean()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (id ID) Pop() ID {
|
func (id ID) Pop() ID {
|
||||||
pid := path.Clean(ID(path.Dir(id.String())).withClean().String())
|
pid := path.Clean(NewID(path.Dir(id.String())).withClean().String())
|
||||||
if strings.HasPrefix(pid, ".") {
|
if strings.HasPrefix(pid, ".") {
|
||||||
return ""
|
return ""
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -499,7 +499,7 @@ func (server *Server) _apiV0SearchHandler(query string) ([][2]string, error) {
|
||||||
result = append(result, [2]string{id.URLSafeString(), title})
|
result = append(result, [2]string{id.URLSafeString(), title})
|
||||||
return nil
|
return nil
|
||||||
}); err != nil {
|
}); err != nil {
|
||||||
return nil, err
|
return nil, fmt.Errorf("failed for each: %v", err)
|
||||||
}
|
}
|
||||||
return result, nil
|
return result, nil
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -31,11 +31,11 @@ func TestServerRoutes(t *testing.T) {
|
||||||
ensureAndWrite(server.diskMediaPath("delid"), []byte("hi"))
|
ensureAndWrite(server.diskMediaPath("delid"), []byte("hi"))
|
||||||
|
|
||||||
tree := server.tree()
|
tree := server.tree()
|
||||||
if err := tree.Put(ID("getfid"), Leaf{Title: "", Content: "getfid body"}); err != nil {
|
if err := tree.Put(NewID("getfid"), Leaf{Title: "", Content: "getfid body"}); err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
tree.Put(ID("putfid"), Leaf{Title: "putfid title", Content: "initial putfid body"})
|
tree.Put(NewID("putfid"), Leaf{Title: "putfid title", Content: "initial putfid body"})
|
||||||
tree.Put(ID("delfid"), Leaf{Title: "delfid title", Content: "delfid body"})
|
tree.Put(NewID("delfid"), Leaf{Title: "delfid title", Content: "delfid body"})
|
||||||
t.Log(tree.GetRoot())
|
t.Log(tree.GetRoot())
|
||||||
|
|
||||||
ensureAndWrite(path.Join(server.root, "index.html"), []byte("mom"))
|
ensureAndWrite(path.Join(server.root, "index.html"), []byte("mom"))
|
||||||
|
|
@ -151,7 +151,7 @@ func TestServerPutTreeGetFile(t *testing.T) {
|
||||||
if err := server.Routes(); err != nil {
|
if err := server.Routes(); err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
server.tree().Put(ID("my pid"), Leaf{})
|
server.tree().Put(NewID("my pid"), Leaf{})
|
||||||
var id string
|
var id string
|
||||||
t.Run("put to create an id", func(t *testing.T) {
|
t.Run("put to create an id", func(t *testing.T) {
|
||||||
r := httptest.NewRequest(http.MethodPut, "/my%20pid/my-put-id", strings.NewReader("body"))
|
r := httptest.NewRequest(http.MethodPut, "/my%20pid/my-put-id", strings.NewReader("body"))
|
||||||
|
|
|
||||||
|
|
@ -26,7 +26,7 @@ func (branch Branch) forEach(preid ID, foo func(ID, Leaf) error) error {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
for id, child := range branch.Branches {
|
for id, child := range branch.Branches {
|
||||||
if err := child.forEach(preid.Push(string(id)), foo); err != nil {
|
if err := child.forEach(id, foo); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -3,21 +3,44 @@ package main
|
||||||
import (
|
import (
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"path"
|
||||||
|
"strconv"
|
||||||
"testing"
|
"testing"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestTreeDel(t *testing.T) {
|
func TestTreeForEach(t *testing.T) {
|
||||||
tree := NewTree(t.TempDir())
|
tree := NewTree(t.TempDir())
|
||||||
if err := tree.Put(ID("id"), Leaf{}); err != nil {
|
id := ""
|
||||||
|
for i := 0; i < 5; i++ {
|
||||||
|
id = path.Join(id, strconv.Itoa(i))
|
||||||
|
if err := tree.Put(NewID(id), Leaf{Title: id, Content: id}); err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
branch, err := tree.GetRoot()
|
||||||
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
if err := tree.Put(ID("id/subid"), Leaf{}); err != nil {
|
if err := branch.ForEach(func(id ID, leaf Leaf) error {
|
||||||
|
t.Logf("id=%+v, leaf=%+v", id, leaf)
|
||||||
|
return nil
|
||||||
|
}); err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestTreeDel(t *testing.T) {
|
||||||
|
tree := NewTree(t.TempDir())
|
||||||
|
if err := tree.Put(NewID("id"), Leaf{}); err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
if err := tree.Put(NewID("id/subid"), Leaf{}); err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := tree.Del(ID("id")); err != nil {
|
if err := tree.Del(NewID("id")); err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
} else if got, err := tree.Get(ID("id")); err != nil {
|
} else if got, err := tree.Get(NewID("id")); err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
} else if !got.Deleted {
|
} else if !got.Deleted {
|
||||||
t.Fatal(got)
|
t.Fatal(got)
|
||||||
|
|
@ -45,7 +68,7 @@ func TestTreeCrud(t *testing.T) {
|
||||||
t.Fatal(m)
|
t.Fatal(m)
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := tree.Del(ID("id")); err != nil {
|
if err := tree.Del(NewID("id")); err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -54,9 +77,9 @@ func TestTreeCrud(t *testing.T) {
|
||||||
Deleted: false,
|
Deleted: false,
|
||||||
Content: "leaf content",
|
Content: "leaf content",
|
||||||
}
|
}
|
||||||
if err := tree.Put(ID("id"), want); err != nil {
|
if err := tree.Put(NewID("id"), want); err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
} else if l, err := tree.Get(ID("id")); err != nil {
|
} else if l, err := tree.Get(NewID("id")); err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
} else if l != want {
|
} else if l != want {
|
||||||
t.Fatal(want, l)
|
t.Fatal(want, l)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue