Skip to content

Commit 1189276

Browse files
authored
Merge pull request #91 from fox-toolkit/test/move-itree-delete-tests
test: move iTree delete tests to tree_test.go
2 parents 9860ed8 + cca5b82 commit 1189276

2 files changed

Lines changed: 94 additions & 94 deletions

File tree

fox_test.go

Lines changed: 0 additions & 94 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ import (
99
"fmt"
1010
"log"
1111
"log/slog"
12-
"math/rand/v2"
1312
"net/http"
1413
"net/http/httptest"
1514
"net/url"
@@ -3160,86 +3159,6 @@ func TestRouter_ServeHTTP_TsrParams(t *testing.T) {
31603159
}
31613160
}
31623161

3163-
func Test_iTree_delete(t *testing.T) {
3164-
f, _ := NewRouter()
3165-
routes := make([]route, len(githubAPI))
3166-
copy(routes, githubAPI)
3167-
3168-
for _, rte := range routes {
3169-
require.NoError(t, onlyError(f.Add([]string{rte.method}, rte.path, emptyHandler)))
3170-
}
3171-
3172-
rand.Shuffle(len(routes), func(i, j int) { routes[i], routes[j] = routes[j], routes[i] })
3173-
3174-
for _, rte := range routes {
3175-
deletedRoute, err := f.Delete([]string{rte.method}, rte.path)
3176-
require.NoError(t, err)
3177-
assert.Equal(t, rte.path, deletedRoute.Pattern())
3178-
}
3179-
3180-
it := f.Iter()
3181-
cnt := len(slices.Collect(it.All()))
3182-
3183-
tree := f.getTree()
3184-
assert.Equal(t, 0, cnt)
3185-
assert.Equal(t, 0, len(tree.patterns.statics))
3186-
assert.Equal(t, 0, len(tree.patterns.params))
3187-
assert.Equal(t, 0, len(tree.patterns.wildcards))
3188-
}
3189-
3190-
func Test_iTree_deleteTxn(t *testing.T) {
3191-
f, _ := NewRouter()
3192-
routes := make([]route, len(githubAPI))
3193-
copy(routes, githubAPI)
3194-
3195-
for _, rte := range routes {
3196-
require.NoError(t, onlyError(f.Add([]string{rte.method}, rte.path, emptyHandler)))
3197-
}
3198-
3199-
rand.Shuffle(len(routes), func(i, j int) { routes[i], routes[j] = routes[j], routes[i] })
3200-
3201-
require.NoError(t, f.Updates(func(txn *Txn) error {
3202-
for _, rte := range routes {
3203-
deletedRoute, err := txn.Delete([]string{rte.method}, rte.path)
3204-
if err != nil {
3205-
return err
3206-
}
3207-
assert.Equal(t, rte.path, deletedRoute.Pattern())
3208-
}
3209-
return nil
3210-
}))
3211-
3212-
it := f.Iter()
3213-
cnt := len(slices.Collect(it.All()))
3214-
3215-
tree := f.getTree()
3216-
assert.Equal(t, 0, cnt)
3217-
assert.Equal(t, 0, len(tree.patterns.statics))
3218-
assert.Equal(t, 0, len(tree.patterns.params))
3219-
assert.Equal(t, 0, len(tree.patterns.wildcards))
3220-
}
3221-
3222-
func Test_iTree_deleteRoot(t *testing.T) {
3223-
f, _ := NewRouter()
3224-
require.NoError(t, onlyError(f.Add(MethodOptions, "/foo/bar", emptyHandler)))
3225-
deletedRoute, err := f.Delete(MethodOptions, "/foo/bar")
3226-
require.NoError(t, err)
3227-
assert.Equal(t, "/foo/bar", deletedRoute.Pattern())
3228-
tree := f.getTree()
3229-
assert.Equal(t, 0, len(tree.patterns.statics))
3230-
assert.Equal(t, 0, len(tree.patterns.params))
3231-
assert.Equal(t, 0, len(tree.patterns.wildcards))
3232-
3233-
require.NoError(t, onlyError(f.Add(MethodOptions, "exemple.com/foo/bar", emptyHandler)))
3234-
deletedRoute, err = f.Delete(MethodOptions, "exemple.com/foo/bar")
3235-
require.NoError(t, err)
3236-
assert.Equal(t, "exemple.com/foo/bar", deletedRoute.Pattern())
3237-
tree = f.getTree()
3238-
assert.Equal(t, 0, len(tree.patterns.statics))
3239-
assert.Equal(t, 0, len(tree.patterns.params))
3240-
assert.Equal(t, 0, len(tree.patterns.wildcards))
3241-
}
3242-
32433162
func TestRouter_DeleteError(t *testing.T) {
32443163
f, _ := NewRouter()
32453164
require.NoError(t, onlyError(f.Add(MethodGet, "/foo/bar", emptyHandler)))
@@ -3306,19 +3225,6 @@ func TestRouter_UpdatesPanic(t *testing.T) {
33063225
assert.Empty(t, tree.methods)
33073226
}
33083227

3309-
func Test_iTree_deleteWildcard(t *testing.T) {
3310-
f, _ := NewRouter()
3311-
f.MustAdd(MethodGet, "/foo/+{args}", emptyHandler)
3312-
deletedRoute, err := f.Delete(MethodGet, "/foo")
3313-
assert.ErrorIs(t, err, ErrRouteNotFound)
3314-
assert.Nil(t, deletedRoute)
3315-
f.MustAdd(MethodGet, "/foo/{bar}", emptyHandler)
3316-
deletedRoute, err = f.Delete(MethodGet, "/foo/{bar}")
3317-
assert.NoError(t, err)
3318-
assert.Equal(t, "/foo/{bar}", deletedRoute.Pattern())
3319-
assert.True(t, f.Has(MethodGet, "/foo/+{args}"))
3320-
}
3321-
33223228
func TestRouter_HandleNoRoute(t *testing.T) {
33233229
called := 0
33243230
m := MiddlewareFunc(func(next HandlerFunc) HandlerFunc {

tree_test.go

Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package fox
22

33
import (
4+
"math/rand/v2"
45
"net/http"
56
"net/http/httptest"
67
"slices"
@@ -4547,3 +4548,96 @@ func Test_iTree_lookup_Tsr(t *testing.T) {
45474548
})
45484549
}
45494550
}
4551+
4552+
func Test_iTree_delete(t *testing.T) {
4553+
f, _ := NewRouter()
4554+
routes := make([]route, len(githubAPI))
4555+
copy(routes, githubAPI)
4556+
4557+
for _, rte := range routes {
4558+
require.NoError(t, onlyError(f.Add([]string{rte.method}, rte.path, emptyHandler)))
4559+
}
4560+
4561+
rand.Shuffle(len(routes), func(i, j int) { routes[i], routes[j] = routes[j], routes[i] })
4562+
4563+
for _, rte := range routes {
4564+
deletedRoute, err := f.Delete([]string{rte.method}, rte.path)
4565+
require.NoError(t, err)
4566+
assert.Equal(t, rte.path, deletedRoute.Pattern())
4567+
}
4568+
4569+
it := f.Iter()
4570+
cnt := len(slices.Collect(it.All()))
4571+
4572+
tree := f.getTree()
4573+
assert.Equal(t, 0, cnt)
4574+
assert.Equal(t, 0, len(tree.patterns.statics))
4575+
assert.Equal(t, 0, len(tree.patterns.params))
4576+
assert.Equal(t, 0, len(tree.patterns.wildcards))
4577+
}
4578+
4579+
func Test_iTree_deleteTxn(t *testing.T) {
4580+
f, _ := NewRouter()
4581+
routes := make([]route, len(githubAPI))
4582+
copy(routes, githubAPI)
4583+
4584+
for _, rte := range routes {
4585+
require.NoError(t, onlyError(f.Add([]string{rte.method}, rte.path, emptyHandler)))
4586+
}
4587+
4588+
rand.Shuffle(len(routes), func(i, j int) { routes[i], routes[j] = routes[j], routes[i] })
4589+
4590+
require.NoError(t, f.Updates(func(txn *Txn) error {
4591+
for _, rte := range routes {
4592+
deletedRoute, err := txn.Delete([]string{rte.method}, rte.path)
4593+
if err != nil {
4594+
return err
4595+
}
4596+
assert.Equal(t, rte.path, deletedRoute.Pattern())
4597+
}
4598+
return nil
4599+
}))
4600+
4601+
it := f.Iter()
4602+
cnt := len(slices.Collect(it.All()))
4603+
4604+
tree := f.getTree()
4605+
assert.Equal(t, 0, cnt)
4606+
assert.Equal(t, 0, len(tree.patterns.statics))
4607+
assert.Equal(t, 0, len(tree.patterns.params))
4608+
assert.Equal(t, 0, len(tree.patterns.wildcards))
4609+
}
4610+
4611+
func Test_iTree_deleteRoot(t *testing.T) {
4612+
f, _ := NewRouter()
4613+
require.NoError(t, onlyError(f.Add(MethodOptions, "/foo/bar", emptyHandler)))
4614+
deletedRoute, err := f.Delete(MethodOptions, "/foo/bar")
4615+
require.NoError(t, err)
4616+
assert.Equal(t, "/foo/bar", deletedRoute.Pattern())
4617+
tree := f.getTree()
4618+
assert.Equal(t, 0, len(tree.patterns.statics))
4619+
assert.Equal(t, 0, len(tree.patterns.params))
4620+
assert.Equal(t, 0, len(tree.patterns.wildcards))
4621+
4622+
require.NoError(t, onlyError(f.Add(MethodOptions, "exemple.com/foo/bar", emptyHandler)))
4623+
deletedRoute, err = f.Delete(MethodOptions, "exemple.com/foo/bar")
4624+
require.NoError(t, err)
4625+
assert.Equal(t, "exemple.com/foo/bar", deletedRoute.Pattern())
4626+
tree = f.getTree()
4627+
assert.Equal(t, 0, len(tree.patterns.statics))
4628+
assert.Equal(t, 0, len(tree.patterns.params))
4629+
assert.Equal(t, 0, len(tree.patterns.wildcards))
4630+
}
4631+
4632+
func Test_iTree_deleteWildcard(t *testing.T) {
4633+
f, _ := NewRouter()
4634+
f.MustAdd(MethodGet, "/foo/+{args}", emptyHandler)
4635+
deletedRoute, err := f.Delete(MethodGet, "/foo")
4636+
assert.ErrorIs(t, err, ErrRouteNotFound)
4637+
assert.Nil(t, deletedRoute)
4638+
f.MustAdd(MethodGet, "/foo/{bar}", emptyHandler)
4639+
deletedRoute, err = f.Delete(MethodGet, "/foo/{bar}")
4640+
assert.NoError(t, err)
4641+
assert.Equal(t, "/foo/{bar}", deletedRoute.Pattern())
4642+
assert.True(t, f.Has(MethodGet, "/foo/+{args}"))
4643+
}

0 commit comments

Comments
 (0)