use lib 't', 'lib';
use strict;
use warnings;
use Test::More;
eval "use Encode";
my $enc = ! $@;
use Spoon::CGI;
use URI::Escape;
plan tests => 10;
{
package Test1;
use Spoon::CGI -base;
cgi 'param1';
cgi 'param2' => '-utf8';
cgi 'trimmed' => '-trim';
cgi 'nl' => '-newlines';
}
$ENV{REQUEST_METHOD} = 'GET';
{
$ENV{QUERY_STRING} = "param1=2;foo=bar";
my $test1 = Test1->new;
SKIP: {
skip "Encode not installed", 1 unless($enc);
ok( Encode::is_utf8($test1->param1), 'param1 is marked as utf8' );
}
is( $test1->param1, 2, 'param1 value is 2' );
}
{
CGI->_reset_globals;
$ENV{QUERY_STRING} = 'param1=%E1%9A%A0%E1%9B%87%E1%9A%BB;foo=bar';
my $test1 = Test1->new;
SKIP: {
skip "Encode not installed", 1 unless($enc);
ok( Encode::is_utf8($test1->param1), 'param1 is marked as utf8' );
}
is( $test1->param1, "\x{16A0}\x{16C7}\x{16BB}",
'param1 value is \x{16A0}\x{16C7}\x{16BB}' );
}
{
CGI->_reset_globals;
$ENV{QUERY_STRING} = 'param2=%E1%9A%A0%E1%9B%87%E1%9A%BB;foo=bar';
my $test1 = Test1->new;
SKIP: {
skip "Encode not installed", 1 unless($enc);
ok( Encode::is_utf8($test1->param2), 'param2 is marked as utf8' );
}
is( $test1->param2, "\x{16A0}\x{16C7}\x{16BB}",
'param2 value is \x{16A0}\x{16C7}\x{16BB}' );
}
{
CGI->_reset_globals;
$ENV{QUERY_STRING} = 'trimmed=%20%20trim%20me%20%20;foo=bar';
my $test1 = Test1->new;
SKIP: {
skip "Encode not installed", 1 unless($enc);
ok( Encode::is_utf8($test1->trimmed), 'trimmed is marked as utf8' );
}
is( $test1->trimmed, "trim me",
'trimmed value is "trim me"' );
}
{
CGI->_reset_globals;
$ENV{QUERY_STRING} = 'nl=line1%0d%0aline2%0dline3;foo=bar';
my $test1 = Test1->new;
SKIP: {
skip "Encode not installed", 1 unless($enc);
ok( Encode::is_utf8($test1->nl), 'nl is marked as utf8' );
}
is( $test1->nl, "line1\nline2\nline3\n",
'nl only contains unix newlines' );
}