This documentation is automatically generated by online-judge-tools/verification-helper
require "spec"
require "../../src/graph/edge"
describe WeightedEdge do
it "#to, #cost" do
WeightedEdge.new(2, 10i64).to.should eq 2
WeightedEdge.new(2, 10i64).cost.should eq 10i64
end
it "#<=>" do
(WeightedEdge.new(2, 10) <=> WeightedEdge.new(3, 4)).should eq 1
(WeightedEdge.new(2, 10) <=> WeightedEdge.new(2, 11)).should eq -1
(WeightedEdge.new(2, 10) <=> WeightedEdge.new(3, 10)).should eq -1
(WeightedEdge.new(2, 10) <=> WeightedEdge.new(0, 11)).should eq -1
(WeightedEdge.new(2, 10) <=> WeightedEdge.new(2, 10)).should eq 0
end
it "#to_s" do
WeightedEdge.new(2, 3).to_s.should eq "(2, 3)"
end
it "#inspect" do
WeightedEdge.new(2, 3).inspect.should eq "->2(3)"
end
end
describe WeightedEdge2 do
it "#from, #to, #cost" do
WeightedEdge2.new(2, 3, 4).from.should eq 2
WeightedEdge2.new(2, 3, 4).to.should eq 3
WeightedEdge2.new(2, 3, 4).cost.should eq 4
end
it "#<=>" do
(WeightedEdge2.new(2, 42, 10) <=> WeightedEdge2.new(3, 42, 4)).should eq 1
(WeightedEdge2.new(2, 42, 10) <=> WeightedEdge2.new(2, 42, 11)).should eq -1
(WeightedEdge2.new(2, 42, 10) <=> WeightedEdge2.new(3, 42, 10)).should eq -1
(WeightedEdge2.new(2, 42, 10) <=> WeightedEdge2.new(0, 42, 11)).should eq -1
(WeightedEdge2.new(2, 42, 10) <=> WeightedEdge2.new(2, 42, 10)).should eq 0
(WeightedEdge2.new(2, 42, 10) <=> WeightedEdge2.new(2, 43, 10)).should eq -1
end
it "#reverse" do
WeightedEdge2.new(2, 3, 4).reverse.should eq WeightedEdge2.new(3, 2, 4)
end
it "#sort" do
WeightedEdge2.new(2, 3, 4).sort.should eq WeightedEdge2.new(2, 3, 4)
WeightedEdge2.new(3, 2, 4).sort.should eq WeightedEdge2.new(2, 3, 4)
end
it "#to_s" do
WeightedEdge2.new(2, 3, 4).to_s.should eq "(2, 3, 4)"
end
it "inspect" do
WeightedEdge2.new(2, 3, 4).inspect.should eq "2->3(4)"
end
end
describe UnweightedEdge do
it "#to, #cost" do
UnweightedEdge.new(2).to.should eq 2
UnweightedEdge.new(2).cost.should eq 1
end
it "#to_s" do
UnweightedEdge.new(2).to_s.should eq "2"
end
it "inspect" do
UnweightedEdge.new(2).inspect.should eq "->2"
end
end
describe UnweightedEdge2 do
it "#from, #to, #cost" do
UnweightedEdge2.new(2, 3).from.should eq 2
UnweightedEdge2.new(2, 3).to.should eq 3
UnweightedEdge2.new(2, 3).cost.should eq 1
end
it "#reverse" do
UnweightedEdge2.new(2, 3).reverse.should eq UnweightedEdge2.new(3, 2)
end
it "#sort" do
UnweightedEdge2.new(2, 3).sort.should eq UnweightedEdge2.new(2, 3)
UnweightedEdge2.new(3, 2).sort.should eq UnweightedEdge2.new(2, 3)
end
it "#to_s" do
UnweightedEdge2.new(2, 3).to_s.should eq "(2, 3)"
end
it "inspect" do
UnweightedEdge2.new(2, 3).inspect.should eq "2->3"
end
end
require "spec"
# require "../../src/graph/edge"
struct WeightedEdge(T)
include Comparable(WeightedEdge(T))
property to : Int32, cost : T
def initialize(@to, @cost : T)
end
def <=>(other : WeightedEdge(T))
{cost, to} <=> {other.cost, other.to}
end
def to_s(io) : Nil
io << '(' << to << ", " << cost << ')'
end
def inspect(io) : Nil
io << "->" << to << '(' << cost << ')'
end
end
struct WeightedEdge2(T)
include Comparable(WeightedEdge2(T))
property from : Int32, to : Int32, cost : T
def initialize(@from, @to, @cost : T)
end
def initialize(@from, edge : WeightedEdge(T))
@to, @cost = edge.to, edge.cost
end
def <=>(other : WeightedEdge2(T))
{cost, from, to} <=> {other.cost, other.from, other.to}
end
def reverse : self
WeightedEdge2(T).new(to, from, cost)
end
def sort : self
WeightedEdge2(T).new(*{to, from}.minmax, cost)
end
def to_s(io) : Nil
io << '(' << from << ", " << to << ", " << cost << ')'
end
def inspect(io) : Nil
io << from << "->" << to << '(' << cost << ')'
end
end
struct UnweightedEdge
property to : Int32
def initialize(@to)
end
def initialize(@to, cost)
end
def cost : Int32
1
end
def to_s(io) : Nil
io << to
end
def inspect(io) : Nil
io << "->" << to
end
end
struct UnweightedEdge2
property from : Int32, to : Int32
def initialize(@from, @to)
end
def initialize(@from, @to, cost)
end
def initialize(@from, edge : UnweightedEdge)
@to = edge.to
end
def cost : Int32
1
end
def reverse : self
UnweightedEdge2.new(to, from)
end
def sort : self
UnweightedEdge2.new(*{to, from}.minmax)
end
def to_s(io) : Nil
io << '(' << from << ", " << to << ')'
end
def inspect(io) : Nil
io << from << "->" << to
end
end
describe WeightedEdge do
it "#to, #cost" do
WeightedEdge.new(2, 10i64).to.should eq 2
WeightedEdge.new(2, 10i64).cost.should eq 10i64
end
it "#<=>" do
(WeightedEdge.new(2, 10) <=> WeightedEdge.new(3, 4)).should eq 1
(WeightedEdge.new(2, 10) <=> WeightedEdge.new(2, 11)).should eq -1
(WeightedEdge.new(2, 10) <=> WeightedEdge.new(3, 10)).should eq -1
(WeightedEdge.new(2, 10) <=> WeightedEdge.new(0, 11)).should eq -1
(WeightedEdge.new(2, 10) <=> WeightedEdge.new(2, 10)).should eq 0
end
it "#to_s" do
WeightedEdge.new(2, 3).to_s.should eq "(2, 3)"
end
it "#inspect" do
WeightedEdge.new(2, 3).inspect.should eq "->2(3)"
end
end
describe WeightedEdge2 do
it "#from, #to, #cost" do
WeightedEdge2.new(2, 3, 4).from.should eq 2
WeightedEdge2.new(2, 3, 4).to.should eq 3
WeightedEdge2.new(2, 3, 4).cost.should eq 4
end
it "#<=>" do
(WeightedEdge2.new(2, 42, 10) <=> WeightedEdge2.new(3, 42, 4)).should eq 1
(WeightedEdge2.new(2, 42, 10) <=> WeightedEdge2.new(2, 42, 11)).should eq -1
(WeightedEdge2.new(2, 42, 10) <=> WeightedEdge2.new(3, 42, 10)).should eq -1
(WeightedEdge2.new(2, 42, 10) <=> WeightedEdge2.new(0, 42, 11)).should eq -1
(WeightedEdge2.new(2, 42, 10) <=> WeightedEdge2.new(2, 42, 10)).should eq 0
(WeightedEdge2.new(2, 42, 10) <=> WeightedEdge2.new(2, 43, 10)).should eq -1
end
it "#reverse" do
WeightedEdge2.new(2, 3, 4).reverse.should eq WeightedEdge2.new(3, 2, 4)
end
it "#sort" do
WeightedEdge2.new(2, 3, 4).sort.should eq WeightedEdge2.new(2, 3, 4)
WeightedEdge2.new(3, 2, 4).sort.should eq WeightedEdge2.new(2, 3, 4)
end
it "#to_s" do
WeightedEdge2.new(2, 3, 4).to_s.should eq "(2, 3, 4)"
end
it "inspect" do
WeightedEdge2.new(2, 3, 4).inspect.should eq "2->3(4)"
end
end
describe UnweightedEdge do
it "#to, #cost" do
UnweightedEdge.new(2).to.should eq 2
UnweightedEdge.new(2).cost.should eq 1
end
it "#to_s" do
UnweightedEdge.new(2).to_s.should eq "2"
end
it "inspect" do
UnweightedEdge.new(2).inspect.should eq "->2"
end
end
describe UnweightedEdge2 do
it "#from, #to, #cost" do
UnweightedEdge2.new(2, 3).from.should eq 2
UnweightedEdge2.new(2, 3).to.should eq 3
UnweightedEdge2.new(2, 3).cost.should eq 1
end
it "#reverse" do
UnweightedEdge2.new(2, 3).reverse.should eq UnweightedEdge2.new(3, 2)
end
it "#sort" do
UnweightedEdge2.new(2, 3).sort.should eq UnweightedEdge2.new(2, 3)
UnweightedEdge2.new(3, 2).sort.should eq UnweightedEdge2.new(2, 3)
end
it "#to_s" do
UnweightedEdge2.new(2, 3).to_s.should eq "(2, 3)"
end
it "inspect" do
UnweightedEdge2.new(2, 3).inspect.should eq "2->3"
end
end