use strict; BEGIN { require Time::HiRes; unless(&Time::HiRes::d_nanosleep) { require Test::More; Test::More::plan(skip_all => "no nanosleep()"); } } use Test::More 0.82 tests => 3; 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 note "slept too long, $one $two $three"; SKIP: { skip "no gettimeofday", 1 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; ok $d > 0.4 && $d < 0.9 or note "slept $d secs $f to $f2"; } 1;