mirror of
https://gitea.invidious.io/iv-org/shard-radix.git
synced 2024-08-15 00:43:21 +00:00
Extraction: initial import
Extract Radix Tree implementation from `Beryl` project into an standalone library to facilitate usage by other developers. - Move `Tree`, `Node` and `Result` into `Radix` namespace - Clenaup standalone README and describe usage
This commit is contained in:
commit
7f348cae8c
13 changed files with 1229 additions and 0 deletions
67
spec/radix/result_spec.cr
Normal file
67
spec/radix/result_spec.cr
Normal file
|
@ -0,0 +1,67 @@
|
|||
require "../spec_helper"
|
||||
|
||||
module Radix
|
||||
describe Result do
|
||||
describe "#found?" do
|
||||
context "a new instance" do
|
||||
it "returns false when no payload is associated" do
|
||||
result = Result.new
|
||||
result.found?.should be_false
|
||||
end
|
||||
end
|
||||
|
||||
context "with a payload" do
|
||||
it "returns true" do
|
||||
node = Node.new("/", :root)
|
||||
result = Result.new
|
||||
result.use node
|
||||
|
||||
result.found?.should be_true
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe "#key" do
|
||||
context "a new instance" do
|
||||
it "returns an empty key" do
|
||||
result = Result.new
|
||||
result.key.should eq("")
|
||||
end
|
||||
end
|
||||
|
||||
context "given one used node" do
|
||||
it "returns the node key" do
|
||||
node = Node.new("/", :root)
|
||||
result = Result.new
|
||||
result.use node
|
||||
|
||||
result.key.should eq("/")
|
||||
end
|
||||
end
|
||||
|
||||
context "using multiple nodes" do
|
||||
it "combines the node keys" do
|
||||
node1 = Node.new("/", :root)
|
||||
node2 = Node.new("about", :about)
|
||||
result = Result.new
|
||||
result.use node1
|
||||
result.use node2
|
||||
|
||||
result.key.should eq("/about")
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe "#use" do
|
||||
it "uses the node payload" do
|
||||
node = Node.new("/", :root)
|
||||
result = Result.new
|
||||
result.payload?.should be_falsey
|
||||
|
||||
result.use node
|
||||
result.payload?.should be_truthy
|
||||
result.payload.should eq(node.payload)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
Loading…
Add table
Add a link
Reference in a new issue