mirror of
https://gitea.invidious.io/iv-org/shard-athena-negotiation.git
synced 2024-08-15 00:53:23 +00:00
44 lines
1.5 KiB
Crystal
44 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
|