Improved test coverage

This commit is contained in:
Eduard Urbach 2023-09-06 16:52:22 +02:00
parent 763686679f
commit 0323126f2c
Signed by: eduard
GPG key ID: 49226B848C78F6C8
5 changed files with 80 additions and 71 deletions

View file

@ -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) {}