Improved test coverage
This commit is contained in:
parent
763686679f
commit
0323126f2c
5 changed files with 80 additions and 71 deletions
|
@ -1,6 +1,7 @@
|
|||
package router_test
|
||||
|
||||
import (
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"git.akyoto.dev/go/assert"
|
||||
|
@ -60,6 +61,7 @@ func TestWildcard(t *testing.T) {
|
|||
r := router.New[string]()
|
||||
r.Add("GET", "/", "Front page")
|
||||
r.Add("GET", "/:post", "Blog post")
|
||||
r.Add("GET", "/*any", "Wildcard")
|
||||
r.Add("GET", "/users/:id", "Parameter")
|
||||
r.Add("GET", "/images/static", "Static")
|
||||
r.Add("GET", "/images/*path", "Wildcard")
|
||||
|
@ -80,6 +82,9 @@ func TestWildcard(t *testing.T) {
|
|||
assert.Equal(t, params[0].Value, "42")
|
||||
assert.Equal(t, data, "Parameter")
|
||||
|
||||
data, _ = r.Lookup("GET", "/users/42/test.txt")
|
||||
assert.Equal(t, data, "Wildcard")
|
||||
|
||||
data, params = r.Lookup("GET", "/images/static")
|
||||
assert.Equal(t, len(params), 0)
|
||||
assert.Equal(t, data, "Static")
|
||||
|
@ -103,6 +108,34 @@ func TestWildcard(t *testing.T) {
|
|||
assert.Equal(t, data, "Wildcard")
|
||||
}
|
||||
|
||||
func TestMap(t *testing.T) {
|
||||
r := router.New[string]()
|
||||
r.Add("GET", "/hello", "Hello")
|
||||
r.Add("GET", "/world", "World")
|
||||
r.Add("GET", "/user/:user", "User")
|
||||
r.Add("GET", "/*path", "Path")
|
||||
|
||||
r.Map(func(data string) string {
|
||||
return strings.Repeat(data, 2)
|
||||
})
|
||||
|
||||
data, params := r.Lookup("GET", "/hello")
|
||||
assert.Equal(t, len(params), 0)
|
||||
assert.Equal(t, data, "HelloHello")
|
||||
|
||||
data, params = r.Lookup("GET", "/world")
|
||||
assert.Equal(t, len(params), 0)
|
||||
assert.Equal(t, data, "WorldWorld")
|
||||
|
||||
data, params = r.Lookup("GET", "/user/123")
|
||||
assert.Equal(t, len(params), 1)
|
||||
assert.Equal(t, data, "UserUser")
|
||||
|
||||
data, params = r.Lookup("GET", "/test.txt")
|
||||
assert.Equal(t, len(params), 1)
|
||||
assert.Equal(t, data, "PathPath")
|
||||
}
|
||||
|
||||
func TestMethods(t *testing.T) {
|
||||
methods := []string{
|
||||
"GET",
|
||||
|
@ -145,6 +178,20 @@ func TestGitHub(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
func TestTrailingSlash(t *testing.T) {
|
||||
r := router.New[string]()
|
||||
r.Add("GET", "/hello", "Hello 1")
|
||||
r.Add("GET", "/hello/", "Hello 2")
|
||||
|
||||
data, params := r.Lookup("GET", "/hello")
|
||||
assert.Equal(t, len(params), 0)
|
||||
assert.Equal(t, data, "Hello 1")
|
||||
|
||||
data, params = r.Lookup("GET", "/hello/")
|
||||
assert.Equal(t, len(params), 0)
|
||||
assert.Equal(t, data, "Hello 2")
|
||||
}
|
||||
|
||||
func TestOverwrite(t *testing.T) {
|
||||
r := router.New[string]()
|
||||
r.Add("GET", "/", "1")
|
||||
|
@ -158,6 +205,17 @@ func TestOverwrite(t *testing.T) {
|
|||
assert.Equal(t, data, "5")
|
||||
}
|
||||
|
||||
func TestInvalidMethod(t *testing.T) {
|
||||
defer func() {
|
||||
if recover() == nil {
|
||||
t.FailNow()
|
||||
}
|
||||
}()
|
||||
|
||||
r := router.New[string]()
|
||||
r.Add("?", "/hello", "Hello")
|
||||
}
|
||||
|
||||
func TestMemoryUsage(t *testing.T) {
|
||||
escape := func(a any) {}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue