From 09efdfb6039e023cce1df0fc036803df092fbacd Mon Sep 17 00:00:00 2001 From: rsudev Date: Sat, 24 Nov 2012 21:16:22 +0100 Subject: 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 --- tests/src/cgeo/geocaching/cgDataTest.java | 42 +++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) (limited to 'tests') 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 inventory = new ArrayList(); + 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 logs = app.loadLogs(""); + + assertNotNull("Logs must not be null", logs); + assertEquals("Logs from empty geocode must be empty", 0, logs.size()); + } } -- cgit v1.1