Reduced memory usage
This commit is contained in:
parent
ad033d4315
commit
7df818ffff
9 changed files with 95 additions and 84 deletions
|
@ -8,35 +8,35 @@ import (
|
|||
)
|
||||
|
||||
func TestStatic(t *testing.T) {
|
||||
router := router.New[string]()
|
||||
router.Add("GET", "/hello", "Hello")
|
||||
router.Add("GET", "/world", "World")
|
||||
r := router.New[string]()
|
||||
r.Add("GET", "/hello", "Hello")
|
||||
r.Add("GET", "/world", "World")
|
||||
|
||||
data, params := router.Lookup("GET", "/hello")
|
||||
data, params := r.Lookup("GET", "/hello")
|
||||
assert.Equal(t, len(params), 0)
|
||||
assert.Equal(t, data, "Hello")
|
||||
|
||||
data, params = router.Lookup("GET", "/world")
|
||||
data, params = r.Lookup("GET", "/world")
|
||||
assert.Equal(t, len(params), 0)
|
||||
assert.Equal(t, data, "World")
|
||||
|
||||
data, params = router.Lookup("GET", "/404")
|
||||
data, params = r.Lookup("GET", "/404")
|
||||
assert.Equal(t, len(params), 0)
|
||||
assert.Equal(t, data, "")
|
||||
}
|
||||
|
||||
func TestParameter(t *testing.T) {
|
||||
router := router.New[string]()
|
||||
router.Add("GET", "/blog/:slug", "Blog post")
|
||||
router.Add("GET", "/blog/:slug/comments/:id", "Comment")
|
||||
r := router.New[string]()
|
||||
r.Add("GET", "/blog/:slug", "Blog post")
|
||||
r.Add("GET", "/blog/:slug/comments/:id", "Comment")
|
||||
|
||||
data, params := router.Lookup("GET", "/blog/hello-world")
|
||||
data, params := r.Lookup("GET", "/blog/hello-world")
|
||||
assert.Equal(t, len(params), 1)
|
||||
assert.Equal(t, params[0].Key, "slug")
|
||||
assert.Equal(t, params[0].Value, "hello-world")
|
||||
assert.Equal(t, data, "Blog post")
|
||||
|
||||
data, params = router.Lookup("GET", "/blog/hello-world/comments/123")
|
||||
data, params = r.Lookup("GET", "/blog/hello-world/comments/123")
|
||||
assert.Equal(t, len(params), 2)
|
||||
assert.Equal(t, params[0].Key, "slug")
|
||||
assert.Equal(t, params[0].Value, "hello-world")
|
||||
|
@ -46,29 +46,29 @@ func TestParameter(t *testing.T) {
|
|||
}
|
||||
|
||||
func TestWildcard(t *testing.T) {
|
||||
router := router.New[string]()
|
||||
router.Add("GET", "/", "Front page")
|
||||
router.Add("GET", "/:slug", "Blog post")
|
||||
router.Add("GET", "/users/:id", "Parameter")
|
||||
router.Add("GET", "/images/*path", "Wildcard")
|
||||
r := router.New[string]()
|
||||
r.Add("GET", "/", "Front page")
|
||||
r.Add("GET", "/:slug", "Blog post")
|
||||
r.Add("GET", "/users/:id", "Parameter")
|
||||
r.Add("GET", "/images/*path", "Wildcard")
|
||||
|
||||
data, params := router.Lookup("GET", "/")
|
||||
data, params := r.Lookup("GET", "/")
|
||||
assert.Equal(t, len(params), 0)
|
||||
assert.Equal(t, data, "Front page")
|
||||
|
||||
data, params = router.Lookup("GET", "/blog-post")
|
||||
data, params = r.Lookup("GET", "/blog-post")
|
||||
assert.Equal(t, len(params), 1)
|
||||
assert.Equal(t, params[0].Key, "slug")
|
||||
assert.Equal(t, params[0].Value, "blog-post")
|
||||
assert.Equal(t, data, "Blog post")
|
||||
|
||||
data, params = router.Lookup("GET", "/users/42")
|
||||
data, params = r.Lookup("GET", "/users/42")
|
||||
assert.Equal(t, len(params), 1)
|
||||
assert.Equal(t, params[0].Key, "id")
|
||||
assert.Equal(t, params[0].Value, "42")
|
||||
assert.Equal(t, data, "Parameter")
|
||||
|
||||
data, params = router.Lookup("GET", "/images/favicon/256.png")
|
||||
data, params = r.Lookup("GET", "/images/favicon/256.png")
|
||||
assert.Equal(t, len(params), 1)
|
||||
assert.Equal(t, params[0].Key, "path")
|
||||
assert.Equal(t, params[0].Value, "favicon/256.png")
|
||||
|
@ -76,7 +76,6 @@ func TestWildcard(t *testing.T) {
|
|||
}
|
||||
|
||||
func TestMethods(t *testing.T) {
|
||||
router := router.New[string]()
|
||||
methods := []string{
|
||||
"GET",
|
||||
"POST",
|
||||
|
@ -89,26 +88,39 @@ func TestMethods(t *testing.T) {
|
|||
"OPTIONS",
|
||||
}
|
||||
|
||||
r := router.New[string]()
|
||||
|
||||
for _, method := range methods {
|
||||
router.Add(method, "/", method)
|
||||
r.Add(method, "/", method)
|
||||
}
|
||||
|
||||
for _, method := range methods {
|
||||
data, _ := router.Lookup(method, "/")
|
||||
data, _ := r.Lookup(method, "/")
|
||||
assert.Equal(t, data, method)
|
||||
}
|
||||
}
|
||||
|
||||
func TestGitHub(t *testing.T) {
|
||||
router := router.New[string]()
|
||||
routes := loadRoutes("testdata/github.txt")
|
||||
r := router.New[string]()
|
||||
|
||||
for _, route := range routes {
|
||||
router.Add(route.method, route.path, "octocat")
|
||||
r.Add(route.method, route.path, "octocat")
|
||||
}
|
||||
|
||||
for _, route := range routes {
|
||||
data, _ := router.Lookup(route.method, route.path)
|
||||
data, _ := r.Lookup(route.method, route.path)
|
||||
assert.Equal(t, data, "octocat")
|
||||
}
|
||||
}
|
||||
|
||||
func TestMemoryUsage(t *testing.T) {
|
||||
escape := func(a any) {}
|
||||
|
||||
result := testing.Benchmark(func(b *testing.B) {
|
||||
r := router.New[string]()
|
||||
escape(r)
|
||||
})
|
||||
|
||||
t.Logf("%d bytes", result.MemBytes)
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue