Help language development. Donate to The Perl Foundation
Test complex data structures and output the differences between them in diagnostics. This is helpful for spotting minor changes over a large dataset.
use Test; use Test::Differences; eq_or_diff $got, "a\nb\nc\n", "testing strings"; eq_or_diff @got, [{foo => <a b c>}, 1, Nil], "testing compex structure";
When the code you're testing returns multiple lines, records or data
structures and they're just plain wrong, an equivalent to the Unix
C
# Failed test 'Differences in text' # +---+----------------+----------------+ # | Ln|Got |Expected | # +---+----------------+----------------+ # | 0|this is line 1 |this is line 1 | # * 1|this is line 2 |this is line b * # | 2|this is line 3 |this is line 3 | # +---+----------------+----------------+ not ok 1 - Differences in text # # Failed test 'Differences in whitespace' # +---+--------------+--------------+ # | Ln|Got |Expected | # +---+--------------+--------------+ # | 0| indented | indented | # * 1|indented |indented * # | 2| indented | indented | # +---+--------------+--------------+ not ok 2 - Differences in whitespace # # Failed test 'Differences in structure' # +---+-----------------------------------+---+---------------------------+ # | Ln|Got | Ln|Expected | # +---+-----------------------------------+---+---------------------------+ # * 0|{ * 0|[ * # * 1|ITEM => "Dry humourless message", * 1|"ITEM", * # * 2|} * 2|"Dry humourless message", * # | | * 3|] * # +---+-----------------------------------+---+---------------------------+ not ok 3 - Differences in structure # # You failed 3 tests of 3
eq_or_diff() compares two strings or (limited) data structures and either emits an ok indication or a side-by-side diff. Test::Differences is designed to be used with Test.
eq_or_diff $got, $want, $test-title, OutputStyle :output-style = Table, :context-lines = 5, :dump-overrides => {};
output-style
may be any OutputStyle supported by Text::Diff.context-lines
is the number of lines above/below within the formatted output around
the change to present.dump-overrides
is a set of overrides to default Data::Dump
styling.Copyright Barrie Slaymaker, Curtis "Ovid" Poe, and David Cantrell.
Ported, with non-trivial restructuring, to Raku by Rod Taylor.
You can use and distribute this module under the terms of the The Artistic License 2.0. See the LICENSE file included in this distribution for complete details.