diff --git a/spec/radix/tree_spec.cr b/spec/radix/tree_spec.cr index 8545f7a..760de45 100644 --- a/spec/radix/tree_spec.cr +++ b/spec/radix/tree_spec.cr @@ -451,6 +451,14 @@ module Radix result.found?.should be_false end + it "does not find when path search has been exhausted" do + tree = Tree(Symbol).new + tree.add "/members/*trailing", :members_catch_all + + result = tree.find("/members2") + result.found?.should be_false + end + it "does prefer specific path over catch all if both are present" do tree = Tree(Symbol).new tree.add "/members", :members diff --git a/src/radix/tree.cr b/src/radix/tree.cr index 09d93fb..d6f4a96 100644 --- a/src/radix/tree.cr +++ b/src/radix/tree.cr @@ -324,6 +324,9 @@ module Radix return end end + + # path differs from key, no use searching anymore + return end # key still contains characters to walk