xref: /openbsd-src/gnu/usr.bin/perl/dist/Carp/t/arg_string.t (revision f2da64fbbbf1b03f09f390ab01267c93dfd77c4c)
1use warnings;
2use strict;
3
4use Test::More tests => 32;
5
6use Carp ();
7
8sub lmm { Carp::longmess("x") }
9sub lm { lmm() }
10
11like lm(3), qr/main::lm\(3\)/;
12like lm(substr("3\x{2603}", 0, 1)), qr/main::lm\(3\)/;
13like lm(-3), qr/main::lm\(-3\)/;
14like lm(-3.5), qr/main::lm\(-3\.5\)/;
15like lm(-3.5e100), qr/main::lm\(-3\.5[eE]\+?100\)/;
16like lm(""), qr/main::lm\(""\)/;
17like lm("foo"), qr/main::lm\("foo"\)/;
18like lm("a\$b\@c\\d\"e"), qr/main::lm\("a\\\$b\\\@c\\\\d\\\"e"\)/;
19like lm("a\nb"), qr/main::lm\("a\\x\{a\}b"\)/;
20like lm("a\x{666}b"), qr/main::lm\("a\\x\{666\}b"\)/;
21like lm("\x{666}b"), qr/main::lm\("\\x\{666\}b"\)/;
22like lm("a\x{666}"), qr/main::lm\("a\\x\{666\}"\)/;
23like lm("L\xe9on"), qr/main::lm\("L\\x\{e9\}on"\)/;
24like lm("L\xe9on \x{2603} !"), qr/main::lm\("L\\x\{e9\}on \\x\{2603\} !"\)/;
25
26$Carp::MaxArgLen = 5;
27foreach my $arg ("foo bar baz", "foo bar ba", "foo bar b", "foo bar ", "foo bar", "foo ba") {
28    like lm($arg), qr/main::lm\("fo"\.\.\.\)/;
29}
30foreach my $arg ("foo b", "foo ", "foo", "fo", "f", "") {
31    like lm($arg), qr/main::lm\("\Q$arg\E"\)/;
32}
33like lm("L\xe9on \x{2603} !"), qr/main::lm\("L\\x\{e9\}"\.\.\.\)/;
34like lm("L\xe9on\x{2603}"), qr/main::lm\("L\\x\{e9\}on\\x\{2603\}"\)/;
35like lm("foo\x{2603}"), qr/main::lm\("foo\\x\{2603\}"\)/;
36
37$Carp::MaxArgLen = 0;
38foreach my $arg ("wibble." x 20, "foo bar baz") {
39    like lm($arg), qr/main::lm\("\Q$arg\E"\)/;
40}
41like lm("L\xe9on\x{2603}"), qr/main::lm\("L\\x\{e9\}on\\x\{2603\}"\)/;
42
431;
44