diff options
Diffstat (limited to 'tests/src')
| -rw-r--r-- | tests/src/cgeo/geocaching/SearchResultTest.java | 58 | ||||
| -rw-r--r-- | tests/src/cgeo/geocaching/cgDataTest.java | 40 |
2 files changed, 98 insertions, 0 deletions
diff --git a/tests/src/cgeo/geocaching/SearchResultTest.java b/tests/src/cgeo/geocaching/SearchResultTest.java index 8fcd188..9bce5a5 100644 --- a/tests/src/cgeo/geocaching/SearchResultTest.java +++ b/tests/src/cgeo/geocaching/SearchResultTest.java @@ -1,8 +1,10 @@ package cgeo.geocaching; +import android.os.Parcel; import android.test.AndroidTestCase; import java.util.HashSet; +import java.util.Set; public class SearchResultTest extends AndroidTestCase { public static void testCreateFromGeocodes() { @@ -14,4 +16,60 @@ public class SearchResultTest extends AndroidTestCase { assertEquals(2, searchResult.getTotal()); assertTrue(searchResult.getGeocodes().contains("GC12345")); } + + public static void testParcel() { + final Set<String> geocodes = new HashSet<String>(); + geocodes.add("GC12345"); + geocodes.add("GC23456"); + geocodes.add("GC34567"); + final SearchResult search = new SearchResult(geocodes); + geocodes.clear(); + geocodes.add("GC45678"); + geocodes.add("GC56789"); + search.addFilteredGeocodes(geocodes); + + Parcel parcel = Parcel.obtain(); + search.writeToParcel(parcel, 0); + // reset to ready for reading + parcel.setDataPosition(0); + + final SearchResult receive = new SearchResult(parcel); + + parcel.recycle(); + + assertEquals(3, receive.getCount()); + assertEquals(2, receive.getFilteredGeocodes().size()); + + assertTrue(receive.getGeocodes().contains("GC12345")); + assertFalse(receive.getGeocodes().contains("GC45678")); + + assertFalse(receive.getFilteredGeocodes().contains("GC12345")); + assertTrue(receive.getFilteredGeocodes().contains("GC45678")); + } + + public static void testAddSearchResult() { + final Set<String> geocodes = new HashSet<String>(); + geocodes.add("GC12345"); + geocodes.add("GC23456"); + geocodes.add("GC34567"); + final SearchResult search = new SearchResult(geocodes); + geocodes.clear(); + geocodes.add("GC45678"); + geocodes.add("GC56789"); + search.addFilteredGeocodes(geocodes); + + final SearchResult newSearch = new SearchResult(); + newSearch.addGeocode("GC01234"); + newSearch.addSearchResult(search); + + assertEquals(4, newSearch.getCount()); + assertEquals(2, newSearch.getFilteredGeocodes().size()); + + assertTrue(newSearch.getGeocodes().contains("GC12345")); + assertTrue(newSearch.getGeocodes().contains("GC01234")); + assertFalse(newSearch.getGeocodes().contains("GC45678")); + + assertFalse(newSearch.getFilteredGeocodes().contains("GC12345")); + assertTrue(newSearch.getFilteredGeocodes().contains("GC45678")); + } } diff --git a/tests/src/cgeo/geocaching/cgDataTest.java b/tests/src/cgeo/geocaching/cgDataTest.java index cc1148a..7ea4b21 100644 --- a/tests/src/cgeo/geocaching/cgDataTest.java +++ b/tests/src/cgeo/geocaching/cgDataTest.java @@ -1,6 +1,8 @@ package cgeo.geocaching; import cgeo.CGeoTestCase; +import cgeo.geocaching.connector.gc.GCConnector; +import cgeo.geocaching.connector.gc.Tile; import cgeo.geocaching.enumerations.CacheType; import cgeo.geocaching.enumerations.LoadFlags; import cgeo.geocaching.enumerations.LoadFlags.SaveFlag; @@ -149,4 +151,42 @@ public class cgDataTest extends CGeoTestCase { // check that two different routines behave the same assertEquals(cgData.getAllHistoryCachesCount(), sumCaches); } + + public static void testCachedMissing() { + + // Tile to test + final Tile tile = new Tile(new Geopoint("N49 44.0 E8 37.0"), 14); + final Set<Tile> tiles = new HashSet<Tile>(); + tiles.add(tile); + + // set up geocaches to fill into cacheCache + final Geocache main = new Geocache(); + main.setGeocode("GC12345"); + main.setCoords(new Geopoint("N49 44.0 E8 37.0")); + final Geocache inTile = new Geocache(); + inTile.setGeocode("GC12346"); + inTile.setCoords(new Geopoint("N49 44.001 E8 37.001")); + final Geocache outTile = new Geocache(); + outTile.setGeocode("GC12347"); + outTile.setCoords(new Geopoint(tile.getViewport().getLatitudeMin() - 0.1, tile.getViewport().getLongitudeMin() - 0.1)); + final Geocache otherConnector = new Geocache(); + otherConnector.setGeocode("OC0001"); + otherConnector.setCoords(new Geopoint("N49 44.0 E8 37.0")); + + // put in cache + cgData.saveCache(main, EnumSet.of(SaveFlag.SAVE_CACHE)); + cgData.saveCache(inTile, EnumSet.of(SaveFlag.SAVE_CACHE)); + cgData.saveCache(outTile, EnumSet.of(SaveFlag.SAVE_CACHE)); + cgData.saveCache(otherConnector, EnumSet.of(SaveFlag.SAVE_CACHE)); + + final SearchResult search = new SearchResult(main); + + Set<String> filteredGeoCodes = cgData.getCachedMissingFromSearch(search, tiles, GCConnector.getInstance()); + + assertTrue(filteredGeoCodes.contains(inTile.getGeocode())); + assertFalse(filteredGeoCodes.contains(otherConnector.getGeocode())); + assertFalse(filteredGeoCodes.contains(outTile.getGeocode())); + assertFalse(filteredGeoCodes.contains(main.getGeocode())); + + } } |
