diff options
author | Lorry Tar Creator <lorry-tar-importer@lorry> | 2015-06-09 20:08:11 +0000 |
---|---|---|
committer | Lorry Tar Creator <lorry-tar-importer@lorry> | 2015-06-09 20:08:11 +0000 |
commit | e4bf16d2fde5df6eadd91475e3dcca56b87b1eb0 (patch) | |
tree | 2e5c28acc5e330429c166c5e26afb1025754ea4b /t | |
download | Encode-Locale-tarball-e4bf16d2fde5df6eadd91475e3dcca56b87b1eb0.tar.gz |
Encode-Locale-1.05HEADEncode-Locale-1.05master
Diffstat (limited to 't')
-rw-r--r-- | t/alias.t | 22 | ||||
-rw-r--r-- | t/arg.t | 45 | ||||
-rw-r--r-- | t/env.t | 25 | ||||
-rw-r--r-- | t/tain.t | 19 | ||||
-rw-r--r-- | t/warn_once.t | 20 |
5 files changed, 131 insertions, 0 deletions
diff --git a/t/alias.t b/t/alias.t new file mode 100644 index 0000000..c18d027 --- /dev/null +++ b/t/alias.t @@ -0,0 +1,22 @@ +#!perl -w + +use strict; +use warnings; +use Test::More tests => 8; + +use Encode::Locale; +use Encode qw(find_encoding); + +sub cmp_encoding { + my ($arg, $var) = @_; + my $lcarg = lc $arg; + is find_encoding($lcarg), find_encoding(${ $Encode::Locale::{$var} }), + "$lcarg eq $var"; + is find_encoding($arg), find_encoding(${ $Encode::Locale::{$var} }), + "$arg eq $var"; +} + +cmp_encoding 'Locale', 'ENCODING_LOCALE'; +cmp_encoding 'Locale_FS', 'ENCODING_LOCALE_FS'; +cmp_encoding 'Console_IN', 'ENCODING_CONSOLE_IN'; +cmp_encoding 'Console_OUT', 'ENCODING_CONSOLE_OUT'; @@ -0,0 +1,45 @@ +#!perl -w + +use strict; +use warnings; +use Test::More; + +use Encode::Locale qw($ENCODING_LOCALE decode_argv); +use Encode; +use utf8; + +diag "ENCODING_LOCALE is $ENCODING_LOCALE\n"; +my @chars = qw(funny chars š ™); +my @octets = map { Encode::encode(locale => $_) } @chars; +@ARGV = @octets; + +plan tests => scalar(@ARGV); + +decode_argv(); + +TODO: { + local $TODO = "ARGV decoding"; + for (my $i = 0; $i < @ARGV; $i++) { + is $chars[$i], $ARGV[$i], + "chars(" . prettify($chars[$i]) . + ") octets(" . prettify($octets[$i]) . + ") argv(" . prettify($ARGV[$i]) . ")"; + } +} + +sub prettify { + my $text = shift; + my @r; + for (split(//, $text)) { + if (ord() > 32 && ord() < 128) { + push @r, $_; + } + elsif (ord() < 256) { + push @r, sprintf "\\x%02X", ord(); + } + else { + push @r, sprintf "\\x{%04X}", ord(); + } + } + join '', @r; +} @@ -0,0 +1,25 @@ +#!perl -w + +use strict; +use warnings; +use Test::More tests => 13; + +use Encode::Locale qw(env); + +$ENV{foo} = "bar"; +is env("foo"), "bar", 'env read'; +is env("foo", "baz"), "bar", 'env write retval old value'; +is env("foo"), "baz", 'env write worked'; +is $ENV{foo}, "baz", 'env affected %ENV'; +is env("foo", undef), "baz", 'env write retval old value'; +is env("foo"), undef, 'env write worked'; +ok !exists $ENV{foo}, 'env write undef deletes from %ENV'; + +Encode::Locale::reinit("cp1252"); +$ENV{"m\xf6ney"} = "\x80uro"; +is env("m\xf6ney", "\x{20AC}"), "\x{20AC}uro", 'env write retval encoded'; +is env("m\xf6ney"), "\x{20AC}", 'env write worked'; +is $ENV{"m\xf6ney"}, "\x80", 'env affected %ENV'; +is env("\x{20AC}", 1), undef, 'env write retval old value'; +is env("\x{20AC}"), 1, 'env write worked'; +is $ENV{"\x80"}, 1, 'env affected %ENV'; diff --git a/t/tain.t b/t/tain.t new file mode 100644 index 0000000..f38cacf --- /dev/null +++ b/t/tain.t @@ -0,0 +1,19 @@ +#!perl -Tw + +use strict; +use warnings; + +# taint mode testing as seen in WWW::Mechanize + +use Test::More tests => 1; +my @warns; +BEGIN { + $SIG{__WARN__} = sub { push @warns, @_ }; +} +BEGIN { + delete @ENV{qw( PATH IFS CDPATH ENV BASH_ENV )}; # Placates taint-unsafe Cwd.pm in 5.6.1 +} + +require Encode::Locale; + +is "@warns", "", 'no warnings'; diff --git a/t/warn_once.t b/t/warn_once.t new file mode 100644 index 0000000..e2dc61c --- /dev/null +++ b/t/warn_once.t @@ -0,0 +1,20 @@ +#!perl -w + +use strict; +use warnings; + +use Test::More tests => 2; +my @warns; +BEGIN { + $SIG{__WARN__} = sub { push @warns, @_ }; +} + +use Encode::Locale; + +BEGIN { + use Encode; + my $a = encode("UTF-8", "foo\xFF"); + ok $a, "foo\xC3\xBF"; +} + +is "@warns", "", 'no warnings'; |