perl-XML-LibXML / t / 42common.t

#########################

use strict;
use warnings;

use Test;
BEGIN { plan tests => 12 };
use XML::LibXML::Common qw( :libxml :encoding );

use constant TEST_STRING_GER => "Hänsel und Gretel";
use constant TEST_STRING_GER2 => "täst";
use constant TEST_STRING_UTF => 'test';
use constant TEST_STRING_JP  => 'Ŕ¸ÇţŔ¸ĘĆŔ¸Íń';

ok(1); # If we made it this far, we're ok.

#########################

# ok( ELEMENT_NODE, 1 );
ok( XML_ELEMENT_NODE, 1 );

# encoding();

ok( decodeFromUTF8('iso-8859-1',
                   encodeToUTF8('iso-8859-1',
                                TEST_STRING_GER2 ) ),
    TEST_STRING_GER2 );


ok( decodeFromUTF8( 'UTF-8' ,
                     encodeToUTF8('UTF-8', TEST_STRING_UTF ) ),
    TEST_STRING_UTF );


my $u16 = decodeFromUTF8( 'UTF-16',
                          encodeToUTF8('UTF-8', TEST_STRING_UTF ) );
ok( length($u16), 2*length(TEST_STRING_UTF));

my $u16be = decodeFromUTF8( 'UTF-16BE',
                            encodeToUTF8('UTF-8', TEST_STRING_UTF ) );
ok( length($u16be), 2*length(TEST_STRING_UTF));

my $u16le = decodeFromUTF8( 'UTF-16LE', 
                            encodeToUTF8('UTF-8', TEST_STRING_UTF ) );
ok( length($u16le), 2*length(TEST_STRING_UTF));

#bad encoding name test.
eval {
    my $str = encodeToUTF8( "foo" , TEST_STRING_GER2 );
};
ok( length( $@ ) );

ok((eval { encodeToUTF8( 'UTF-16' , '' ) eq '' ? 1 : 0 }) ==1);
print $@ if $@;
ok(eval { defined(encodeToUTF8( 'UTF-16' , undef )) ? 0 : 1 }==1);

ok(eval { decodeFromUTF8( 'UTF-16' , '' ) eq '' ? 1 : 0 }==1);
print $@ if $@;
ok(eval { defined(decodeFromUTF8( 'UTF-16' , undef )) ? 0 : 1 }==1);
print $@ if $@;

# here should be a test to test badly encoded strings. but for some
# reasons i am unable to create an apropriate test :(

# uncomment these lines if your system is capable to handel not only i
# so latin 1
#ok( decodeFromUTF8('EUC-JP',
#                   encodeToUTF8('EUC-JP',
#                                TEST_STRING_JP ) ),
#    TEST_STRING_JP );
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.