aboutsummaryrefslogtreecommitdiffstats
path: root/tests/src
diff options
context:
space:
mode:
authorrsudev <rasch@munin-soft.de>2012-11-24 21:16:22 +0100
committerrsudev <rasch@munin-soft.de>2012-11-24 21:16:22 +0100
commit09efdfb6039e023cce1df0fc036803df092fbacd (patch)
tree5d8420935417482879354f526193ef4ca10e1ee7 /tests/src
parentb4b34451c6b42117524abb8e11dbdaae1355be57 (diff)
downloadcgeo-09efdfb6039e023cce1df0fc036803df092fbacd.zip
cgeo-09efdfb6039e023cce1df0fc036803df092fbacd.tar.gz
cgeo-09efdfb6039e023cce1df0fc036803df092fbacd.tar.bz2
Fixes #2199
- Ensures 'not null' for trackable logs - Ensures loadLogs never returns null, only empty List<> - Three test-cases, surfacing the initial bug and the aspects of the fix
Diffstat (limited to 'tests/src')
-rw-r--r--tests/src/cgeo/geocaching/cgDataTest.java42
1 files changed, 42 insertions, 0 deletions
diff --git a/tests/src/cgeo/geocaching/cgDataTest.java b/tests/src/cgeo/geocaching/cgDataTest.java
index 0fdb5c6..3cee32f 100644
--- a/tests/src/cgeo/geocaching/cgDataTest.java
+++ b/tests/src/cgeo/geocaching/cgDataTest.java
@@ -3,11 +3,15 @@ package cgeo.geocaching;
import cgeo.CGeoTestCase;
import cgeo.geocaching.enumerations.CacheType;
import cgeo.geocaching.enumerations.LoadFlags;
+import cgeo.geocaching.enumerations.LoadFlags.SaveFlag;
import cgeo.geocaching.geopoint.Geopoint;
import cgeo.geocaching.geopoint.Viewport;
+import java.util.ArrayList;
import java.util.Collections;
+import java.util.EnumSet;
import java.util.HashSet;
+import java.util.List;
import java.util.Set;
public class cgDataTest extends CGeoTestCase {
@@ -95,4 +99,42 @@ public class cgDataTest extends CGeoTestCase {
app.getWaypointsInViewport(viewport, true, false, CacheType.TRADITIONAL);
app.getWaypointsInViewport(viewport, true, true, CacheType.TRADITIONAL);
}
+
+ // Check that saving a cache and trackable without logs works (see #2199)
+ public static void testSaveWithoutLogs() {
+
+ cgeoapplication app = cgeoapplication.getInstance();
+
+ final String GEOCODE_CACHE = "TEST";
+
+ // create cache and trackable
+ final cgCache cache = new cgCache();
+ cache.setGeocode(GEOCODE_CACHE);
+ cache.setDetailed(true);
+ final cgTrackable trackable = new cgTrackable();
+ trackable.setLogs(null);
+ final List<cgTrackable> inventory = new ArrayList<cgTrackable>();
+ inventory.add(trackable);
+ cache.setInventory(inventory);
+
+ try {
+ app.saveCache(cache, EnumSet.of(SaveFlag.SAVE_DB));
+ final cgCache loadedCache = app.loadCache(GEOCODE_CACHE, LoadFlags.LOAD_ALL_DB_ONLY);
+ assertNotNull("Cache was not saved!", loadedCache);
+ assertEquals(1, loadedCache.getInventory().size());
+ } finally {
+ app.removeCache(GEOCODE_CACHE, LoadFlags.REMOVE_ALL);
+ }
+ }
+
+ // Loading logs for an empty geocode should return an empty list, not null!
+ public static void testLoadLogsFromEmptyGeocode() {
+
+ cgeoapplication app = cgeoapplication.getInstance();
+
+ List<LogEntry> logs = app.loadLogs("");
+
+ assertNotNull("Logs must not be null", logs);
+ assertEquals("Logs from empty geocode must be empty", 0, logs.size());
+ }
}