Merge pull request #31 from luislavena/fix/non-root-lookup

Fix incorrect lookup in non-root nodes
This commit is contained in:
Luis Lavena 2021-01-30 23:37:27 -03:00 committed by GitHub
commit c6a0701a44
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 18 additions and 0 deletions

View File

@ -8,6 +8,7 @@ so please check *Changed* and *Removed* notes before upgrading.
### Fixed
- Correct lookup issue caused by partial shared key with glob [#23](https://github.com/luislavena/radix/issues/23)
- Correct lookup caused by non-root key in suffix [#27](https://github.com/luislavena/radix/issues/27)
### Removed
- Remove `Radix::Result#key` since exposes internal details about structure (breaking change)

View File

@ -353,6 +353,15 @@ module Radix
result.found?.should be_true
result.payload.should eq(:tags)
end
it "do not find when lookup for non-root key" do
tree = Tree(Symbol).new
tree.add "/prefix/", :prefix
tree.add "/prefix/foo", :foo
result = tree.find "/foo"
result.found?.should be_false
end
end
context "unicode nodes with shared parent" do

View File

@ -299,6 +299,14 @@ module Radix
end
end
# determine if remaining part of key and path are still the same
if (key_reader.has_next? && path_reader.has_next?) &&
(key_reader.current_char != path_reader.current_char ||
key_reader.peek_next_char != path_reader.peek_next_char)
# path and key differ, skipping
return
end
# still path to walk, check for possible trailing slash or children
# nodes
if path_reader.has_next?