test invalid prototype detection
Lukas Mai [Wed, 18 Jul 2012 18:59:04 +0000 (20:59 +0200)]
t/prototype.t [new file with mode: 0644]

diff --git a/t/prototype.t b/t/prototype.t
new file mode 100644 (file)
index 0000000..35b6925
--- /dev/null
@@ -0,0 +1,48 @@
+#!perl
+use Test::More tests => 27;
+
+use warnings FATAL => 'all';
+use strict;
+
+use Function::Parameters;
+
+is eval 'fun :([) {}', undef;
+like $@, qr/Illegal character in prototype/;
+
+is eval 'fun :([) {}', undef;
+like $@, qr/Illegal character in prototype/;
+
+is eval 'fun :(][[[[[[) {}', undef;
+like $@, qr/Illegal character in prototype/;
+
+is eval 'fun :(\;) {}', undef;
+like $@, qr/Illegal character after '\\' in prototype/;
+
+is eval 'fun :(\[_;@]) {}', undef;
+like $@, qr/Illegal character after '\\' in prototype/;
+
+is eval 'fun :(\+) {}', undef;
+like $@, qr/Illegal character after '\\' in prototype/;
+
+is eval 'fun :(\\\\) {}', undef;
+like $@, qr/Illegal character after '\\' in prototype/;
+
+is eval 'fun :([$]) {}', undef;
+like $@, qr/Illegal character in prototype/;
+
+is eval 'fun :(\[_$]) {}', undef;
+like $@, qr/Illegal character after '\\' in prototype/;
+
+{
+       no warnings qw(illegalproto);
+
+       ok eval 'fun :([) {}';
+       ok eval 'fun :([) {}';
+       ok eval 'fun :(][[[[[[) {}';
+       ok eval 'fun :(\;) {}';
+       ok eval 'fun :(\[_;@]) {}';
+       ok eval 'fun :(\+) {}';
+       ok eval 'fun :(\\\\) {}';
+       ok eval 'fun :([$]) {}';
+       ok eval 'fun :(\[_$]) {}';
+}