| package context | |
| import ( | |
| "fmt" | |
| "testing" | |
| "github.com/magiconair/properties/assert" | |
| ) | |
| func TestSlash(t *testing.T) { | |
| assert.Equal(t, "/abc", slash("/abc")) | |
| assert.Equal(t, "/", slash("")) | |
| assert.Equal(t, "/abc", slash("abc/")) | |
| assert.Equal(t, "/", slash("/")) | |
| assert.Equal(t, "/abc", slash("/abc/")) | |
| assert.Equal(t, "/", slash("//")) | |
| } | |
| func TestJoin(t *testing.T) { | |
| assert.Equal(t, "/abc/abc", join(slash("/abc"), slash("/abc"))) | |
| assert.Equal(t, "/", join(slash("/"), slash("/"))) | |
| assert.Equal(t, "/abc", join(slash("/"), slash("/abc"))) | |
| assert.Equal(t, "/abc", join(slash("abc/"), slash("/"))) | |
| assert.Equal(t, "/abc", join(slash("/abc/"), slash("/"))) | |
| } | |
| func TestTree(t *testing.T) { | |
| tree := tree() | |
| tree.addPath(stringToArr("/adm"), "GET", []Handler{func(ctx *Context) { fmt.Println(1) }}) | |
| tree.addPath(stringToArr("/admi"), "GET", []Handler{func(ctx *Context) { fmt.Println(1) }}) | |
| tree.addPath(stringToArr("/admin"), "GET", []Handler{func(ctx *Context) { fmt.Println(1) }}) | |
| tree.addPath(stringToArr("/admin/menu/new"), "POST", []Handler{func(ctx *Context) { fmt.Println(1) }}) | |
| tree.addPath(stringToArr("/admin/menu/new"), "GET", []Handler{func(ctx *Context) { fmt.Println(1) }}) | |
| tree.addPath(stringToArr("/admin/info/:__prefix"), "GET", []Handler{ | |
| func(ctx *Context) { fmt.Println("auth") }, | |
| func(ctx *Context) { fmt.Println("init") }, | |
| func(ctx *Context) { fmt.Println("info") }, | |
| }) | |
| tree.addPath(stringToArr("/admin/info/:__prefix/detail"), "GET", []Handler{ | |
| func(ctx *Context) { fmt.Println("auth") }, | |
| func(ctx *Context) { fmt.Println("detail") }, | |
| }) | |
| fmt.Println("/admin/menu/new", "GET") | |
| h := tree.findPath(stringToArr("/admin/menu/new"), "GET") | |
| assert.Equal(t, h != nil, true) | |
| printHandler(h) | |
| fmt.Println("/admin/menu/new", "POST") | |
| h = tree.findPath(stringToArr("/admin/menu/new"), "POST") | |
| assert.Equal(t, h != nil, true) | |
| printHandler(h) | |
| fmt.Println("/admin/me/new", "POST") | |
| h = tree.findPath(stringToArr("/admin/me/new"), "POST") | |
| assert.Equal(t, h == nil, true) | |
| printHandler(h) | |
| fmt.Println("/admin/info/user", "GET") | |
| h = tree.findPath(stringToArr("/admin/info/user"), "GET") | |
| assert.Equal(t, h != nil, true) | |
| printHandler(h) | |
| fmt.Println("/admin/info/user/detail", "GET") | |
| h = tree.findPath(stringToArr("/admin/info/user/detail"), "GET") | |
| assert.Equal(t, h != nil, true) | |
| printHandler(h) | |
| fmt.Println("=========== printChildren ===========") | |
| tree.printChildren() | |
| } | |
| func printHandler(h []Handler) { | |
| for _, value := range h { | |
| value(&Context{}) | |
| } | |
| } | |