xref: /openbsd/gnu/usr.bin/perl/ext/B/t/perlstring.t (revision de8cc8ed)
1#!./perl
2
3BEGIN {
4    unshift @INC, 't';
5    require Config;
6    if (($Config::Config{'extensions'} !~ /\bB\b/) ){
7        print "1..0 # Skip -- Perl configured without B module\n";
8        exit 0;
9    }
10}
11
12$|  = 1;
13use warnings;
14use strict;
15BEGIN  {
16    eval { require threads; threads->import; }
17}
18use Test::More;
19
20BEGIN { use_ok( 'B' ); }
21
22for my $do_utf8 (""," utf8") {
23    my $max = $do_utf8 ? 1024  : 255;
24    my @bad;
25    for my $cp ( 0 .. $max ) {
26        my $char= chr($cp);
27        utf8::upgrade($char);
28        my $escaped= B::perlstring($char);
29        my $evalled= eval $escaped;
30        push @bad, [ $cp, $evalled, $char, $escaped ] if $evalled ne $char;
31    }
32    is(0+@bad, 0, "Check if any$do_utf8 codepoints fail to round trip through B::perlstring()");
33    if (@bad) {
34        foreach my $tuple (@bad) {
35            my ( $cp, $evalled, $char, $escaped ) = @$tuple;
36            is($evalled, $char, "check if B::perlstring of$do_utf8 codepoint $cp round trips ($escaped)");
37        }
38    }
39}
40
41done_testing();
42