Add the following packages libalgorithm-diff-perl libspiffy-perl libtext-diff-perl...
[pkg-perl] / deb-src / libtext-diff-perl / libtext-diff-perl-0.35 / t / ext_format.t
1 #!/usr/local/bin/perl -w
2
3 use strict ;
4 use Test ;
5 use Text::Diff ;
6 use Algorithm::Diff qw( traverse_sequences ) ;
7
8 my @A = map "$_\n", qw( 1 a 2 b 3 ) ;
9 my @B = map "$_\n", qw( 1 A 2 B 3 ) ;
10
11 ## This tests both that we can overload all 5 methods and that all 5
12 ## methods are called by diff() (and in the right order :)
13
14 my $f = "My::Diff::Format" ;
15 my $diff = diff \@A, \@B, { CONTEXT => 0, STYLE => $f } ;
16
17 my @tests = (
18 sub {
19     if ( $diff =~ /(^${f}::.*){8}/sm ) {
20         ok 1 ;
21     }
22     else {
23         ok $diff, "8 lines of output" ;
24     }
25 },
26
27 sub {
28     if ( $diff =~ m{
29             file_header.*
30             hunk_header.*
31             hunk.*
32             hunk_footer.*
33             hunk_header.*
34             hunk.*
35             hunk_footer.*
36             file_footer
37         }sx
38     ) {
39         ok 1 ;
40     }
41     else {
42         ok $diff, "proper ordering (see test source)" ;
43     }
44 },
45
46 ) ;
47
48 plan tests => scalar @tests ;
49
50 $_->() for @tests ;
51
52 package My::Diff::Format ;
53
54 use Data::Dumper ;
55
56 sub _dump {
57     my $prefix = (caller(1))[3] ;
58     local $Data::Dumper::Indent = 0 ;
59     local $Data::Dumper::Terse  = 1 ;
60
61     join( "",
62         map { s/^/$prefix: /mg ; $_ ; } join ", ", map {
63             my $s = ref $_ ? Dumper $_ : $_ ;
64             $s =~ s/([\000-\026])/sprintf "\0x%02x", ord $1/ge ;
65             $s ;
66         } @_
67     ) . "\n" ;
68 }
69
70 sub file_header { &_dump }
71 sub hunk_header { &_dump }
72 sub hunk        { &_dump }
73 sub hunk_footer { &_dump }
74 sub file_footer { &_dump }