use strict;
BEGIN {
require Time::HiRes;
unless(&Time::HiRes::d_nanosleep) {
require Test::More;
Test::More::plan(skip_all => "no nanosleep()");
}
}
use Test::More tests => 4;
BEGIN { push @INC, '.' }
use t::Watchdog;
eval { Time::HiRes::nanosleep(-5) };
like $@, qr/::nanosleep\(-5\): negative time not invented yet/,
"negative time error";
my $one = CORE::time;
Time::HiRes::nanosleep(10_000_000);
my $two = CORE::time;
Time::HiRes::nanosleep(10_000_000);
my $three = CORE::time;
ok $one == $two || $two == $three
or print("# slept too long, $one $two $three\n");
SKIP: {
skip "no gettimeofday", 2 unless &Time::HiRes::d_gettimeofday;
my $f = Time::HiRes::time();
Time::HiRes::nanosleep(500_000_000);
my $f2 = Time::HiRes::time();
my $d = $f2 - $f;
cmp_ok $d, '>', 0.4, "nanosleep for more than 0.4 sec";
skip "flapping test - more than 0.9 sec could be necessary...", 1 if $ENV{CI};
cmp_ok $d, '<', 0.9 or diag("# slept $d secs $f to $f2\n");
}
1;