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)
+ }
+}