#!/usr/local/bin/perl -w use strict ; use Test ; use Text::Diff ; my @A = map "$_\n", qw( 1 2 3 4 ) ; my @B = map "$_\n", qw( 1 2 3 5 ) ; sub _d($) { diff \@A, \@B, { OUTPUT => shift } } sub slurp { open SLURP, "<" . shift or die $! ; return join "", } my $expected = _d undef ; my @tests = ( sub { ok $expected =~ tr/\n// }, sub { my $o ; _d sub { $o .= shift } ; ok $o, $expected }, sub { my @o ; _d \@o ; ok join( "", @o ), $expected }, sub { open F, ">output.t.foo" or die $! ; _d \*F ; close F or die $! ; ok slurp "output.t.foo", $expected ; unlink "output.t.foo" or warn $! ; }, sub { require IO::File ; my $fh = IO::File->new( ">output.t.foo" ) ; _d $fh ; $fh = undef ; ok slurp "output.t.foo", $expected ; unlink "output.t.foo" or warn $! ; }, sub { ok 0 < index( diff( \"\n", \"", { STYLE => "Table" } ), "\\n" ) }, # test for bug reported by Ilya Martynov sub { ok diff( \"", \"" ), "" }, sub { ok diff( \"A", \"A" ), "" }, ) ; plan tests => scalar @tests ; $_->() for @tests ;