aboutsummaryrefslogtreecommitdiffstats
path: root/tests/src
diff options
context:
space:
mode:
authorrsudev <rasch@munin-soft.de>2013-07-06 15:08:08 +0200
committerrsudev <rasch@munin-soft.de>2013-07-06 15:08:08 +0200
commit7595b69b01a2e43befb2565a23a9b3f6c8736160 (patch)
treed26e3fcdb1c218eaf232dfdc215f227680c38ae6 /tests/src
parent06e089bd300a3967f1c50d6509bdc8a0b792bdad (diff)
downloadcgeo-7595b69b01a2e43befb2565a23a9b3f6c8736160.zip
cgeo-7595b69b01a2e43befb2565a23a9b3f6c8736160.tar.gz
cgeo-7595b69b01a2e43befb2565a23a9b3f6c8736160.tar.bz2
Fixes #2826, Found caches shown on live map
Implemented detection and filtering for vanishing caches Added testcases for new functionality
Diffstat (limited to 'tests/src')
-rw-r--r--tests/src/cgeo/geocaching/SearchResultTest.java58
-rw-r--r--tests/src/cgeo/geocaching/cgDataTest.java40
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()));
+
+ }
}