Commit | Line | Data |
---|---|---|
7d789282 FC |
1 | #!./perl |
2 | ||
3 | BEGIN { | |
4 | chdir 't'; | |
5 | @INC = '../lib'; | |
6 | require './test.pl'; | |
7 | } | |
8 | ||
9 | plan(tests => 8); | |
10 | ||
11 | { | |
12 | local $SIG{__WARN__} = sub {}; | |
13 | eval "evalbytes 'foo'"; | |
14 | like $@, qr/syntax error/, 'evalbytes outside feature scope'; | |
15 | } | |
16 | ||
17 | # We enable unicode_eval just to test that it does not interfere. | |
18 | use feature 'evalbytes', 'unicode_eval'; | |
19 | ||
20 | is evalbytes("1+7"), 8, 'evalbytes basic sanity check'; | |
21 | ||
547ae129 | 22 | my $code = qq('\xff\xfe'); |
7d789282 FC |
23 | is evalbytes($code), "\xff\xfe", 'evalbytes on extra-ASCII bytes'; |
24 | chop((my $upcode = $code) .= chr 256); | |
25 | is evalbytes($upcode), "\xff\xfe", 'evalbytes on upgraded extra-ASCII'; | |
26 | { | |
27 | use utf8; | |
28 | is evalbytes($code), "\xff\xfe", 'evalbytes ignores outer utf8 pragma'; | |
29 | } | |
30 | is evalbytes "use utf8; '\xc4\x80'", chr 256, 'use utf8 within evalbytes'; | |
31 | chop($upcode = "use utf8; '\xc4\x80'" . chr 256); | |
32 | is evalbytes $upcode, chr 256, 'use utf8 within evalbytes on utf8 string'; | |
33 | eval { evalbytes chr 256 }; | |
34 | like $@, qr/Wide character/, 'evalbytes croaks on non-bytes'; |