diff options
author | Franck Cuny <franck@lumberjaph.net> | 2013-04-27 09:56:27 -0700 |
---|---|---|
committer | Franck Cuny <franck@lumberjaph.net> | 2013-04-27 09:56:27 -0700 |
commit | 6d23ce34ac4583d9db9d87be83d69402db9a182c (patch) | |
tree | 56edc05523845c6462e26e977f1e69175dc4bfc9 /router_test.go | |
parent | Add benchmark for the router. (diff) | |
download | path-router-6d23ce34ac4583d9db9d87be83d69402db9a182c.tar.gz |
Rename a few files.
The dispatcher is renamed router (as for the test file) and the router_test is renamed to route_test (since that's what this file is supposed to test).
Diffstat (limited to 'router_test.go')
-rw-r--r-- | router_test.go | 187 |
1 files changed, 6 insertions, 181 deletions
diff --git a/router_test.go b/router_test.go index 1a03764..845833c 100644 --- a/router_test.go +++ b/router_test.go @@ -1,197 +1,22 @@ package mooh import ( - "fmt" - "net/http" - "net/url" - "regexp" "testing" ) -func testRoute(req *Request) (Response, error) { +func testDispatcher (req *Request) (Response, error) { resp := Response{} return resp, nil } -func TestBasic(t *testing.T) { - router := BuildDispatcher() - router.AddRoute(&Route{Method: "GET", Path: "/", Code: testRoute}) - router.AddRoute(&Route{ - Method: "GET", - Path: "/blog/:year/:month/:day", - Code: testRoute, - Validations: map[string]*regexp.Regexp{ - "year": regexp.MustCompile("[\\d]{4}"), - "month": regexp.MustCompile("[\\d]{2}"), - "day": regexp.MustCompile("[\\d]{2}"), - }, - }) - router.AddRoute(&Route{Method: "GET", Path: "/blog", Code: testRoute}) - - if router.routes[0].Path != "/" { - t.Fatal() - } - if router.routes[1].Path != "/blog/:year/:month/:day" { - t.Fatal() - } - if router.routes[2].Path != "/blog" { - t.Fatal() - } -} - -func TestWithSimleValidation(t *testing.T) { - router := BuildDispatcher() - router.AddRoute(&Route{ - Path: "/users/:id", - Method: "GET", - Code: testRoute, - Validations: map[string]*regexp.Regexp{ - "id": regexp.MustCompile("[\\d]{1}"), - }, - }) - router.AddRoute(&Route{ - Path: "/users/:name", - Method: "GET", - Code: testRoute, - Validations: map[string]*regexp.Regexp{ - "name": regexp.MustCompile("[a-zA-Z]+"), - }, - }) - - r := &http.Request{Method: "GET", URL: &url.URL{Path: "/users/1"}} - m, _ := router.Match(r) - if m == nil { - t.Fatal() - } - if m.Route.Path != "/users/:id" { - t.Fatal() - } - - r = &http.Request{Method: "GET", URL: &url.URL{Path: "/users/foo"}} - m, _ = router.Match(r) - if m == nil { - t.Fatal() - } - if m.Route.Path != "/users/:name" { - t.Fatal() - } -} - -func TestMatch(t *testing.T) { - router := BuildDispatcher() - router.AddRoute(&Route{ - Method: "GET", - Path: "/blog/:year/:month/:day", - Code: testRoute, - Validations: map[string]*regexp.Regexp{ - "year": regexp.MustCompile("[\\d]{4}"), - "month": regexp.MustCompile("[\\d]{2}"), - "day": regexp.MustCompile("[\\d]{2}"), - }, - }) - router.AddRoute(&Route{Method: "GET", Path: "/blog", Code: testRoute}) - - pathToTests := []url.URL{ - url.URL{Path: "/blog"}, - url.URL{Path: "/blog"}, - url.URL{Path: "/blog/2013/04/21"}, - url.URL{Path: "/blog/2013/21/04"}, - } - for _, p := range pathToTests { - r := &http.Request{URL: &p, Method: "GET"} - m, _ := router.Match(r) - if m == nil { - t.Fatal() - } else { - fmt.Println(fmt.Sprintf("%s match for %s", p.Path, m.Path)) - } - } -} - -func TestMatchOptional(t *testing.T) { - router := BuildDispatcher() - router.AddRoute(&Route{ - Path: "/blog/?:year", - Method: "GET", - Code: testRoute, - Validations: map[string]*regexp.Regexp{ - "year": regexp.MustCompile("[\\d]{4}"), - }, - }) - router.AddRoute(&Route{ - Path: "/blog/:year/?:month", - Method: "GET", - Code: testRoute, - Validations: map[string]*regexp.Regexp{ - "year": regexp.MustCompile("[\\d]{4}"), - "month": regexp.MustCompile("[\\d]{2}"), - }, - }) - - pathToTests := []url.URL{ - url.URL{Path: "/blog"}, - url.URL{Path: "/blog"}, - url.URL{Path: "/blog/2013"}, - url.URL{Path: "/blog/2013/21"}, - } - for _, p := range pathToTests { - r := &http.Request{URL: &p, Method: "GET"} - m, _ := router.Match(r) - if m == nil { - t.Fatal() - } else { - fmt.Println(fmt.Sprintf("%s match for %s", p.Path, m.Path)) - } - } -} - -func TestAmbigiousSimple(t *testing.T) { - router := BuildDispatcher() - router.AddRoute(&Route{Path: "/foo/bar", Method: "GET", Code: testRoute}) - router.AddRoute(&Route{ - Path: "/foo/:bar", - Method: "GET", - Code: testRoute, - Validations: map[string]*regexp.Regexp{ - "bar": regexp.MustCompile("[a-zA-Z]{3}"), - }, - }) - - r := &http.Request{Method: "GET", URL: &url.URL{Path: "/foo/bar"}} - m, _ := router.Match(r) - if m == nil { - t.Fatal() - } else { - fmt.Println(fmt.Sprintf("%s match for %s", r.URL.Path, m.Path)) - } -} - -func TestAmbigiousFail(t *testing.T) { - router := BuildDispatcher() - router.AddRoute(&Route{ - Path: "/foo/:bar", - Method: "GET", - Code: testRoute, - Validations: map[string]*regexp.Regexp{ - "bar": regexp.MustCompile("[a-zA-Z]{3}"), - }, - }) - router.AddRoute(&Route{ - Path: "/:foo/bar", - Method: "GET", - Code: testRoute, - Validations: map[string]*regexp.Regexp{ - "foo": regexp.MustCompile("[a-zA-Z]{3}"), - }, - }) - - r := &http.Request{Method: "GET", URL: &url.URL{Path: "/foo/bar"}} - m, err := router.Match(r) - if m != nil { +func testBasic(t *testing.T) { + d := BuildDispatcher() + err := d.AddRoute(&Route{Method:"GET", Path:"/", Code: testDispatcher}) + if err != nil { t.Fatal() } + err = d.AddRoute(&Route{Method: "GET", Path:"/", Code: testDispatcher}) if err == nil { t.Fatal() } - fmt.Println(err) } |