This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
aef9db6163c3704e2a30f78c576457a27d66bdf6
[perl5.git] / dist / Time-HiRes / t / nanosleep.t
1 use strict;
2
3 BEGIN {
4     require Time::HiRes;
5     unless(&Time::HiRes::d_nanosleep) {
6         require Test::More;
7         Test::More::plan(skip_all => "no nanosleep()");
8     }
9 }
10
11 use Test::More 0.82 tests => 3;
12 use t::Watchdog;
13
14 eval { Time::HiRes::nanosleep(-5) };
15 like $@, qr/::nanosleep\(-5\): negative time not invented yet/,
16         "negative time error";
17
18 my $one = CORE::time;
19 Time::HiRes::nanosleep(10_000_000);
20 my $two = CORE::time;
21 Time::HiRes::nanosleep(10_000_000);
22 my $three = CORE::time;
23 ok $one == $two || $two == $three
24     or note "slept too long, $one $two $three";
25
26 SKIP: {
27     skip "no gettimeofday", 1 unless &Time::HiRes::d_gettimeofday;
28     my $f = Time::HiRes::time();
29     Time::HiRes::nanosleep(500_000_000);
30     my $f2 = Time::HiRes::time();
31     my $d = $f2 - $f;
32     ok $d > 0.4 && $d < 0.9 or note "slept $d secs $f to $f2";
33 }
34
35 1;