#!./perl
BEGIN {
chdir
't'
if
-d
't'
;
require
'./test.pl'
;
set_up_inc(
'../lib'
);
require
'./charset_tools.pl'
;
}
plan(
tests
=> 9);
{
local
$SIG
{__WARN__} =
sub
{};
eval
"evalbytes 'foo'"
;
like $@,
qr/syntax error/
,
'evalbytes outside feature scope'
;
}
use
feature
'evalbytes'
,
'unicode_eval'
;
is evalbytes(
"1+7"
), 8,
'evalbytes basic sanity check'
;
my
$code
=
qq('\xff\xfe')
;
is evalbytes(
$code
),
"\xff\xfe"
,
'evalbytes on extra-ASCII bytes'
;
chop
((
my
$upcode
=
$code
) .=
chr
256);
is evalbytes(
$upcode
),
"\xff\xfe"
,
'evalbytes on upgraded extra-ASCII'
;
{
is evalbytes(
$code
),
"\xff\xfe"
,
'evalbytes ignores outer utf8 pragma'
;
}
my
$U_100
= byte_utf8a_to_utf8n(
"\xc4\x80"
);
is evalbytes
"use utf8; $U_100"
,
chr
256,
'use utf8 within evalbytes'
;
chop
(
$upcode
=
"use utf8; $U_100"
.
chr
256);
is evalbytes
$upcode
,
chr
256,
'use utf8 within evalbytes on utf8 string'
;
eval
{ evalbytes
chr
256 };
like $@,
qr/Wide character/
,
'evalbytes croaks on non-bytes'
;
eval
'evalbytes S'
;
ok 1,
'[RT #129196] evalbytes S should not segfault'
;