blob: efa0b00407994a6b78f65d2136d107918051542a (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
|
package cgeo.geocaching.connector;
import static org.assertj.core.api.Assertions.assertThat;
import cgeo.geocaching.connector.gc.GCConnector;
import cgeo.geocaching.connector.oc.OCConnector;
import cgeo.geocaching.test.AbstractResourceInstrumentationTestCase;
import cgeo.geocaching.test.mock.GC1ZXX2;
import java.util.Collection;
public class ConnectorFactoryTest extends AbstractResourceInstrumentationTestCase {
public static void testGetConnectors() {
final Collection<IConnector> connectors = ConnectorFactory.getConnectors();
assertThat(connectors).isNotNull();
assertThat(connectors.isEmpty()).isFalse(); // unknown connector must exist
}
public static void testCanHandle() {
assertThat(ConnectorFactory.canHandle("")).isFalse();
assertThat(ConnectorFactory.canHandle("GC12345")).isTrue();
assertThat(ConnectorFactory.canHandle("some string")).isTrue(); // using unknown connector
assertThat(ConnectorFactory.canHandle("[/start with special char")).isFalse();
}
public static void testGeocodeOpenCaching() {
assertThat(ConnectorFactory.getConnector("OZ12345") instanceof OCConnector).isTrue(); // opencaching CZ
assertThat(ConnectorFactory.getConnector("OC12345") instanceof OCConnector).isTrue(); // opencaching DE
assertThat(ConnectorFactory.getConnector("OU12345") instanceof OCConnector).isTrue(); // opencaching US
assertThat(ConnectorFactory.getConnector("OK12345") instanceof OCConnector).isTrue(); // opencaching UK
assertThat(ConnectorFactory.getConnector("OJ12345") instanceof OCConnector).isTrue(); // opencaching JP
assertThat(ConnectorFactory.getConnector("OS12345") instanceof OCConnector).isTrue(); // opencaching NO
assertThat(ConnectorFactory.getConnector("OB12345") instanceof OCConnector).isTrue(); // opencaching NL
assertThat(ConnectorFactory.getConnector("OP12345") instanceof OCConnector).isTrue(); // opencaching PL
}
public static void testGeocodeInvalidFormat() {
// all codes are invalid
assertThat(ConnectorFactory.getConnector("GC") instanceof UnknownConnector).isTrue();
assertThat(ConnectorFactory.getConnector("OC") instanceof UnknownConnector).isTrue();
assertThat(ConnectorFactory.getConnector("OX") instanceof UnknownConnector).isTrue();
assertThat(ConnectorFactory.getConnector("GC 1234") instanceof UnknownConnector).isTrue();
assertThat(ConnectorFactory.getConnector("OC 1234") instanceof UnknownConnector).isTrue();
assertThat(ConnectorFactory.getConnector("OX 1234") instanceof UnknownConnector).isTrue();
assertThat(ConnectorFactory.getConnector("GC-1234") instanceof UnknownConnector).isTrue();
assertThat(ConnectorFactory.getConnector("OC-1234") instanceof UnknownConnector).isTrue();
assertThat(ConnectorFactory.getConnector("OX-1234") instanceof UnknownConnector).isTrue();
}
public static void testGetConnectorCgCache() {
assertThat(ConnectorFactory.getConnector(new GC1ZXX2())).isEqualTo(GCConnector.getInstance());
}
public static void testGetConnectorString() {
final IConnector connector = ConnectorFactory.getConnector("GC12345");
assertThat(connector).isNotNull();
assertThat(connector.getName()).isEqualTo(GCConnector.getInstance().getName());
}
public static void testTrim() {
assertThat(ConnectorFactory.getConnector(" OZ12345 ") instanceof OCConnector).isTrue(); // opencaching CZ
assertThat(ConnectorFactory.getConnector(" OZ 12345 ") instanceof UnknownConnector).isTrue();
}
public static void testGetGeocodeFromUrl() {
assertThat(ConnectorFactory.getGeocodeFromURL("http://coord.info/GC34PLO")).isEqualTo("GC34PLO");
assertThat(ConnectorFactory.getGeocodeFromURL("http://www.coord.info/GC34PLO")).isEqualTo("GC34PLO");
assertThat(ConnectorFactory.getGeocodeFromURL("http://www.opencaching.com/#!geocache/OX1234")).isEqualTo("OX1234");
assertThat(GCConnector.getInstance().getGeocodeFromUrl("http://coord.info/GC12ABC")).isEqualTo("GC12ABC");
assertThat(GCConnector.getInstance().getGeocodeFromUrl("http://www.coord.info/GC12ABC")).isEqualTo("GC12ABC");
assertThat(GCConnector.getInstance().getGeocodeFromUrl("http://www.geocaching.com/geocache/GC12ABC_die-muhlen-im-schondratal-muhle-munchau")).isEqualTo("GC12ABC");
assertThat(GCConnector.getInstance().getGeocodeFromUrl("http://geocaching.com/geocache/GC12ABC_die-muhlen-im-schondratal-muhle-munchau")).isEqualTo("GC12ABC");
// trackable URLs
assertThat(GCConnector.getInstance().getGeocodeFromUrl("http://coord.info/TB1234")).isNull();
assertThat(GCConnector.getInstance().getGeocodeFromUrl("http://www.coord.info/TB1234")).isNull();
// make sure that a mixture of different connector and geocode is recognized as invalid
assertThat(ConnectorFactory.getGeocodeFromURL("http://www.opencaching.com/#!geocache/" + "GC12345")).isNull();
}
public static void testGetTrackableFromURL() throws Exception {
assertThat(ConnectorFactory.getTrackableFromURL("http://www.geokrety.org/konkret.php?id=30970")).isEqualTo("GK78FA");
assertThat(ConnectorFactory.getTrackableFromURL("http://geokrety.org/konkret.php?id=30970")).isEqualTo("GK78FA");
assertThat(ConnectorFactory.getTrackableFromURL("http://coord.info/TB1234")).isEqualTo("TB1234");
assertThat(ConnectorFactory.getTrackableFromURL("http://www.coord.info/TB1234")).isEqualTo("TB1234");
assertThat(ConnectorFactory.getTrackableFromURL("http://geocaching.com/track/details.aspx?tracker=TB1234")).isEqualTo("TB1234");
assertThat(ConnectorFactory.getTrackableFromURL("http://www.geocaching.com/track/details.aspx?tracker=TB1234")).isEqualTo("TB1234");
// cache URLs
assertThat(ConnectorFactory.getTrackableFromURL("http://coord.info/GC1234")).isNull();
assertThat(ConnectorFactory.getTrackableFromURL("http://www.coord.info/GC1234")).isNull();
}
}
|