diff options
| author | rsudev <rasch@munin-soft.de> | 2012-11-24 21:16:22 +0100 |
|---|---|---|
| committer | rsudev <rasch@munin-soft.de> | 2012-11-24 21:16:22 +0100 |
| commit | 09efdfb6039e023cce1df0fc036803df092fbacd (patch) | |
| tree | 5d8420935417482879354f526193ef4ca10e1ee7 /tests/src | |
| parent | b4b34451c6b42117524abb8e11dbdaae1355be57 (diff) | |
| download | cgeo-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.java | 42 |
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()); + } } |
