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");
+ }
}