-#!/usr/bin/perl
-
use strict;
use warnings;
use File::Spec::Functions;
my $dir = tempdir( CLEANUP => 1 );
-BEGIN {
- eval "use JSON::Any";
- plan skip_all => "JSON::Any is required for this test" if $@;
- # NOTE:
- # this is because JSON::XS is
- # the only one which really gets
- # utf8 correct
- # - SL
- BEGIN {
- $ENV{JSON_ANY_ORDER} = qw(XS);
- $ENV{JSON_ANY_CONFIG} = "utf8=1";
- }
- plan tests => 8;
- use_ok('MooseX::Storage');
+# NOTE:
+# this is because JSON::XS (and Cpanel::JSON::XS) is
+# the only one which really gets utf8 correct
+# - SL
+BEGIN {
+ $ENV{JSON_ANY_ORDER} = 'XS CPANEL';
+ $ENV{JSON_ANY_CONFIG} = "utf8=0,canonical=1";
}
+use Test::Requires {
+ 'JSON::Any' => 0.01, # skip all if not installed
+ 'IO::AtomicFile' => 0.01,
+};
+
+plan tests => 8;
+use_ok('MooseX::Storage');
+
use utf8;
{
use MooseX::Storage;
with Storage( 'format' => 'JSON', 'io' => 'File' );
-
+
has 'utf8_string' => (
is => 'rw',
isa => 'Str',
{
my $foo = Foo->new;
isa_ok( $foo, 'Foo' );
-
- $foo->store($file);
+
+ $foo->store($file);
}
{
my $foo = Foo->load($file);
isa_ok($foo, 'Foo');
- is($foo->utf8_string,
- "ネットスーパー (Internet Shopping)",
+ is($foo->utf8_string,
+ "ネットスーパー (Internet Shopping)",
'... got the string we expected');
}
utf8_string => 'Escritório'
);
isa_ok( $foo, 'Foo' );
-
- $foo->store($file);
+
+ $foo->store($file);
}
{
my $foo = Foo->load($file);
isa_ok($foo, 'Foo');
-
+
ok(utf8::is_utf8($foo->utf8_string), '... the string is still utf8');
- is($foo->utf8_string,
- "Escritório",
+ is($foo->utf8_string,
+ "Escritório",
'... got the string we expected');
}