+
+ private static boolean testUTF8ParsingFromFile() {
+ try {
+ final PhyloXmlParser xml_parser = PhyloXmlParser.createPhyloXmlParser();
+ final Phylogeny[] phylogenies_xml = ParserBasedPhylogenyFactory.getInstance().create( new File( Test.PATH_TO_TEST_DATA + "chars.xml" ),
+ xml_parser );
+ if ( xml_parser.getErrorCount() > 0 ) {
+ System.out.println( xml_parser.getErrorMessages().toString() );
+ return false;
+ }
+ if ( phylogenies_xml.length != 1 ) {
+ return false;
+ }
+
+ final Phylogeny[] phylogenies_xml2 = ParserBasedPhylogenyFactory.getInstance().create( new StringBuffer( phylogenies_xml[0].toPhyloXML( 0 )),
+ xml_parser );
+
+ final Phylogeny[] phylogenies_nh = ParserBasedPhylogenyFactory.getInstance().create( new File( Test.PATH_TO_TEST_DATA + "chars.nh" ), new NHXParser() );
+ if ( phylogenies_nh.length != 1 ) {
+ return false;
+ }
+
+ final Phylogeny[] phylogenies_nex = ParserBasedPhylogenyFactory.getInstance().create( new File( Test.PATH_TO_TEST_DATA + "chars.nex" ), new NexusPhylogeniesParser() );
+ if ( phylogenies_nex.length != 1 ) {
+ return false;
+ }
+
+ final String[] xml_n = phylogenies_xml[0].getAllExternalNodeNames();
+ final String[] xml_n2 = phylogenies_xml2[0].getAllExternalNodeNames();
+ final String[] nh_n = phylogenies_nh[0].getAllExternalNodeNames();
+ final String[] nex_n = phylogenies_nex[0].getAllExternalNodeNames();
+ final String n0 = "AQ~!@#$%^&*()_+-=\\{}|;:\"<>?,./";
+ final String n1 = "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜˜˜™š›œžŸ¡¢£¤¥¦§¨©ª«¬®¯°±¹²³´µ¶·¸º»¼¿À÷þÿ";
+ final String n2 = "漢字ひらがなカタカナ";
+ final String n3 = "อักษรไทย";
+ final String n4 = "繁體字";
+ final String n5 = "한글";
+ final String n6 = "देवनागरी";
+
+ final String n7 = "chữ Quốc ngữ";
+ final String n8 = "ру́сский язы́к";
+ final String n9 = "អក្សរខ្មែរ";
+
+ if ( !xml_n[0].equals( n0 ) ) {
+ System.out.println( xml_n[0] );
+ System.out.println( n0 );
+ return false;
+ }
+ if ( !xml_n2[0].equals( n0 ) ) {
+ System.out.println( xml_n2[0] );
+ System.out.println( n0 );
+ return false;
+ }
+ if ( !nh_n[0].equals( n0 ) ) {
+ System.out.println( nh_n[0] );
+ System.out.println( n0 );
+ return false;
+ }
+ if ( !nex_n[0].equals( n0 ) ) {
+ System.out.println( nex_n[0] );
+ System.out.println( n0 );
+ return false;
+ }
+
+ if ( !xml_n[1].equals( n1 ) ) {
+ System.out.println( xml_n[1] );
+ System.out.println( n1 );
+ return false;
+ }
+ if ( !xml_n2[1].equals( n1 ) ) {
+ System.out.println( xml_n2[1] );
+ System.out.println( n1 );
+ return false;
+ }
+ if ( !nh_n[1].equals( n1 ) ) {
+ System.out.println( nh_n[1] );
+ System.out.println( n1 );
+ return false;
+ }
+ if ( !nex_n[1].equals( n1 ) ) {
+ System.out.println( nex_n[1] );
+ System.out.println( n1 );
+ return false;
+ }
+
+ if ( !xml_n[2].equals( n2 ) ) {
+ System.out.println( xml_n[2] );
+ System.out.println( n2 );
+ return false;
+ }
+ if ( !xml_n2[2].equals( n2 ) ) {
+ System.out.println( xml_n2[2] );
+ System.out.println( n2 );
+ return false;
+ }
+ if ( !nh_n[2].equals( n2 ) ) {
+ System.out.println( nh_n[2] );
+ System.out.println( n2 );
+ return false;
+ }
+ if ( !nex_n[2].equals( n2 ) ) {
+ System.out.println( nex_n[2] );
+ System.out.println( n2 );
+ return false;
+ }
+ //
+ if ( !xml_n[3].equals( n3 ) ) {
+ System.out.println( xml_n[3] );
+ System.out.println( n3 );
+ return false;
+ }
+ if ( !xml_n2[3].equals( n3 ) ) {
+ System.out.println( xml_n2[3] );
+ System.out.println( n3 );
+ return false;
+ }
+ if ( !nh_n[3].equals( n3 ) ) {
+ System.out.println( nh_n[3] );
+ System.out.println( n3 );
+ return false;
+ }
+ if ( !nex_n[3].equals( n3 ) ) {
+ System.out.println( nex_n[3] );
+ System.out.println( n3 );
+ return false;
+ }
+ //
+ if ( !xml_n[4].equals( n4 ) ) {
+ System.out.println( xml_n[4] );
+ System.out.println( n4 );
+ return false;
+ }
+ if ( !nh_n[4].equals( n4 ) ) {
+ System.out.println( nh_n[4] );
+ System.out.println( n4 );
+ return false;
+ }
+ if ( !nex_n[4].equals( n4 ) ) {
+ System.out.println( nex_n[4] );
+ System.out.println( n4 );
+ return false;
+ }
+ //
+ if ( !xml_n[5].equals( n5 ) ) {
+ System.out.println( xml_n[5] );
+ System.out.println( n5 );
+ return false;
+ }
+ if ( !nh_n[5].equals( n5 ) ) {
+ System.out.println( nh_n[5] );
+ System.out.println( n5 );
+ return false;
+ }
+ if ( !nex_n[5].equals( n5 ) ) {
+ System.out.println( nex_n[5] );
+ System.out.println( n5 );
+ return false;
+ }
+ //
+ if ( !xml_n[6].equals( n6 ) ) {
+ System.out.println( xml_n[6] );
+ System.out.println( n6 );
+ return false;
+ }
+ if ( !nh_n[6].equals( n6 ) ) {
+ System.out.println( nh_n[6] );
+ System.out.println( n6 );
+ return false;
+ }
+ if ( !nex_n[6].equals( n6 ) ) {
+ System.out.println( nex_n[6] );
+ System.out.println( n6 );
+ return false;
+ }
+ //
+ if ( !xml_n[7].equals( n7 ) ) {
+ System.out.println( xml_n[7] );
+ System.out.println( n7 );
+ return false;
+ }
+ if ( !nh_n[7].equals( n7 ) ) {
+ System.out.println( nh_n[7] );
+ System.out.println( n7 );
+ return false;
+ }
+ if ( !nex_n[7].equals( n7 ) ) {
+ System.out.println( nex_n[7] );
+ System.out.println( n7 );
+ return false;
+ }
+ if ( !xml_n[8].equals( n8 ) ) {
+ System.out.println( xml_n[8] );
+ System.out.println( n8 );
+ return false;
+ }
+ if ( !nh_n[8].equals( n8 ) ) {
+ System.out.println( nh_n[8] );
+ System.out.println( n8 );
+ return false;
+ }
+ if ( !nex_n[8].equals( n8 ) ) {
+ System.out.println( nex_n[8] );
+ System.out.println( n8 );
+ return false;
+ }
+ if ( !xml_n[9].equals( n9 ) ) {
+ System.out.println( xml_n[9] );
+ System.out.println( n9 );
+ return false;
+ }
+ if ( !xml_n2[9].equals( n9 ) ) {
+ System.out.println( xml_n2[9] );
+ System.out.println( n9 );
+ return false;
+ }
+ if ( !nh_n[9].equals( n9 ) ) {
+ System.out.println( nh_n[9] );
+ System.out.println( n9 );
+ return false;
+ }
+ if ( !nex_n[9].equals( n9 ) ) {
+ System.out.println( nex_n[9] );
+ System.out.println( n9 );
+ return false;
+ }
+ if (!phylogenies_xml[0].toNewHampshire().equals(
+ phylogenies_nh[0].toNewHampshire() ) ) {
+ System.out.println( phylogenies_xml[0].toNewHampshire() );
+ System.out.println( phylogenies_nh[0].toNewHampshire() );
+ return false;
+ }
+ if (!phylogenies_xml[0].toNewHampshire().equals(
+ phylogenies_nex[0].toNewHampshire() ) ) {
+ System.out.println( phylogenies_xml[0].toNewHampshire() );
+ System.out.println( phylogenies_nex[0].toNewHampshire() );
+ return false;
+ }
+ }
+ catch ( final Exception e ) {
+ e.printStackTrace( System.out );
+ return false;
+ }
+ return true;
+ }
+
+