My first comment is that tests should be as dumb
as possible. This also translates to as superficial and verbose as possible. For example, the use of map
in the is_deeply
tells me that this should probably be unrolled into a series of is
. The reason for this is for ease of test maintenace. Tests are also excellent synopses of what they're testing. I often look at tests to see exactly how the module I want to use is intended to function and some clues on how it operates internally. In other words, tests can be used for additional and indepth documentation for the author and users a like.
Another couple of things: that you don't have to use done_testing and set tests => "14";. If you unroll the is_deeply and base the number of tests on the number of entries in your input files, then go with just the done_testing. This is most useful when the number of tests are based on input length that you may update at some point. Finally, I don't see anything on an initial pass that requires you include use v5.10.0;.
Overall, I think it's great. And it's even greater that you're actually writing a test! :)