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
|
package cgeo.test;
import static junit.framework.Assert.assertEquals;
import static junit.framework.Assert.assertNotNull;
import static junit.framework.Assert.assertTrue;
import cgeo.geocaching.Geocache;
import cgeo.geocaching.ICache;
import cgeo.geocaching.enumerations.LogType;
import cgeo.geocaching.utils.CryptUtils;
import org.apache.commons.lang3.StringUtils;
import java.util.Date;
public abstract class Compare {
public static void assertCompareCaches(ICache expected, Geocache actual, boolean all) {
String geocode = expected.getGeocode();
assertNotNull("Cache " + geocode + " is missing", actual);
assertEquals("Cache " + geocode + ": geocode wrong", expected.getGeocode(), actual.getGeocode());
assertTrue("Cache " + geocode + ": type wrong", expected.getType() == actual.getType());
assertEquals("Cache " + geocode + ": OwnerDisplayName wrong", expected.getOwnerDisplayName(), actual.getOwnerDisplayName());
assertEquals("Cache " + geocode + ": difficulty wrong", expected.getDifficulty(), actual.getDifficulty());
assertEquals("Cache " + geocode + ": terrain wrong", expected.getTerrain(), actual.getTerrain());
assertEquals("Cache " + geocode + ": disabled wrong", expected.isDisabled(), actual.isDisabled());
assertEquals("Cache " + geocode + ": archived wrong", expected.isArchived(), actual.isArchived());
assertEquals("Cache " + geocode + ": size wrong", expected.getSize(), actual.getSize());
assertEquals("Cache " + geocode + ": name wrong", expected.getName(), actual.getName());
assertEquals("Cache " + geocode + ": guid wrong", expected.getGuid(), actual.getGuid());
assertTrue("Cache " + geocode + ": fav points wrong", expected.getFavoritePoints() <= actual.getFavoritePoints());
final Date hiddenDate = actual.getHiddenDate();
assertNotNull(hiddenDate);
assertEquals("Cache " + geocode + ": hidden date wrong", expected.getHiddenDate().toString(), hiddenDate.toString());
assertEquals("Cache " + geocode + ": premium only wrong", expected.isPremiumMembersOnly(), actual.isPremiumMembersOnly());
if (all) {
assertEquals("Cache " + geocode + ": coords wrong", expected.getCoords(), actual.getCoords());
assertTrue("Cache " + geocode + ": reliable latlon wrong", actual.isReliableLatLon());
assertEquals("Cache " + geocode + ": owning status wrong", expected.isOwner(), actual.isOwner());
assertEquals("Cache " + geocode + ": owner user id wrong", expected.getOwnerUserId(), actual.getOwnerUserId());
assertTrue("Cache " + geocode + ": hint wrong", StringUtils.equals(expected.getHint(), actual.getHint()) || StringUtils.equals(expected.getHint(), CryptUtils.rot13(actual.getHint())));
assertTrue("Cache " + geocode + ": description wrong", actual.getDescription().startsWith(expected.getDescription()));
assertEquals("Cache " + geocode + ": short description wrong", expected.getShortDescription(), actual.getShortDescription());
assertEquals("Cache " + geocode + ": cache id wrong", expected.getCacheId(), actual.getCacheId());
assertEquals("Cache " + geocode + ": location wrong", expected.getLocation(), actual.getLocation());
assertEquals("Cache " + geocode + ": found status wrong", expected.isFound(), actual.isFound());
assertEquals("Cache " + geocode + ": favorite status wrong", expected.isFavorite(), actual.isFavorite());
assertEquals("Cache " + geocode + ": watchlist status wrong", expected.isOnWatchlist(), actual.isOnWatchlist());
for (String attribute : expected.getAttributes()) {
assertTrue("Expected attribute '" + attribute + "' not found in " + actual.getGeocode(), actual.getAttributes().contains(attribute));
}
for (LogType logType : expected.getLogCounts().keySet()) {
assertTrue("Cache " + geocode + ": logcount for type " + logType.toString() + " wrong", actual.getLogCounts().get(logType) >= expected.getLogCounts().get(logType));
}
// The inventories can differ too often, therefore we don't compare them. Also, the personal note
// cannot be expected to match with different tester accounts.
final int actualSpoilersSize = null != actual.getSpoilers() ? actual.getSpoilers().size() : 0;
final int expectedSpoilersSize = null != expected.getSpoilers() ? expected.getSpoilers().size() : 0;
assertEquals("Cache " + geocode + ": spoiler count wrong", expectedSpoilersSize, actualSpoilersSize);
}
}
}
|