JAL-1953 equals and hashCode now takes node ID in account
[jalview.git] / forester / java / src / org / forester / test / Test.java
index 9cda7b7..bbe2591 100644 (file)
@@ -219,7 +219,6 @@ public final class Test {
             succeeded++;
         }
         System.out.println( "OK." );
-        
         System.out.print( "Common prefix: " );
         if ( !testCommonPrefix() ) {
             System.out.println( "failed." );
@@ -229,7 +228,6 @@ public final class Test {
             succeeded++;
         }
         System.out.println( "OK." );
-        
         System.out.print( "Common prefix sep: " );
         if ( !testCommonPrefixSep() ) {
             System.out.println( "failed." );
@@ -239,8 +237,15 @@ public final class Test {
             succeeded++;
         }
         System.out.println( "OK." );
-        
-       
+        System.out.print( "Contains prefix: " );
+        if ( !testContainsPrefix() ) {
+            System.out.println( "failed." );
+            failed++;
+        }
+        else {
+            succeeded++;
+        }
+        System.out.println( "OK." );
         System.out.print( "Sequence writer: " );
         if ( testSequenceWriter() ) {
             System.out.println( "OK." );
@@ -1122,7 +1127,6 @@ public final class Test {
         }
     }
 
-   
     private static boolean testEngulfingOverlapRemoval() {
         try {
             final Domain d0 = new BasicDomain( "d0", 0, 8, ( short ) 1, ( short ) 1, 0.1, 1 );
@@ -1885,21 +1889,18 @@ public final class Test {
         return true;
     }
 
-    
     private static boolean testCommonPrefix() {
         final List<String> l0 = new ArrayList<String>();
         l0.add( "abc" );
         if ( !ForesterUtil.greatestCommonPrefix( l0 ).equals( "abc" ) ) {
             return false;
         }
-        
         final List<String> l1 = new ArrayList<String>();
         l1.add( "abc" );
         l1.add( "abX" );
         if ( !ForesterUtil.greatestCommonPrefix( l1 ).equals( "ab" ) ) {
             return false;
         }
-        
         final List<String> l2 = new ArrayList<String>();
         l2.add( "abc" );
         l2.add( "abX" );
@@ -1907,7 +1908,6 @@ public final class Test {
         if ( !ForesterUtil.greatestCommonPrefix( l2 ).equals( "a" ) ) {
             return false;
         }
-        
         final List<String> l3 = new ArrayList<String>();
         l3.add( "abXsdfsdfsdfsdfsdfsd" );
         l3.add( "abXsdfsdfsdfsdfsdfsd" );
@@ -1919,7 +1919,6 @@ public final class Test {
         if ( !ForesterUtil.greatestCommonPrefix( l3 ).equals( "ab" ) ) {
             return false;
         }
-        
         final List<String> l4 = new ArrayList<String>();
         l4.add( "abXsdfsdfsdfsdfsdfsd" );
         l4.add( "abXsdfsdfsdfsdfsdfsd" );
@@ -1930,13 +1929,11 @@ public final class Test {
         if ( !ForesterUtil.greatestCommonPrefix( l4 ).equals( "" ) ) {
             return false;
         }
-        
         final List<String> l5 = new ArrayList<String>();
         l5.add( "" );
         if ( !ForesterUtil.greatestCommonPrefix( l5 ).equals( "" ) ) {
             return false;
         }
-        
         final List<String> l6 = new ArrayList<String>();
         l6.add( "abc" );
         l6.add( "abX" );
@@ -1946,29 +1943,26 @@ public final class Test {
         }
         return true;
     }
-    
+
     private static boolean testCommonPrefixSep() {
         final List<String> l0 = new ArrayList<String>();
         l0.add( "a.b.c" );
-        if ( !ForesterUtil.greatestCommonPrefix( l0, ".").equals( "a.b.c" ) ) {
+        if ( !ForesterUtil.greatestCommonPrefix( l0, "." ).equals( "a.b.c" ) ) {
             return false;
         }
-        
         final List<String> l1 = new ArrayList<String>();
         l1.add( "a.b.c" );
         l1.add( "a.b.X" );
-        if ( !ForesterUtil.greatestCommonPrefix( l1 , ".").equals( "a.b" ) ) {
+        if ( !ForesterUtil.greatestCommonPrefix( l1, "." ).equals( "a.b" ) ) {
             return false;
         }
-        
         final List<String> l2 = new ArrayList<String>();
         l2.add( "a.b.c." );
         l2.add( "a.b.X." );
         l2.add( "a.x.y." );
-        if ( !ForesterUtil.greatestCommonPrefix( l2, ".").equals( "a" ) ) {
+        if ( !ForesterUtil.greatestCommonPrefix( l2, "." ).equals( "a" ) ) {
             return false;
         }
-        
         final List<String> l3 = new ArrayList<String>();
         l3.add( "a/b/X/s/d/f/s/d/f/s/d/f/s/d/f/s/d/f/s/d/" );
         l3.add( "a/b/X/s/d/f/s/d/f/s/d/f/s/d/f/s/d/f/s/d" );
@@ -1980,7 +1974,6 @@ public final class Test {
         if ( !ForesterUtil.greatestCommonPrefix( l3, "/" ).equals( "a/b" ) ) {
             return false;
         }
-       
         final List<String> l4 = new ArrayList<String>();
         l4.add( "a.b.X.s.d.f.s.d.f.s.d.f.s.d.f.s.d.f.s.d" );
         l4.add( "a.b.X.s.d.f.s.d.f.s.d.f.s.d.f.s.d.f.s.d" );
@@ -1991,20 +1984,17 @@ public final class Test {
         if ( !ForesterUtil.greatestCommonPrefix( l4, "." ).equals( "" ) ) {
             return false;
         }
-      
         final List<String> l5 = new ArrayList<String>();
         l5.add( "" );
         if ( !ForesterUtil.greatestCommonPrefix( l5, "_" ).equals( "" ) ) {
             return false;
         }
-        
         final List<String> l6 = new ArrayList<String>();
         l6.add( "_" );
         l6.add( "__" );
         if ( !ForesterUtil.greatestCommonPrefix( l6, "_" ).equals( "" ) ) {
             return false;
         }
-        
         final List<String> l7 = new ArrayList<String>();
         l7.add( "a,b,c" );
         l7.add( "a,b,X" );
@@ -2013,7 +2003,6 @@ public final class Test {
         if ( !ForesterUtil.greatestCommonPrefix( l7, "," ).equals( "" ) ) {
             return false;
         }
-        
         final List<String> l8 = new ArrayList<String>();
         l8.add( "123.304.403.04" );
         l8.add( "123.304.403.04.02" );
@@ -2021,7 +2010,6 @@ public final class Test {
         if ( !ForesterUtil.greatestCommonPrefix( l8, "." ).equals( "123.304.403" ) ) {
             return false;
         }
-        
         final List<String> l9 = new ArrayList<String>();
         l9.add( "123.304.403.04" );
         l9.add( "123.304.403.04.02" );
@@ -2029,10 +2017,61 @@ public final class Test {
         if ( !ForesterUtil.greatestCommonPrefix( l9, "." ).equals( "123.304" ) ) {
             return false;
         }
+        final List<String> l10 = new ArrayList<String>();
+        l10.add( "abcde" );
+        l10.add( "adc" );
+        if ( !ForesterUtil.greatestCommonPrefix( l10, "." ).equals( "" ) ) {
+            return false;
+        }
+        return true;
+    }
+
+    private static boolean testContainsPrefix() {
+        if ( !ForesterUtil.isContainsPrefix( "a.b", "a", "." ) ) {
+            return false;
+        }
+        if ( !ForesterUtil.isContainsPrefix( "a.b.c", "a", "." ) ) {
+            return false;
+        }
+        if ( !ForesterUtil.isContainsPrefix( "a.b.c", "a.b", "." ) ) {
+            return false;
+        }
+        if ( !ForesterUtil.isContainsPrefix( "a.b", "a.b", "." ) ) {
+            return false;
+        }
+        if ( !ForesterUtil.isContainsPrefix( "a", "a", "." ) ) {
+            return false;
+        }
+        if ( !ForesterUtil.isContainsPrefix( ".a.b", ".a", "." ) ) {
+            return false;
+        }
+        if ( !ForesterUtil.isContainsPrefix( ".a.b.", ".a", "." ) ) {
+            return false;
+        }
+        if ( !ForesterUtil.isContainsPrefix( ".a.b.", ".a.", "." ) ) {
+            return false;
+        }
+        if ( !ForesterUtil.isContainsPrefix( "a..b.", "a", "." ) ) {
+            return false;
+        }
+        if ( !ForesterUtil.isContainsPrefix( "a..b.", "a..", "." ) ) {
+            return false;
+        }
+        if ( ForesterUtil.isContainsPrefix( "a", "a.b", "." ) ) {
+            return false;
+        }
+        if ( ForesterUtil.isContainsPrefix( "a_b", "a", "." ) ) {
+            return false;
+        }
+        if ( ForesterUtil.isContainsPrefix( ".a.", ".a.b.", "." ) ) {
+            return false;
+        }
+        if ( ForesterUtil.isContainsPrefix( "a.b.c", "a.x", "." ) ) {
+            return false;
+        }
         return true;
     }
 
-    
     private static boolean testUTF8ParsingFromFile() {
         try {
             final PhyloXmlParser xml_parser = PhyloXmlParser.createPhyloXmlParser();
@@ -12715,71 +12754,7 @@ public final class Test {
             if ( s0.match( query_nodes ) ) {
                 return false;
             }
-            /////////
-            //            query_nodes = new HashSet<PhylogenyNode>();
-            //            query_nodes.add( new PhylogenyNode( "X" ) );
-            //            query_nodes.add( new PhylogenyNode( "Y" ) );
-            //            query_nodes.add( new PhylogenyNode( "A" ) );
-            //            query_nodes.add( new PhylogenyNode( "B" ) );
-            //            query_nodes.add( new PhylogenyNode( "C" ) );
-            //            query_nodes.add( new PhylogenyNode( "D" ) );
-            //            query_nodes.add( new PhylogenyNode( "E" ) );
-            //            query_nodes.add( new PhylogenyNode( "F" ) );
-            //            query_nodes.add( new PhylogenyNode( "G" ) );
-            //            if ( !s0.match( query_nodes ) ) {
-            //                return false;
-            //            }
-            //            query_nodes = new HashSet<PhylogenyNode>();
-            //            query_nodes.add( new PhylogenyNode( "X" ) );
-            //            query_nodes.add( new PhylogenyNode( "Y" ) );
-            //            query_nodes.add( new PhylogenyNode( "A" ) );
-            //            query_nodes.add( new PhylogenyNode( "B" ) );
-            //            query_nodes.add( new PhylogenyNode( "C" ) );
-            //            if ( !s0.match( query_nodes ) ) {
-            //                return false;
-            //            }
-            //            //
-            //            query_nodes = new HashSet<PhylogenyNode>();
-            //            query_nodes.add( new PhylogenyNode( "X" ) );
-            //            query_nodes.add( new PhylogenyNode( "Y" ) );
-            //            query_nodes.add( new PhylogenyNode( "D" ) );
-            //            query_nodes.add( new PhylogenyNode( "E" ) );
-            //            query_nodes.add( new PhylogenyNode( "F" ) );
-            //            query_nodes.add( new PhylogenyNode( "G" ) );
-            //            if ( !s0.match( query_nodes ) ) {
-            //                return false;
-            //            }
-            //            //
-            //            query_nodes = new HashSet<PhylogenyNode>();
-            //            query_nodes.add( new PhylogenyNode( "X" ) );
-            //            query_nodes.add( new PhylogenyNode( "Y" ) );
-            //            query_nodes.add( new PhylogenyNode( "A" ) );
-            //            query_nodes.add( new PhylogenyNode( "B" ) );
-            //            query_nodes.add( new PhylogenyNode( "C" ) );
-            //            query_nodes.add( new PhylogenyNode( "D" ) );
-            //            if ( !s0.match( query_nodes ) ) {
-            //                return false;
-            //            }
-            //            //
-            //            query_nodes = new HashSet<PhylogenyNode>();
-            //            query_nodes.add( new PhylogenyNode( "X" ) );
-            //            query_nodes.add( new PhylogenyNode( "Y" ) );
-            //            query_nodes.add( new PhylogenyNode( "E" ) );
-            //            query_nodes.add( new PhylogenyNode( "F" ) );
-            //            query_nodes.add( new PhylogenyNode( "G" ) );
-            //            if ( !s0.match( query_nodes ) ) {
-            //                return false;
-            //            }
-            //            //
-            //            query_nodes = new HashSet<PhylogenyNode>();
-            //            query_nodes.add( new PhylogenyNode( "X" ) );
-            //            query_nodes.add( new PhylogenyNode( "Y" ) );
-            //            query_nodes.add( new PhylogenyNode( "F" ) );
-            //            query_nodes.add( new PhylogenyNode( "G" ) );
-            //            if ( !s0.match( query_nodes ) ) {
-            //                return false;
-            //            }
-            //
+           
             query_nodes = new HashSet<PhylogenyNode>();
             query_nodes.add( PhylogenyNode.createInstanceFromNhxString( "X" ) );
             query_nodes.add( PhylogenyNode.createInstanceFromNhxString( "Y" ) );
@@ -12797,8 +12772,7 @@ public final class Test {
             if ( s0.match( query_nodes ) ) {
                 return false;
             }
-            ///////////////////////////
-            //
+      
             query_nodes = new HashSet<PhylogenyNode>();
             query_nodes.add( PhylogenyNode.createInstanceFromNhxString( "X" ) );
             query_nodes.add( PhylogenyNode.createInstanceFromNhxString( "Y" ) );
@@ -12981,7 +12955,6 @@ public final class Test {
             if ( !s0.match( query_nodes ) ) {
                 return false;
             }
-            //
             query_nodes = new HashSet<PhylogenyNode>();
             query_nodes.add( PhylogenyNode.createInstanceFromNhxString( "F" ) );
             query_nodes.add( PhylogenyNode.createInstanceFromNhxString( "G" ) );
@@ -12989,7 +12962,6 @@ public final class Test {
             if ( !s0.match( query_nodes ) ) {
                 return false;
             }
-            //
             query_nodes = new HashSet<PhylogenyNode>();
             query_nodes.add( PhylogenyNode.createInstanceFromNhxString( "F" ) );
             query_nodes.add( PhylogenyNode.createInstanceFromNhxString( "G" ) );
@@ -13634,12 +13606,11 @@ public final class Test {
         }
         return true;
     }
-    
+
     private static boolean testPhylogenyMethods() {
         try {
             final PhylogenyFactory factory = ParserBasedPhylogenyFactory.getInstance();
             final Phylogeny t0 = factory.create( "((((A,B)ab,C)abc,D)abcd,E)r", new NHXParser() )[ 0 ];
-          
             if ( PhylogenyMethods.calculateLevel( t0.getNode( "A" ) ) != 0 ) {
                 return false;
             }
@@ -13667,7 +13638,8 @@ public final class Test {
             if ( PhylogenyMethods.calculateLevel( t0.getNode( "r" ) ) != 4 ) {
                 return false;
             }
-            final Phylogeny t1 = factory.create( "((((A,B)ab,C)abc,D)abcd,E,((((((X)1)2)3)4)5)6)r", new NHXParser() )[ 0 ];
+            final Phylogeny t1 = factory.create( "((((A,B)ab,C)abc,D)abcd,E,((((((X)1)2)3)4)5)6)r",
+                                                 new NHXParser() )[ 0 ];
             if ( PhylogenyMethods.calculateLevel( t1.getNode( "r" ) ) != 7 ) {
                 return false;
             }
@@ -13695,7 +13667,6 @@ public final class Test {
             if ( PhylogenyMethods.calculateLevel( t1.getNode( "abcd" ) ) != 3 ) {
                 return false;
             }
-            
         }
         catch ( final Exception e ) {
             e.printStackTrace( System.out );