mirror of
https://gitea.invidious.io/iv-org/shard-radix.git
synced 2024-08-15 00:43:21 +00:00
fix(Tree): allows insert paths with shared keys unordered
When adding new nodes into the tree, the lookup mechanism failed to detect same named parameter was already added to it, raising an exception. Example: tree = Radix::Tree(Symbol).new tree.add "/members/:id/edit", :member_edit tree.add "/members/export", :members_export tree.add "/members/:id/videos", :member_videos # Exception This fix ensures that comparison is done key by key, even if they are inserted into the tree in a different order. Closes #9
This commit is contained in:
parent
e55d144413
commit
d7c0779ac9
3 changed files with 39 additions and 2 deletions
|
@ -233,6 +233,30 @@ module Radix
|
|||
tree.root.children[0].children[0].key.should eq("/:subcategory")
|
||||
end
|
||||
|
||||
it "does allow same named parameter in different order of insertion" do
|
||||
tree = Tree(Symbol).new
|
||||
tree.add "/members/:id/edit", :member_edit
|
||||
tree.add "/members/export", :members_export
|
||||
tree.add "/members/:id/videos", :member_videos
|
||||
|
||||
# /members/
|
||||
# +-export (:members_export)
|
||||
# \-:id/
|
||||
# +-videos (:members_videos)
|
||||
# \-edit (:members_edit)
|
||||
tree.root.key.should eq("/members/")
|
||||
tree.root.children.size.should eq(2)
|
||||
|
||||
# first level children nodes
|
||||
tree.root.children[0].key.should eq("export")
|
||||
tree.root.children[1].key.should eq(":id/")
|
||||
|
||||
# inner children
|
||||
nodes = tree.root.children[1].children
|
||||
nodes[0].key.should eq("videos")
|
||||
nodes[1].key.should eq("edit")
|
||||
end
|
||||
|
||||
it "does not allow different named parameters sharing same level" do
|
||||
tree = Tree(Symbol).new
|
||||
tree.add "/", :root
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue