diff options
| author | Bananeweizen <bananeweizen@gmx.de> | 2012-03-04 16:12:00 +0100 |
|---|---|---|
| committer | Bananeweizen <bananeweizen@gmx.de> | 2012-03-04 16:12:00 +0100 |
| commit | 7ad0df840d00ee9dd5467564e46e5f59f64faf37 (patch) | |
| tree | 2255285e2faabdb5f8b9f74f8a998532882e3737 | |
| parent | fe1c44bc5d7d124841eb3025f91739230f217b5b (diff) | |
| download | cgeo-7ad0df840d00ee9dd5467564e46e5f59f64faf37.zip cgeo-7ad0df840d00ee9dd5467564e46e5f59f64faf37.tar.gz cgeo-7ad0df840d00ee9dd5467564e46e5f59f64faf37.tar.bz2 | |
Fix some unit tests. Does anyone besides me run them?
6 files changed, 44 insertions, 13 deletions
diff --git a/main/src/cgeo/geocaching/connector/OXConnector.java b/main/src/cgeo/geocaching/connector/OXConnector.java index 7348421..755dbaa 100644 --- a/main/src/cgeo/geocaching/connector/OXConnector.java +++ b/main/src/cgeo/geocaching/connector/OXConnector.java @@ -2,7 +2,7 @@ package cgeo.geocaching.connector; import cgeo.geocaching.cgCache; -import org.apache.commons.lang3.StringUtils; +import java.util.regex.Pattern; /** * connector for OpenCaching.com @@ -10,9 +10,11 @@ import org.apache.commons.lang3.StringUtils; */ public class OXConnector extends AbstractConnector { + private static final Pattern PATTERN_GEOCODE = Pattern.compile("OX[A-Z0-9]+", Pattern.CASE_INSENSITIVE); + @Override public boolean canHandle(String geocode) { - return StringUtils.startsWithIgnoreCase(geocode, "OX"); + return PATTERN_GEOCODE.matcher(geocode).matches(); } @Override diff --git a/main/src/cgeo/geocaching/connector/gc/GCConnector.java b/main/src/cgeo/geocaching/connector/gc/GCConnector.java index 9f71f62..95e4921 100644 --- a/main/src/cgeo/geocaching/connector/gc/GCConnector.java +++ b/main/src/cgeo/geocaching/connector/gc/GCConnector.java @@ -38,7 +38,10 @@ public class GCConnector extends AbstractConnector { @Override public boolean canHandle(String geocode) { - return StringUtils.startsWithIgnoreCase(geocode, "GC"); + if (geocode == null) { + return false; + } + return GCConstants.PATTERN_GC_CODE.matcher(geocode).matches(); } @Override diff --git a/main/src/cgeo/geocaching/connector/gc/GCConstants.java b/main/src/cgeo/geocaching/connector/gc/GCConstants.java index b166d95..cb4f896 100644 --- a/main/src/cgeo/geocaching/connector/gc/GCConstants.java +++ b/main/src/cgeo/geocaching/connector/gc/GCConstants.java @@ -143,8 +143,8 @@ public final class GCConstants { /** * Patterns for GC and TB codes */ - public final static Pattern PATTERN_GC_CODE = Pattern.compile("GC[0-9A-Z]*", Pattern.CASE_INSENSITIVE); - public final static Pattern PATTERN_TB_CODE = Pattern.compile("TB[0-9A-Z]*", Pattern.CASE_INSENSITIVE); + public final static Pattern PATTERN_GC_CODE = Pattern.compile("GC[0-9A-Z]+", Pattern.CASE_INSENSITIVE); + public final static Pattern PATTERN_TB_CODE = Pattern.compile("TB[0-9A-Z]+", Pattern.CASE_INSENSITIVE); /** Live Map since 14.02.2012 */ public final static Pattern PATTERN_USERSESSION = Pattern.compile("UserSession\\('([^']+)'"); diff --git a/main/src/cgeo/geocaching/connector/opencaching/OpenCachingConnector.java b/main/src/cgeo/geocaching/connector/opencaching/OpenCachingConnector.java index 7c13c5b..bfaa345 100644 --- a/main/src/cgeo/geocaching/connector/opencaching/OpenCachingConnector.java +++ b/main/src/cgeo/geocaching/connector/opencaching/OpenCachingConnector.java @@ -3,26 +3,27 @@ package cgeo.geocaching.connector.opencaching; import cgeo.geocaching.cgCache; import cgeo.geocaching.connector.AbstractConnector; -import org.apache.commons.lang3.StringUtils; - import java.util.regex.Pattern; public class OpenCachingConnector extends AbstractConnector { private final String host; private final String name; - private final String prefix; + private final Pattern codePattern; private static final Pattern gpxZipFilePattern = Pattern.compile("oc[a-z]{2,3}\\d{5,}\\.zip", Pattern.CASE_INSENSITIVE); public OpenCachingConnector(final String name, final String host, final String prefix) { this.name = name; this.host = host; - this.prefix = prefix; + codePattern = Pattern.compile(prefix + "[A-Z0-9]+", Pattern.CASE_INSENSITIVE); } @Override public boolean canHandle(String geocode) { - return StringUtils.startsWithIgnoreCase(geocode, prefix); + if (geocode == null) { + return false; + } + return codePattern.matcher(geocode).matches(); } @Override diff --git a/tests/src/cgeo/geocaching/cgBaseTest.java b/tests/src/cgeo/geocaching/cgBaseTest.java index 6b7c6b6..45aceca 100644 --- a/tests/src/cgeo/geocaching/cgBaseTest.java +++ b/tests/src/cgeo/geocaching/cgBaseTest.java @@ -21,7 +21,7 @@ public class cgBaseTest extends AndroidTestCase { public static void testRegEx() { String page = MockedCache.readCachePage("GC2CJPF"); assertEquals("blafoo", BaseUtils.getMatch(page, GCConstants.PATTERN_LOGIN_NAME, true, "???")); - assertEquals("Premium Member", BaseUtils.getMatch(page, GCConstants.PATTERN_MEMBER_STATUS, true, "???")); + assertTrue(page.contains("id=\"ctl00_hlRenew\"") || "Premium Member".equals(BaseUtils.getMatch(page, GCConstants.PATTERN_MEMBER_STATUS, true, "???"))); int cachesFound = Integer.parseInt(BaseUtils.getMatch(page, GCConstants.PATTERN_CACHES_FOUND, true, "0").replaceAll("[,.]", "")); assertTrue(cachesFound >= 491); } diff --git a/tests/src/cgeo/geocaching/connector/ConnectorFactoryTest.java b/tests/src/cgeo/geocaching/connector/ConnectorFactoryTest.java index 41a819f..75beb2c 100644 --- a/tests/src/cgeo/geocaching/connector/ConnectorFactoryTest.java +++ b/tests/src/cgeo/geocaching/connector/ConnectorFactoryTest.java @@ -1,13 +1,14 @@ package cgeo.geocaching.connector; import cgeo.geocaching.connector.gc.GCConnector; +import cgeo.geocaching.connector.opencaching.OpenCachingConnector; import cgeo.geocaching.test.AbstractResourceInstrumentationTestCase; import cgeo.geocaching.test.mock.GC1ZXX2; public class ConnectorFactoryTest extends AbstractResourceInstrumentationTestCase { public static void testGetConnectors() { - IConnector[] connectors = ConnectorFactory.getConnectors(); + final IConnector[] connectors = ConnectorFactory.getConnectors(); assertNotNull(connectors); assertTrue(connectors.length > 0); // unknown connector must exist } @@ -19,12 +20,36 @@ public class ConnectorFactoryTest extends AbstractResourceInstrumentationTestCas assertFalse(ConnectorFactory.canHandle("[/start with special char")); } + public static void testGeocodeOpenCaching() { + assertTrue(ConnectorFactory.getConnector("OZ12345") instanceof OpenCachingConnector); // opencaching CZ + assertTrue(ConnectorFactory.getConnector("OC12345") instanceof OpenCachingConnector); // opencaching DE + assertTrue(ConnectorFactory.getConnector("OU12345") instanceof OpenCachingConnector); // opencaching US + assertTrue(ConnectorFactory.getConnector("OK12345") instanceof OpenCachingConnector); // opencaching UK + assertTrue(ConnectorFactory.getConnector("OJ12345") instanceof OpenCachingConnector); // opencaching JP + assertTrue(ConnectorFactory.getConnector("OS12345") instanceof OpenCachingConnector); // opencaching NO + assertTrue(ConnectorFactory.getConnector("OB12345") instanceof OpenCachingConnector); // opencaching NL + assertTrue(ConnectorFactory.getConnector("OP12345") instanceof OpenCachingConnector); // opencaching PL + } + + public static void testGeocodeInvalidFormat() throws Exception { + // all codes are invalid + assertTrue(ConnectorFactory.getConnector("GC") instanceof UnknownConnector); + assertTrue(ConnectorFactory.getConnector("OC") instanceof UnknownConnector); + assertTrue(ConnectorFactory.getConnector("OX") instanceof UnknownConnector); + assertTrue(ConnectorFactory.getConnector("GC 1234") instanceof UnknownConnector); + assertTrue(ConnectorFactory.getConnector("OC 1234") instanceof UnknownConnector); + assertTrue(ConnectorFactory.getConnector("OX 1234") instanceof UnknownConnector); + assertTrue(ConnectorFactory.getConnector("GC-1234") instanceof UnknownConnector); + assertTrue(ConnectorFactory.getConnector("OC-1234") instanceof UnknownConnector); + assertTrue(ConnectorFactory.getConnector("OX-1234") instanceof UnknownConnector); + } + public static void testGetConnectorCgCache() { assertEquals(GCConnector.getInstance(), ConnectorFactory.getConnector(new GC1ZXX2())); } public static void testGetConnectorString() { - IConnector connector = ConnectorFactory.getConnector("GC12345"); + final IConnector connector = ConnectorFactory.getConnector("GC12345"); assertNotNull(connector); assertEquals(GCConnector.getInstance().getName(), connector.getName()); } |
