use strict; use warnings;
my $t; use lib ($t = -e 't' ? 't' : 'test');
use Test::More tests => 12;
use IO::All;
use IO_All_Test;

io("$t/input.t") > my $contents;
test_file_contents($contents, "$t/input.t");

$contents < io "$t/input.t";
test_file_contents($contents, "$t/input.t");

my $io = io "$t/input.t";
$contents = $$io;
test_file_contents($contents, "$t/input.t");

$contents = $io->slurp;
test_file_contents($contents, "$t/input.t");

$contents = $io->scalar;
test_file_contents($contents, "$t/input.t");

$contents = join '', $io->getlines;
test_file_contents($contents, "$t/input.t");

SKIP: {
    eval {require Tie::File};
    skip "requires Tie::File", 2	if $@;

    $io->rdonly;
    $contents = join '', map "$_\n", @$io;
    test_file_contents($contents, "$t/input.t");
    $io->close;

    $io->tie;
    $contents = join '', <$io>;
    test_file_contents($contents, "$t/input.t");
}

my @lines = io("$t/input.t")->slurp;
ok(@lines > 36);
test_file_contents(join('', @lines), "$t/input.t");

my $old_contents = $contents;
$contents << io("$t/input.t");
is($contents, $old_contents . $old_contents);

is(io("$t/input.t") >> $contents, ($old_contents x 3));

del_output_dir();
