Test-Deep-PairBag というのを作った

soh335/Test-Deep-PairBag · GitHub

test::deep::bag では

cmp_deeply(
    [1,2,3,4,1],
    bag(3,2,1,4,1)
);

みたいな事が出来て、並びは関係ないけど、要素は全てあるというテストが書ける。
ところで perl では、url query parameter とか header は

[ foo => 1, bar => 2, foo => 2 ]

のように書くことが多いのでこれの foo => 1 を一要素にして bag な match が出来るといいなって思ったので作った。

cmp_deeply(
    [ foo => 1, bar => 2, foo => 3 ],
    pair_bag(foo => 1, foo => 3, bar => 2)
);

こんな感じで書ける。中では

[ foo => 1, bar => 2, foo => 3 ]

[ [foo =>1], [bar=>2], [foo=>3] ]

に変換して test::deep::bag に投げるだけのシンプルな感じになってます。

少し手元で実践投入してみて問題ないようだったら cpan にあげる予定。