package cgeo.geocaching.connector.gc; import cgeo.geocaching.test.mock.MockedCache; import cgeo.geocaching.utils.BaseUtils; import android.test.AndroidTestCase; import android.text.Html; public class GCConstantsTest extends AndroidTestCase { public static void testLocation() { // GC37GFJ assertEquals("Bretagne, France", parseLocation(" In Bretagne, France
")); // GCV2R9 assertEquals("California, United States", parseLocation("In California, United States
")); } private static String parseLocation(final String html) { return BaseUtils.getMatch(html, GCConstants.PATTERN_LOCATION, true, ""); } public static void testCacheCount() { assertCacheCount(149, " 149"); assertCacheCount(590, MockedCache.readCachePage("GC2CJPF")); // # of caches found by blafoo at the point of time creating the mocked data assertCacheCount(1510, " 1,510 ·  2"); assertCacheCount(67, " 67"); assertCacheCount(1067, " 1,067"); // now checking usage of "." as thousands separator assertCacheCount(1510, " 1.510 ·  2"); assertCacheCount(1067, " 1.067"); } private static void assertCacheCount(final int count, final String html) { try { assertEquals(count, Integer.parseInt(BaseUtils.getMatch(html, GCConstants.PATTERN_CACHES_FOUND, true, "0").replaceAll("[,.]", ""))); } catch (NumberFormatException e) { fail(); } } public static void testConstants() { String session = "userSession = new Groundspeak.Map.UserSession('aKWZ', userOptions:'XPTf', sessionToken:'123pNKwdktYGZL0xd-I7yqA6nm_JE1BDUtM4KcOkifin2TRCMutBd_PZE14Ohpffs2ZgkTnxTSnxYpBigK4hBA2', subscriberType: 3, enablePersonalization: true });"; assertEquals("aKWZ", BaseUtils.getMatch(session, GCConstants.PATTERN_USERSESSION, "")); assertTrue(BaseUtils.getMatch(session, GCConstants.PATTERN_SESSIONTOKEN, "").startsWith("123pNK")); } public static void testTBWithSpecialChar() { String page = "\n"; assertEquals("Schlauchen&ravestorm", Html.fromHtml(BaseUtils.getMatch(page, GCConstants.PATTERN_TRACKABLE_NAME, "")).toString()); } }