<NME> CryptUtilsTest.java
<BEF> package cgeo.geocaching.utils;

import cgeo.geocaching.utils.CryptUtils;

import junit.framework.TestCase;

public class CryptUtilsTest extends TestCase {
public class CryptUtilsTest {
    @Test
    public void testROT13() {
        assertEquals("Pnpur uvag", CryptUtils.rot13("Cache hint"));
        assertEquals("123", CryptUtils.rot13("123"));
    }
}
        assertThat(CryptUtils.rot13("ƖƖyƖƖƖƖ")).isEqualTo("ƖƖlƖƖƖƖ");
    }

    @Test
    public void testMd5() {
        assertThat(CryptUtils.md5("")).isEqualTo("d41d8cd98f00b204e9800998ecf8427e");
        // expected value taken from debugger. should assure every developer uses UTF-8
        assertThat(CryptUtils.md5("äöü")).isEqualTo("a7f4e3ec08f09be2ef7ecb4eea5f8981");
    }
}

<MSG> Fix #646: caches can not be watched if imported by GPX

Part of it: Add a method to convert the geocode to the id with a base31-conversion (with Groundspeak-alphabet).
<DFF> @@ -1,7 +1,5 @@
 package cgeo.geocaching.utils;
 
-import cgeo.geocaching.utils.CryptUtils;
-
 import junit.framework.TestCase;
 
 public class CryptUtilsTest extends TestCase {
@@ -11,4 +9,10 @@ public class CryptUtilsTest extends TestCase {
         assertEquals("Pnpur uvag", CryptUtils.rot13("Cache hint"));
         assertEquals("123", CryptUtils.rot13("123"));
     }
+
+    public static void testConvertToGcBase31() {
+        assertEquals("1186660", CryptUtils.convertToGcBase31("GC1PKK9"));
+        assertEquals("4660", CryptUtils.convertToGcBase31("GC1234"));
+        assertEquals("61731", CryptUtils.convertToGcBase31("GCF123"));
+    }
 }

Fix #646: caches can not be watched if imported by GPX