Author: jflesch
Date: 2007-08-30 20:25:06 +0000 (Thu, 30 Aug 2007)
New Revision: 14930

Modified:
   trunk/apps/Thaw/src/thaw/fcp/FreenetURIHelper.java
Log:
Add some mini unit tests to thaw.fcp.FreenetURIHelper + Fix 
FreenetURIHelper.compareKeys()

Modified: trunk/apps/Thaw/src/thaw/fcp/FreenetURIHelper.java
===================================================================
--- trunk/apps/Thaw/src/thaw/fcp/FreenetURIHelper.java  2007-08-30 19:41:26 UTC 
(rev 14929)
+++ trunk/apps/Thaw/src/thaw/fcp/FreenetURIHelper.java  2007-08-30 20:25:06 UTC 
(rev 14930)
@@ -29,6 +29,55 @@
                return key.startsWith("KSK@");
        }

+
+       private final static String[] TEST_GOOD_KEYS = {
+               "CHK at 
mmHr8ldkPL-ByTdAKL~IMua0z9nJ~dLnzoRIbbOaf2w,ORl1uXUYnutIayK~0Js5r6dnOBTYerm17OsxFq7jwpo,AAIC--8/Thaw-0.7.10.jar",
+               "USK at 
p-uFAWUomLm37MCQLu3r67-B8e6yF1kS4q2v0liM1Vk,h0MWqM~lF0Bec-AIv445PLn06ams9-RFbnwO6Cm2Snc,AQACAAE/Thaw/7/Thaw.frdx",
+               "KSK at gpl",
+               "SSK at 
FoNrbtiJCeRUIorP01Vx5~Pn0aVp4tMeesVKObwbKXE,5aEPJBhwIV~HpGIG8YTpKSB39WCGgd0BUNWZ012745Y,AQECAAE/"
+       };
+
+       private final static String[] TEST_BASIC_BAD_KEYS = {
+               "CHK at mmH/Toto.jar",
+               "BLEH"
+       };
+
+
+
+       private static boolean testIsAKey() {
+               System.out.println("=> isAKey()");
+
+               for (int i = 0 ; i < TEST_GOOD_KEYS.length ; i++) {
+                       System.out.print("==> Good key "+Integer.toString(i)+" 
: ");
+
+                       if (!isAKey(TEST_GOOD_KEYS[i])) {
+                               System.out.println("FAILED");
+                               System.out.println("Failed on: 
"+TEST_GOOD_KEYS[i]);
+                               return false;
+                       }
+
+                       System.out.println("Ok");
+               }
+
+
+               for (int i = 0 ; i < TEST_BASIC_BAD_KEYS.length ; i++) {
+                       System.out.print("==> Bad key "+Integer.toString(i)+" : 
");
+
+                       if (isAKey(TEST_BASIC_BAD_KEYS[i])) {
+                               System.out.println("FAILED");
+                               System.out.println("Failed on: 
"+TEST_BASIC_BAD_KEYS[i]);
+                               return false;
+                       }
+
+                       System.out.println("Ok");
+               }
+
+               return true;
+       }
+
+
+
+
        public static String cleanURI(String uri) {
                if (uri == null)
                        return uri;
@@ -51,32 +100,88 @@
        }


+       private final static String[][] TEST_CLEANABLE_KEYS = {
+               /* { unclean key, expected result } */
+               {
+                       
"CHK%40mmHr8ldkPL-ByTdAKL~IMua0z9nJ~dLnzoRIbbOaf2w,ORl1uXUYnutIayK~0Js5r6dnOBTYerm17OsxFq7jwpo,AAIC--8/Thaw-0.7.10.jar",
+                       "CHK at 
mmHr8ldkPL-ByTdAKL~IMua0z9nJ~dLnzoRIbbOaf2w,ORl1uXUYnutIayK~0Js5r6dnOBTYerm17OsxFq7jwpo,AAIC--8/Thaw-0.7.10.jar"
+               },
+
+               {
+                       
"http://127.0.0.1:8888/CHK%40mmHr8ldkPL-ByTdAKL~IMua0z9nJ~dLnzoRIbbOaf2w,ORl1uXUYnutIayK~0Js5r6dnOBTYerm17OsxFq7jwpo,AAIC--8/Thaw-0.7.10.jar";,
+                       "CHK at 
mmHr8ldkPL-ByTdAKL~IMua0z9nJ~dLnzoRIbbOaf2w,ORl1uXUYnutIayK~0Js5r6dnOBTYerm17OsxFq7jwpo,AAIC--8/Thaw-0.7.10.jar"
+               },
+
+               {
+                       
"http://192.168.100.1:8888/CHK%40mmHr8ldkPL-ByTdAKL~IMua0z9nJ~dLnzoRIbbOaf2w,ORl1uXUYnutIayK~0Js5r6dnOBTYerm17OsxFq7jwpo,AAIC--8/Thaw-0.7.10.jar";,
+                       "CHK at 
mmHr8ldkPL-ByTdAKL~IMua0z9nJ~dLnzoRIbbOaf2w,ORl1uXUYnutIayK~0Js5r6dnOBTYerm17OsxFq7jwpo,AAIC--8/Thaw-0.7.10.jar"
+               },
+
+               {
+                       
"http://192.168.100.1:1234/CHK%40mmHr8ldkPL-ByTdAKL~IMua0z9nJ~dLnzoRIbbOaf2w,ORl1uXUYnutIayK~0Js5r6dnOBTYerm17OsxFq7jwpo,AAIC--8/Thaw-0.7.10.jar";,
+                       "CHK at 
mmHr8ldkPL-ByTdAKL~IMua0z9nJ~dLnzoRIbbOaf2w,ORl1uXUYnutIayK~0Js5r6dnOBTYerm17OsxFq7jwpo,AAIC--8/Thaw-0.7.10.jar"
+               }
+       };
+
+
+       private static boolean testCleanURI() {
+               System.out.println("=> cleanURI()");
+
+               for (int i = 0; i < TEST_CLEANABLE_KEYS.length ; i++) {
+                       System.out.print("==> Clean "+Integer.toString(i)+": ");
+
+                       String cleaned = cleanURI(TEST_CLEANABLE_KEYS[i][0]);
+
+                       if (!TEST_CLEANABLE_KEYS[i][1].equals(cleaned)) {
+                               System.out.println("FAILED");
+                               System.out.println("Failed on: 
"+TEST_CLEANABLE_KEYS[i][0]);
+
+                               System.out.println("Got : "+cleaned);
+
+                               return false;
+                       }
+
+                       System.out.println("Ok");
+               }
+
+               return true;
+       }
+
+
+
        public static String getFilenameFromKey(final String key) {
-               String filename;
+               String filename = null;
                final String cutcut[];

                if (key == null)
                        return null;

-               if (key.startsWith("KSK@")) {
-                       return key.substring(4);
-               }

-               cutcut = key.split("/");
+               if (key.startsWith("KSK")) {
+                       filename = key.substring(4);
+               } else {
+                       cutcut = key.split("/");

-               if ( (!key.startsWith("USK@")) || cutcut.length >= 4) {
-                       if (cutcut.length >= 2)
+                       if (key.startsWith("CHK")) {
+
+                               if (cutcut.length >= 2)
+                                       filename = cutcut[1];
+
+                       } else if (key.startsWith("SSK")) {
+
                                filename = cutcut[cutcut.length-1];
-                       else /* this key is nameless */
-                               filename = null;
-               } else {
-                       if (cutcut.length >= 2) {
-                               filename = cutcut[cutcut.length-2];
-                       } else {
-                               filename = cutcut[cutcut.length-1];
+
+                       } else if (key.startsWith("USK")) {
+
+                               if (cutcut.length >= 4 || cutcut.length == 2)
+                                       filename = cutcut[cutcut.length-1];
+                               else if (cutcut.length == 3)
+                                       filename = cutcut[cutcut.length-2];
                        }
+
                }

+
                if (filename != null) {
                        try {
                                filename = java.net.URLDecoder.decode(filename, 
"UTF-8");
@@ -89,6 +194,71 @@
        }


+       public final static String[][] TEST_FILENAMED_KEYS = {
+               { /* 0 */
+                       "CHK at 
mmHr8ldkPL-ByTdAKL~IMua0z9nJ~dLnzoRIbbOaf2w,ORl1uXUYnutIayK~0Js5r6dnOBTYerm17OsxFq7jwpo,AAIC--8/Thaw-0.7.10.jar",
+                       "Thaw-0.7.10.jar"
+               },
+               { /* 1 */
+                       "CHK at 
mmHr8ldkPL-ByTdAKL~IMua0z9nJ~dLnzoRIbbOaf2w,ORl1uXUYnutIayK~0Js5r6dnOBTYerm17OsxFq7jwpo,AAIC--8/",
+                       null
+               },
+               { /* 2 * / /* the '/' at the end was removed */
+                       "CHK at 
mmHr8ldkPL-ByTdAKL~IMua0z9nJ~dLnzoRIbbOaf2w,ORl1uXUYnutIayK~0Js5r6dnOBTYerm17OsxFq7jwpo,AAIC--8",
+                       null
+               },
+               { /* 3 */
+                       
"USK%4061m2WMJEA9pyQQQ-hjGN8lIM2xToNJHyacJ8ZPB9JCQ,5aEPJBhwIV~HpGIG8YTpKSB39WCGgd0BUNWZ012745Y,AQACAAE/Publicly%20writable%20index/44/Publicly%20writable%20index.frdx",
+                       "Publicly writable index.frdx"
+               },
+               { /* 4 */
+                       
"USK%4061m2WMJEA9pyQQQ-hjGN8lIM2xToNJHyacJ8ZPB9JCQ,5aEPJBhwIV~HpGIG8YTpKSB39WCGgd0BUNWZ012745Y,AQACAAE/Publicly%20writable%20index/44",
+                       "Publicly writable index"
+               },
+               { /* 5 */
+                       "KSK at gpl.txt",
+                       "gpl.txt"
+               },
+               { /* 6 */
+                       "SSK at 
FoNrbtiJCeRUIorP01Vx5~Pn0aVp4tMeesVKObwbKXE,5aEPJBhwIV~HpGIG8YTpKSB39WCGgd0BUNWZ012745Y,AQECAAE/toto-5/toto.frdx",
+                       "toto.frdx"
+               },
+               { /* 7 */
+                       "SSK at 
FoNrbtiJCeRUIorP01Vx5~Pn0aVp4tMeesVKObwbKXE,5aEPJBhwIV~HpGIG8YTpKSB39WCGgd0BUNWZ012745Y,AQECAAE/toto-5/",
+                       "toto-5" /* yes, it's the wanted behavior */
+               }
+       };
+
+
+       private static boolean testGetFilenameFromKey() {
+
+               System.out.println("=> getFilenameFromKey()");
+
+               for (int i = 0; i < TEST_FILENAMED_KEYS.length ; i++) {
+
+                       System.out.print("==> getFilenameFromKey 
"+Integer.toString(i)+": ");
+
+                       String filename = 
getFilenameFromKey(TEST_FILENAMED_KEYS[i][0]);
+
+                       if ( (TEST_FILENAMED_KEYS[i][1] == null && filename != 
null)
+                            || (TEST_FILENAMED_KEYS[i][1] != null && 
!TEST_FILENAMED_KEYS[i][1].equals(filename)) ) {
+
+                               System.out.println("FAILED");
+                               System.out.println("Failed on: 
"+TEST_FILENAMED_KEYS[i][0]);
+
+                               System.out.println("Got : "+filename);
+
+                               return false;
+                       }
+
+                       System.out.println("Ok");
+               }
+
+               return true;
+       }
+
+
+
        public static String convertSSKtoUSK(String SSK) {
                if ((SSK == null) || SSK.startsWith("USK@"))
                        return SSK;
@@ -128,6 +298,43 @@
        }


+       private final static String[][] TEST_SSK_TO_USK = {
+               {
+                       "SSK at 
61m2WMJEA9pyQQQ-hjGN8lIM2xToNJHyacJ8ZPB9JCQ,5aEPJBhwIV~HpGIG8YTpKSB39WCGgd0BUNWZ012745Y,AQACAAE/Publicly%20writable%20index-44/Publicly
 writable index.frdx",
+                       "USK at 
61m2WMJEA9pyQQQ-hjGN8lIM2xToNJHyacJ8ZPB9JCQ,5aEPJBhwIV~HpGIG8YTpKSB39WCGgd0BUNWZ012745Y,AQACAAE/Publicly%20writable%20index/44/Publicly
 writable index.frdx" 
+               }
+       };
+
+
+       private static boolean testConvertSSKtoUSK() {
+
+               System.out.println("=> convertSSKtoUSK()");
+
+               for (int i = 0; i < TEST_SSK_TO_USK.length ; i++) {
+
+                       System.out.print("==> convert "+Integer.toString(i)+": 
");
+
+                       String usk = convertSSKtoUSK(TEST_SSK_TO_USK[i][0]);
+
+                       if ( (TEST_SSK_TO_USK[i][1] == null && usk != null)
+                            || (TEST_SSK_TO_USK[i][1] != null && 
!TEST_SSK_TO_USK[i][1].equals(usk)) ) {
+
+                               System.out.println("FAILED");
+                               System.out.println("Failed on: 
"+TEST_SSK_TO_USK[i][0]);
+
+                               System.out.println("Got : "+usk);
+
+                               return false;
+                       }
+
+                       System.out.println("Ok");
+               }
+
+               return true;
+       }
+
+
+
        private static String abs(final String val) {
                try {
                        final java.math.BigDecimal bd = new 
java.math.BigDecimal(val);
@@ -167,6 +374,47 @@
        }


+
+       private final static String[][] TEST_USK_TO_SSK = {
+               {
+                       "USK at 
61m2WMJEA9pyQQQ-hjGN8lIM2xToNJHyacJ8ZPB9JCQ,5aEPJBhwIV~HpGIG8YTpKSB39WCGgd0BUNWZ012745Y,AQACAAE/Publicly%20writable%20index/44/Publicly
 writable index.frdx",
+                       "SSK at 
61m2WMJEA9pyQQQ-hjGN8lIM2xToNJHyacJ8ZPB9JCQ,5aEPJBhwIV~HpGIG8YTpKSB39WCGgd0BUNWZ012745Y,AQACAAE/Publicly%20writable%20index-44/Publicly
 writable index.frdx"
+               },
+               {
+                       "USK at 
61m2WMJEA9pyQQQ-hjGN8lIM2xToNJHyacJ8ZPB9JCQ,5aEPJBhwIV~HpGIG8YTpKSB39WCGgd0BUNWZ012745Y,AQACAAE/Publicly%20writable%20index/-44/Publicly
 writable index.frdx",
+                       "SSK at 
61m2WMJEA9pyQQQ-hjGN8lIM2xToNJHyacJ8ZPB9JCQ,5aEPJBhwIV~HpGIG8YTpKSB39WCGgd0BUNWZ012745Y,AQACAAE/Publicly%20writable%20index-44/Publicly
 writable index.frdx"
+               }
+       };
+
+
+       private static boolean testConvertUSKtoSSK() {
+
+               System.out.println("=> convertSSKtoUSK()");
+
+               for (int i = 0; i < TEST_USK_TO_SSK.length ; i++) {
+
+                       System.out.print("==> convert "+Integer.toString(i)+": 
");
+
+                       String ssk = convertUSKtoSSK(TEST_USK_TO_SSK[i][0]);
+
+                       if ( (TEST_USK_TO_SSK[i][1] == null && ssk != null)
+                            || (TEST_USK_TO_SSK[i][1] != null && 
!TEST_USK_TO_SSK[i][1].equals(ssk)) ) {
+
+                               System.out.println("FAILED");
+                               System.out.println("Failed on: 
"+TEST_USK_TO_SSK[i][0]);
+
+                               System.out.println("Got : "+ssk);
+
+                               return false;
+                       }
+
+                       System.out.println("Ok");
+               }
+
+               return true;
+       }
+
+
        public static String getPublicInsertionSSK(String key) {
                key = FreenetURIHelper.convertUSKtoSSK(key);

@@ -256,6 +504,86 @@
        }


+       private static final String[][] TEST_CHANGE_SSK_REV = {
+               {
+                       "SSK at 
61m2WMJEA9pyQQQ-hjGN8lIM2xToNJHyacJ8ZPB9JCQ,5aEPJBhwIV~HpGIG8YTpKSB39WCGgd0BUNWZ012745Y,AQACAAE/Publicly
 writable index-44/Publicly writable index.frdx",
+                       "SSK at 
61m2WMJEA9pyQQQ-hjGN8lIM2xToNJHyacJ8ZPB9JCQ,5aEPJBhwIV~HpGIG8YTpKSB39WCGgd0BUNWZ012745Y,AQACAAE/Publicly
 writable index-40/Publicly writable index.frdx"
+               },
+               {
+                       "SSK at 
61m2WMJEA9pyQQQ-hjGN8lIM2xToNJHyacJ8ZPB9JCQ,5aEPJBhwIV~HpGIG8YTpKSB39WCGgd0BUNWZ012745Y,AQACAAE/Publicly
 writable index-44/Publicly writable index.frdx",
+                       "SSK at 
61m2WMJEA9pyQQQ-hjGN8lIM2xToNJHyacJ8ZPB9JCQ,5aEPJBhwIV~HpGIG8YTpKSB39WCGgd0BUNWZ012745Y,AQACAAE/Publicly
 writable index-48/Publicly writable index.frdx"
+               },
+               {
+                       "SSK at 
61m2WMJEA9pyQQQ-hjGN8lIM2xToNJHyacJ8ZPB9JCQ,5aEPJBhwIV~HpGIG8YTpKSB39WCGgd0BUNWZ012745Y,AQACAAE/Publicly
 writable index-44/Publicly writable index.frdx",
+                       "SSK at 
61m2WMJEA9pyQQQ-hjGN8lIM2xToNJHyacJ8ZPB9JCQ,5aEPJBhwIV~HpGIG8YTpKSB39WCGgd0BUNWZ012745Y,AQACAAE/Publicly
 writable index-12/Publicly writable index.frdx"
+               },
+               {
+                       "SSK at 
61m2WMJEA9pyQQQ-hjGN8lIM2xToNJHyacJ8ZPB9JCQ,5aEPJBhwIV~HpGIG8YTpKSB39WCGgd0BUNWZ012745Y,AQACAAE/Publicly
 writable index-44/Publicly writable index.frdx",
+                       "SSK at 
61m2WMJEA9pyQQQ-hjGN8lIM2xToNJHyacJ8ZPB9JCQ,5aEPJBhwIV~HpGIG8YTpKSB39WCGgd0BUNWZ012745Y,AQACAAE/Publicly
 writable index-0/Publicly writable index.frdx"
+               }
+       };
+
+       private static final String[][] TEST_CHANGE_USK_REV = {
+               {
+                       "USK at 
61m2WMJEA9pyQQQ-hjGN8lIM2xToNJHyacJ8ZPB9JCQ,5aEPJBhwIV~HpGIG8YTpKSB39WCGgd0BUNWZ012745Y,AQACAAE/Publicly
 writable index/44/Publicly writable index.frdx",
+                       "USK at 
61m2WMJEA9pyQQQ-hjGN8lIM2xToNJHyacJ8ZPB9JCQ,5aEPJBhwIV~HpGIG8YTpKSB39WCGgd0BUNWZ012745Y,AQACAAE/Publicly
 writable index/40/Publicly writable index.frdx"
+               },
+               {
+                       /* yep, it's the expected behavior */
+                       "USK at 
61m2WMJEA9pyQQQ-hjGN8lIM2xToNJHyacJ8ZPB9JCQ,5aEPJBhwIV~HpGIG8YTpKSB39WCGgd0BUNWZ012745Y,AQACAAE/Publicly
 writable index/-44/Publicly writable index.frdx",
+                       /* rev += 4 */
+                       "USK at 
61m2WMJEA9pyQQQ-hjGN8lIM2xToNJHyacJ8ZPB9JCQ,5aEPJBhwIV~HpGIG8YTpKSB39WCGgd0BUNWZ012745Y,AQACAAE/Publicly
 writable index/-40/Publicly writable index.frdx"
+               },
+               {
+                       "USK at 
61m2WMJEA9pyQQQ-hjGN8lIM2xToNJHyacJ8ZPB9JCQ,5aEPJBhwIV~HpGIG8YTpKSB39WCGgd0BUNWZ012745Y,AQACAAE/Publicly
 writable index/44/Publicly writable index.frdx",
+                       "USK at 
61m2WMJEA9pyQQQ-hjGN8lIM2xToNJHyacJ8ZPB9JCQ,5aEPJBhwIV~HpGIG8YTpKSB39WCGgd0BUNWZ012745Y,AQACAAE/Publicly
 writable index/12/Publicly writable index.frdx"
+               },
+               {
+                       "USK at 
61m2WMJEA9pyQQQ-hjGN8lIM2xToNJHyacJ8ZPB9JCQ,5aEPJBhwIV~HpGIG8YTpKSB39WCGgd0BUNWZ012745Y,AQACAAE/Publicly
 writable index/44/Publicly writable index.frdx",
+                       "USK at 
61m2WMJEA9pyQQQ-hjGN8lIM2xToNJHyacJ8ZPB9JCQ,5aEPJBhwIV~HpGIG8YTpKSB39WCGgd0BUNWZ012745Y,AQACAAE/Publicly
 writable index/0/Publicly writable index.frdx"
+               }
+       };
+
+       private static final int[][] TEST_CHANGE_REV = {
+               /* { rev, offset } */
+               { 0, -4 },
+               { 0,  4 },
+               { 12, 0},
+               { 0, 0}
+       };
+
+
+       private static boolean testRevisionChange(boolean ssk, String[][] 
TEST_SET) {
+               if (ssk)
+                       System.out.println("=> changeSSKRevision()");
+               else
+                       System.out.println("=> changeUSKRevision()");
+
+               for (int i = 0 ; i < TEST_CHANGE_REV.length ; i++) {
+                       System.out.print("==> Key "+Integer.toString(i)+": ");
+
+                       String result = (ssk ?
+                                        changeSSKRevision(TEST_SET[i][0], 
TEST_CHANGE_REV[i][0], TEST_CHANGE_REV[i][1]) :
+                                        changeUSKRevision(TEST_SET[i][0], 
TEST_CHANGE_REV[i][0], TEST_CHANGE_REV[i][1]));
+
+                       if (!TEST_SET[i][1].equals(result)) {
+                               System.out.println("FAILED");
+
+                               System.out.println("Failed on : 
"+TEST_SET[i][0]);
+                               System.out.println("Get      : "+result);
+                               System.out.println("Expected : 
"+TEST_SET[i][1]);
+
+                               return false;
+                       }
+
+
+                       System.out.println("Ok");
+               }
+
+               return true;
+       }
+
+
        public static int getUSKRevision(final String key) {
                String[] split;

@@ -276,6 +604,41 @@
        }


+       private final static String[] TEST_USK_REV = {
+               "USK at 
p-uFAWUomLm37MCQLu3r67-B8e6yF1kS4q2v0liM1Vk,h0MWqM~lF0Bec-AIv445PLn06ams9-RFbnwO6Cm2Snc,AQACAAE/Thaw/7/Thaw.frdx",
+               
"USK%4061m2WMJEA9pyQQQ-hjGN8lIM2xToNJHyacJ8ZPB9JCQ,5aEPJBhwIV~HpGIG8YTpKSB39WCGgd0BUNWZ012745Y,AQACAAE/Publicly%20writable%20index/44/Publicly%20writable%20index.frdx",
+               
"USK%4061m2WMJEA9pyQQQ-hjGN8lIM2xToNJHyacJ8ZPB9JCQ,5aEPJBhwIV~HpGIG8YTpKSB39WCGgd0BUNWZ012745Y,AQACAAE/Publicly%20writable%20index/-44/Publicly%20writable%20index.frdx"
+       };
+
+       private final static int[] TEST_USK_REV_RESULTS = {
+               7,
+               44,
+               -44
+       };
+
+
+       private static boolean testGetUSKRevision() {
+               System.out.println("=> getUSKRevision()");
+
+               for (int i = 0; i < TEST_USK_REV.length ; i++) {
+                       System.out.print("==> Key "+Integer.toString(i) + " : 
");
+
+                       int result = getUSKRevision(TEST_USK_REV[i]);
+
+                       if (result != TEST_USK_REV_RESULTS[i]) {
+                               System.out.println("FAILED");
+                               System.out.println("Returned: 
"+Integer.toString(result));
+                               return false;
+                       }
+
+                       System.out.println("Ok");
+               }
+
+               return true;
+       }
+
+
+
        /**
         * will lower the case !
         * will return the begining of the key.
@@ -332,6 +695,15 @@
                        keyA = changeSSKRevision(keyA, 0, 0);
                        keyB = changeSSKRevision(keyB, 0, 0);

+                       String[] splitA = keyA.split("/");
+                       String[] splitB = keyB.split("/");
+
+                       if (splitA.length != splitB.length) {
+                               /* we shorten the keys because one has less 
elements than the other */
+                               keyA = splitA[0]+splitA[1];
+                               keyB = splitB[0]+splitB[1];
+                       }
+
                        keyA = keyA.replaceAll(".frdx", ".xml"); /* we consider 
.frdx equivalent to .xml */
                        keyB = keyB.replaceAll(".frdx", ".xml"); /* we consider 
.frdx equivalent to .xml */
                }
@@ -343,7 +715,68 @@
        }


+       private final static String[][] TEST_COMPARE_KEYS = {
+               {
+                       "SSK at 
61m2WMJEA9pyQQQ-hjGN8lIM2xToNJHyacJ8ZPB9JCQ,5aEPJBhwIV~HpGIG8YTpKSB39WCGgd0BUNWZ012745Y,AQACAAE/Publicly
 writable index-40/Publicly writable index.frdx",
+                       "SSK at 
p-uFAWUomLm37MCQLu3r67-B8e6yF1kS4q2v0liM1Vk,h0MWqM~lF0Bec-AIv445PLn06ams9-RFbnwO6Cm2Snc,AQACAAE/Thaw/7/Thaw.frdx"
+               },
+               {
+                       "SSK at 
61m2WMJEA9pyQQQ-hjGN8lIM2xToNJHyacJ8ZPB9JCQ,5aEPJBhwIV~HpGIG8YTpKSB39WCGgd0BUNWZ012745Y,AQACAAE/Publicly
 writable index-40/Publicly writable index.frdx",
+                       "SSK at 
61m2WMJEA9pyQQQ-hjGN8lIM2xToNJHyacJ8ZPB9JCQ,5aEPJBhwIV~HpGIG8YTpKSB39WCGgd0BUNWZ012745Y,AQACAAE/Publicly
 writable index-40/Publicly writable index.frdx"
+               },
+               {
+                       "SSK at 
61m2WMJEA9pyQQQ-hjGN8lIM2xToNJHyacJ8ZPB9JCQ,5aEPJBhwIV~HpGIG8YTpKSB39WCGgd0BUNWZ012745Y,AQACAAE/Publicly
 writable index-40/Publicly writable index.frdx",
+                       "USK at 
61m2WMJEA9pyQQQ-hjGN8lIM2xToNJHyacJ8ZPB9JCQ,5aEPJBhwIV~HpGIG8YTpKSB39WCGgd0BUNWZ012745Y,AQACAAE/Publicly
 writable index/-3/Publicly writable index.frdx"
+               },
+               {
+                       "SSK at 
61m2WMJEA9pyQQQ-hjGN8lIM2xToNJHyacJ8ZPB9JCQ,5aEPJBhwIV~HpGIG8YTpKSB39WCGgd0BUNWZ012745Y,AQACAAE/Publicly
 writable index-40/Publicly writable index.frdx",
+                       "USK at 
61m2WMJEA9pyQQQ-hjGN8lIM2xToNJHyacJ8ZPB9JCQ,5aEPJBhwIV~HpGIG8YTpKSB39WCGgd0BUNWZ012745Y,AQACAAE/Publicly%20writable%20index/-3/Publicly%20writable%20index.frdx"
+               },
+               {
+                       "SSK at 
61m2WMJEA9pyQQQ-hjGN8lIM2xToNJHyacJ8ZPB9JCQ,5aEPJBhwIV~HpGIG8YTpKSB39WCGgd0BUNWZ012745Y,AQACAAE/Publicly
 writable index-40/Publicly writable index.frdx",
+                       "USK at 
61m2WMJEA9pyQQQ-hjGN8lIM2xToNJHyacJ8ZPB9JCQ,5aEPJBhwIV~HpGIG8YTpKSB39WCGgd0BUNWZ012745Y,AQACAAE/Publicly%20writable%20index/-3"
+               },
+               {
+                       "SSK at 
61m2WMJEA9pyQQQ-hjGN8lIM2xToNJHyacJ8ZPB9JCQ,5aEPJBhwIV~HpGIG8YTpKSB39WCGgd0BUNWZ012745Y,AQACAAE/Publicly
 writable index-40/Publicly writable index.frdx",
+                       "USK at 
61m2WMJEA9pyQQQ-hjGN8lIM2xToNJHyacJ8ZPB9JCQ,5aEPJBhwIV~HpGIG8YTpKSB39WCGgd0BUNWZ012745Y,AQACAAE/Publicly%20writable%20index/-3/pouet.txt"
+               }
+       };

+       private final static boolean[] TEST_COMPARE_KEYS_RESULTS = {
+               false,
+               true,
+               true,
+               true,
+               true/* yes it's a wanted behavior because of the indexes */,
+               false
+       };
+
+       private static boolean testCompareKeys() {
+               System.out.println("=> compareKeys");
+
+               for (int i = 0; i < TEST_COMPARE_KEYS.length ; i++) {
+                       System.out.print("==> Key "+Integer.toString(i) + " : 
");
+
+                       boolean result = compareKeys(TEST_COMPARE_KEYS[i][0],
+                                                    TEST_COMPARE_KEYS[i][1]);
+
+                       if (result != TEST_COMPARE_KEYS_RESULTS[i]) {
+                               System.out.println("FAILED");
+                               System.out.println("Failed on :");
+                               System.out.println(TEST_COMPARE_KEYS[i][0]);
+                               System.out.println(TEST_COMPARE_KEYS[i][1]);
+                               System.out.println("Returned: 
"+Boolean.toString(result));
+                               return false;
+                       }
+
+                       System.out.println("Ok");
+               }
+
+               return true;
+       }
+
+
+
        public static boolean isObsolete(String key) {

                if (key.startsWith("KSK"))
@@ -365,5 +798,27 @@

                return true;
        }
+
+
+       public static void main(String[] args) {
+               System.out.println("FreenetURIHelper tests:");
+
+               if (!testIsAKey()
+                   || !testCleanURI()
+                   || !testGetFilenameFromKey()
+                   || !testConvertSSKtoUSK()
+                   || !testConvertUSKtoSSK()
+                   || !testRevisionChange(true, TEST_CHANGE_SSK_REV)
+                   || !testRevisionChange(false, TEST_CHANGE_USK_REV)
+                   || !testGetUSKRevision()
+                   || !testCompareKeys()) {
+
+                       System.out.println("FAILURE");
+                       return;
+
+               }
+
+               System.out.println("Tests successful");
+       }
 }



Reply via email to