tree: Add invalid node type test Raises the test coverage to 100%
diff --git a/tree.go b/tree.go index 933b5cb..121d0c3 100644 --- a/tree.go +++ b/tree.go
@@ -379,7 +379,7 @@ return default: - panic("Unknown node type") + panic("Invalid node type") } } } else if path == n.path { @@ -490,7 +490,7 @@ return append(ciPath, path...), true default: - panic("Unknown node type") + panic("Invalid node type") } } } else {
diff --git a/tree_test.go b/tree_test.go index cf4d170..ed1f9a8 100644 --- a/tree_test.go +++ b/tree_test.go
@@ -557,3 +557,28 @@ } } } + +func TestTreeInvalidNodeType(t *testing.T) { + tree := &node{} + tree.addRoute("/", fakeHandler("/")) + tree.addRoute("/:page", fakeHandler("/:page")) + + // set invalid node type + tree.children[0].nType = 42 + + // normal lookup + recv := catchPanic(func() { + tree.getValue("/test") + }) + if rs, ok := recv.(string); !ok || rs != "Invalid node type" { + t.Fatalf(`Expected panic "Invalid node type", got "%v"`, recv) + } + + // case-insensitive lookup + recv = catchPanic(func() { + tree.findCaseInsensitivePath("/test", true) + }) + if rs, ok := recv.(string); !ok || rs != "Invalid node type" { + t.Fatalf(`Expected panic "Invalid node type", got "%v"`, recv) + } +}