xref: /openbsd-src/gnu/usr.bin/perl/ext/XS-APItest/t/boolean-thr.t (revision f2a19305cfc49ea4d1a5feb55cd6c283c6f1e031)
1256a93a4Safresh1#!./perl
2256a93a4Safresh1
3256a93a4Safresh1use strict;
4256a93a4Safresh1use warnings;
5256a93a4Safresh1
6256a93a4Safresh1use Config ();
7256a93a4Safresh1use if !$Config::Config{usethreads}, 'Test::More',
8256a93a4Safresh1    skip_all => "This perl does not support threads";
9256a93a4Safresh1
10256a93a4Safresh1use Test::More;
11256a93a4Safresh1use XS::APItest;
12256a93a4Safresh1
13256a93a4Safresh1use threads;
14256a93a4Safresh1use threads::shared;
15256a93a4Safresh1
16256a93a4Safresh1ok(threads->create( sub { SvIsBOOL($_[0]) }, !!0 )->join,
17256a93a4Safresh1    'value in to thread is bool');
18256a93a4Safresh1
19256a93a4Safresh1ok(SvIsBOOL(threads->create( sub { return !!0 } )->join),
20256a93a4Safresh1    'value out of thread is bool');
21256a93a4Safresh1
22256a93a4Safresh1{
23256a93a4Safresh1    my $var = !!0;
24256a93a4Safresh1    ok(threads->create( sub { SvIsBOOL($var) } )->join,
25256a93a4Safresh1        'variable captured by thread is bool');
26256a93a4Safresh1}
27256a93a4Safresh1
28256a93a4Safresh1{
29256a93a4Safresh1    my $sharedvar :shared = !!0;
30256a93a4Safresh1
31256a93a4Safresh1    ok(SvIsBOOL($sharedvar),
32256a93a4Safresh1        ':shared variable is bool outside');
33256a93a4Safresh1
34256a93a4Safresh1    ok(threads->create( sub { SvIsBOOL($sharedvar) } )->join,
35256a93a4Safresh1        ':shared variable is bool inside thread');
36256a93a4Safresh1}
37256a93a4Safresh1
38*f2a19305Safresh1is(test_bool_internals(), 0, "Bulk test internal bool related APIs");
39*f2a19305Safresh1
40256a93a4Safresh1done_testing;
41