mirror of
https://gitea.invidious.io/iv-org/shard-athena-negotiation.git
synced 2024-08-15 00:53:23 +00:00
43 lines
1.5 KiB
Crystal
43 lines
1.5 KiB
Crystal
require "./spec_helper"
|
|
|
|
struct AcceptMatchTest < ASPEC::TestCase
|
|
@[DataProvider("compare_data_provider")]
|
|
def test_compare(match1 : ANG::AcceptMatch, match2 : ANG::AcceptMatch, expected : Int32) : Nil
|
|
(match1 <=> match2).should eq expected
|
|
end
|
|
|
|
def compare_data_provider : Tuple
|
|
{
|
|
{ANG::AcceptMatch.new(1.0, 110, 1), ANG::AcceptMatch.new(1.0, 111, 1), 0},
|
|
{ANG::AcceptMatch.new(0.1, 10, 1), ANG::AcceptMatch.new(0.1, 10, 2), -1},
|
|
{ANG::AcceptMatch.new(0.5, 110, 5), ANG::AcceptMatch.new(0.5, 11, 4), 1},
|
|
{ANG::AcceptMatch.new(0.4, 110, 1), ANG::AcceptMatch.new(0.6, 111, 3), 1},
|
|
{ANG::AcceptMatch.new(0.6, 110, 1), ANG::AcceptMatch.new(0.4, 111, 3), -1},
|
|
}
|
|
end
|
|
|
|
@[DataProvider("reduce_data_provider")]
|
|
def test_reduce(matches : Hash(Int32, ANG::AcceptMatch), match : ANG::AcceptMatch, expected : Hash(Int32, ANG::AcceptMatch)) : Nil
|
|
ANG::AcceptMatch.reduce(matches, match).should eq expected
|
|
end
|
|
|
|
def reduce_data_provider : Tuple
|
|
{
|
|
{
|
|
{1 => ANG::AcceptMatch.new(1.0, 10, 1)},
|
|
ANG::AcceptMatch.new(0.5, 111, 1),
|
|
{1 => ANG::AcceptMatch.new(0.5, 111, 1)},
|
|
},
|
|
{
|
|
{1 => ANG::AcceptMatch.new(1.0, 110, 1)},
|
|
ANG::AcceptMatch.new(0.5, 11, 1),
|
|
{1 => ANG::AcceptMatch.new(1.0, 110, 1)},
|
|
},
|
|
{
|
|
{0 => ANG::AcceptMatch.new(1.0, 10, 1)},
|
|
ANG::AcceptMatch.new(0.5, 111, 1),
|
|
{0 => ANG::AcceptMatch.new(1.0, 10, 1), 1 => ANG::AcceptMatch.new(0.5, 111, 1)},
|
|
},
|
|
}
|
|
end
|
|
end
|