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