The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use warnings; use strict;
use Test::More tests => 56;

BEGIN { 
require_ok("IO::File");
use_ok("File::Temp", "tempfile"); 
require_ok("Object::Import");
}

my(my $TT, my $tn) = tempfile(UNLINK => 1);
ok($tn, "timefile name");
ok(binmode($TT));

SKIP: {
ok(open(TI, "+>", $tn), "open ti") or
	skip("could not open ti ($tn): $!", 25);
ok(binmode(TI), "binmode ti");
bless(*TI{IO}, IO::File::);

import Object::Import *TI, prefix => "ti";

ok(defined(&$_), "def\&$_") for qw"tiprint tiseek titell tigetline ticlose";
ok(tiprint("hello\nworld\n"), "&tiprint");
is(titell(), 12, "&titell");
ok(tiseek(0, 0), "&tiseek");
is(tigetline(), "hello\n", "&tigetline");

import Object::Import \*TI, prefix => "tj";

ok(defined(&$_), "def\&$_") for qw"tjprint tjseek tjtell tjgetline tjclose";
ok(tjseek(0, 0), "&tjseek");
is(tjgetline(), "hello\n", "&tjgetline");

import Object::Import *TI{IO}, prefix => "th";

ok(defined(&$_), "def\&$_") for qw"thprint thseek thtell thgetline thclose";
ok(thseek(0, 0), "&thseek");
is(thgetline(), "hello\n", "&thgetline");

ok(ticlose(), "&ticlose");
}

SKIP: {
ok(open(my $TL, "+>", $tn), "open tl") or
	skip("could not open tl ($tn): $!", 10);
ok(binmode($TL), "binmode tl");
bless(*$TL{IO}, IO::File::);

import Object::Import $TL, prefix => "tl";

ok(defined(&$_), "def\&$_") for qw"tlprint tlseek tltell tlgetline tlclose";
ok(tlprint("ahoi\nworld\n"), "&tlprint");
is(tltell(), 11, "&tltell");
ok(tlseek(0, 0), "&tlseek");
is(tlgetline(), "ahoi\n", "&tlgetline");

import Object::Import *$TL{IO}, prefix => "tv";

ok(defined(&$_), "def\&$_") for qw"tvprint tvseek tvtell tvgetline tvclose";
ok(tvseek(0, 0), "&tvseek");
is(tvgetline(), "ahoi\n", "&tvgetline");

ok(tlclose(), "&tlclose");
}

import Object::Import $TT, prefix => "tt";

ok(defined(&$_), "def\&$_") for qw"ttprint ttgetline ttclose";
ok(seek($TT, 0, 0), "seek");
is(ttgetline(), "ahoi\n", "&ttgetline");
ok(ttclose(), "&ttclose");

__END__