mirror of
https://github.com/xinliangnote/go-gin-api.git
synced 2024-04-21 12:31:46 +00:00
158 lines
3.4 KiB
Go
158 lines
3.4 KiB
Go
package urltable
|
|
|
|
import (
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
func TestFormat(t *testing.T) {
|
|
pattern, err := Format(" view / a / b / c ")
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
if pattern != "VIEW/a/b/c" {
|
|
t.Fatal("format failed")
|
|
}
|
|
}
|
|
|
|
func TestParse(t *testing.T) {
|
|
for i, pattern := range []string{
|
|
"get/ a / b / c ",
|
|
"get/ a / b / * / ** ",
|
|
"get/ a / b / * / c / ** ",
|
|
"get/ a / b / * / * / c/ ** ",
|
|
"get/ a / b / * / * / c/ ",
|
|
} {
|
|
paths, err := parse(pattern)
|
|
if err != nil {
|
|
t.Fatal(pattern, "should be legal; err: ", err.Error())
|
|
}
|
|
t.Log(i, strings.Join(paths, delimiter))
|
|
}
|
|
|
|
for _, pattern := range []string{
|
|
" ",
|
|
" / ",
|
|
" x / ",
|
|
"get/ ",
|
|
"get/ * ",
|
|
"get/ ** ",
|
|
"get/ ** / * ",
|
|
"get/ ** / ** ",
|
|
"get/ a / ** / * ",
|
|
"get/ a / / * ",
|
|
"get/ a / / ** ",
|
|
"get/ a / / ",
|
|
"get/ a / * / / ",
|
|
"get/ a / * / ** / ",
|
|
} {
|
|
if _, err := parse(pattern); err == nil {
|
|
t.Fatal(pattern, "should be illegal")
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestAppend(t *testing.T) {
|
|
table := NewTable()
|
|
|
|
if err := table.Append("get/a/b"); err != nil {
|
|
t.Fatal("shouldn't be err")
|
|
}
|
|
|
|
if err := table.Append("get/a/b/*"); err != nil {
|
|
t.Fatal("shouldn't be err")
|
|
}
|
|
if err := table.Append("get/a/b/*/**"); err != nil {
|
|
t.Fatal("shouldn't be err")
|
|
}
|
|
|
|
if err := table.Append("get/a/b/c/*"); err != nil {
|
|
t.Fatal("shouldn't be err")
|
|
}
|
|
if err := table.Append("get/a/b/c/*/**"); err != nil {
|
|
t.Fatal("shouldn't be err")
|
|
}
|
|
|
|
t.Log(table.Size())
|
|
if err := table.Append("get/a/b/c/*"); err != nil {
|
|
t.Fatal("shouldn't be err")
|
|
}
|
|
t.Log(table.Size())
|
|
|
|
if err := table.Append("get/a/b/**"); err == nil {
|
|
t.Fatal("should be err")
|
|
}
|
|
if err := table.Append("get/a/b/*/*"); err == nil {
|
|
t.Fatal("should be err")
|
|
}
|
|
if err := table.Append("get/a/b/*/c"); err == nil {
|
|
t.Fatal("should be err")
|
|
}
|
|
}
|
|
|
|
func TestMapping(t *testing.T) {
|
|
table := NewTable()
|
|
|
|
if err := table.Append("get/a/b"); err != nil {
|
|
t.Fatal("shouldn't be err")
|
|
}
|
|
|
|
if err := table.Append("get/a/b/*"); err != nil {
|
|
t.Fatal("shouldn't be err")
|
|
}
|
|
if err := table.Append("get/a/b/*/**"); err != nil {
|
|
t.Fatal("shouldn't be err")
|
|
}
|
|
|
|
if err := table.Append("get/a/b/c/*"); err != nil {
|
|
t.Fatal("shouldn't be err")
|
|
}
|
|
if err := table.Append("get/a/b/c/*/**"); err != nil {
|
|
t.Fatal("shouldn't be err")
|
|
}
|
|
|
|
if pattern, _ := table.Mapping("get/a/b"); pattern == "" {
|
|
t.Fatal("should contains")
|
|
} else {
|
|
t.Log("get/a/b", ">>", pattern)
|
|
}
|
|
if pattern, _ := table.Mapping("get/a/b/"); pattern == "" {
|
|
t.Fatal("should contains")
|
|
} else {
|
|
t.Log("get/a/b/", ">>", pattern)
|
|
}
|
|
if pattern, _ := table.Mapping("get/a/b/x"); pattern == "" {
|
|
t.Fatal("should contains")
|
|
} else {
|
|
t.Log("get/a/b/x", ">>", pattern)
|
|
}
|
|
if pattern, _ := table.Mapping("get/a/b/x/y/z"); pattern == "" {
|
|
t.Fatal("should contains")
|
|
} else {
|
|
t.Log("get/a/b/x/y/z", ">>", pattern)
|
|
}
|
|
|
|
if pattern, _ := table.Mapping("get/a/b/c/"); pattern == "" {
|
|
t.Fatal("should contains")
|
|
} else {
|
|
t.Log("get/a/b/c/", ">>", pattern)
|
|
}
|
|
if pattern, _ := table.Mapping("get/a/b/c/d/e/f"); pattern == "" {
|
|
t.Fatal("should contains")
|
|
} else {
|
|
t.Log("get/a/b/c/d/e/f", ">>", pattern)
|
|
}
|
|
|
|
if pattern, _ := table.Mapping("get/a/"); pattern != "" {
|
|
t.Fatal("shouldn't contains")
|
|
} else {
|
|
t.Log("get/a/", ">>", pattern)
|
|
}
|
|
if pattern, _ := table.Mapping("get/a/c"); pattern != "" {
|
|
t.Fatal("shouldn't contains")
|
|
} else {
|
|
t.Log("get/a/c", ">>", pattern)
|
|
}
|
|
}
|