The Perl Toolchain Summit 2025 Needs You: You can help 🙏 Learn more

#!perl
use strict;
use Test::More tests => 5;
use Algorithm::Diff::Callback 'diff_arrays';
my @old = qw( john jim james jackie jarule );
my @new = qw( john jim james jojo jackie );
diff_arrays(
\@old, \@new,
deleted => sub {
my $val = shift;
is( $val, 'jarule', 'Goodbye jarule!' );
},
added => sub {
my $val = shift;
is( $val, 'jojo', 'Hello jojo!');
},
);
my $empty_list = 0;
diff_arrays(
[], [],
added => sub { $empty_list++ }, deleted => sub { $empty_list++ },
);
cmp_ok( $empty_list, '==', 0, 'Empty list does not get called' );
my $no_change = 0;
diff_arrays(
\@old, \@old,
added => sub { $no_change++ }, deleted => sub { $no_change++ },
);
cmp_ok( $no_change, '==', 0, 'No change does not get called' );
my $new_count = 0;
diff_arrays(
[],
\@new,
deleted => sub { $new_count-- }, added => sub { $new_count++ },
);
cmp_ok( $new_count, '==', scalar @new, 'New from scratch' );