Algorithm-Diff

 view release on metacpan or  search on metacpan

t/oo.t  view on Meta::CPAN

# Before `make install' is performed this script should be runnable with
# `make test'. After `make install' it should work as `perl oo.t'
use strict;
BEGIN { $^W++; }
use lib qw( blib lib );
use Algorithm::Diff qw( compact_diff );
use Data::Dumper;
use Test qw( plan ok $ntest );

BEGIN
{
    $|++;
    plan( tests => 969 );
    $SIG{__DIE__} = sub # breakpoint on die
    {
        $DB::single = 1
            if  ! $^S;
        die @_;
    };
    $SIG{__WARN__} = sub # breakpoint on warn
    {
        $DB::single = 1;
        warn @_;
    };
}

sub Ok($$) { @_= reverse @_; goto &ok }

my( $first, $a, $b, $hunks );
for my $pair (
    [ "a b c   e  h j   l m n p",
      "  b c d e f  j k l m    r s t", 9 ],
    [ "", "", 0 ],
    [ "a b c", "", 1 ],
    [ "", "a b c d", 1 ],
    [ "a b", "x y z", 1 ],
    [ "    c  e   h j   l m n p r",
      "a b c d f g  j k l m      s t", 7 ],
    [ "a b c d",
      "a b c d", 1 ],
    [ "a     d",
      "a b c d", 3 ],
    [ "a b c d",
      "a     d", 3 ],
    [ "a b c d",
      "  b c  ", 3 ],
    [ "  b c  ",
      "a b c d", 3 ],
) {
    $first= $ntest;
    ( $a, $b, $hunks )= @$pair;
    my @a = split ' ', $a;
    my @b = split ' ', $b;

    my $d = Algorithm::Diff->new( \@a, \@b );

    if(  @ARGV  ) {
        print "1: $a$/2: $b$/";
        while( $d->Next() ) {
            printf "%10s %s %s$/",
                join(' ',$d->Items(1)),
                $d->Same() ? '=' : '|',
                join(' ',$d->Items(2));
        }
    }



( run in 0.352 second using v1.01-cache-2.11-cpan-796a6f069b2 )