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 にあげる予定。