Package org.apache.lucene.tests.geo
Class BaseGeoPointTestCase
- java.lang.Object
-
- org.junit.Assert
-
- org.apache.lucene.tests.util.LuceneTestCase
-
- org.apache.lucene.tests.geo.BaseGeoPointTestCase
-
public abstract class BaseGeoPointTestCase extends LuceneTestCase
Abstract class to do basic tests for a geospatial impl (high level fields and queries) NOTE: This test focuses on geospatial (distance queries, polygon queries, etc) indexing and search, not any underlying storage format or encoding: it merely supplies two hooks for the encoding so that tests can be exact. The [stretch] goal is for this test to be so thorough in testing a new geo impl that if this test passes, then all Lucene tests should also pass. Ie, if there is some bug in a given geo impl that this test fails to catch then this test needs to be improved!
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class org.apache.lucene.tests.util.LuceneTestCase
LuceneTestCase.AwaitsFix, LuceneTestCase.BadApple, LuceneTestCase.Monster, LuceneTestCase.Nightly, LuceneTestCase.SuppressCodecs, LuceneTestCase.SuppressFileSystems, LuceneTestCase.SuppressFsync, LuceneTestCase.SuppressReproduceLine, LuceneTestCase.SuppressSysoutChecks, LuceneTestCase.SuppressTempFileChecks, LuceneTestCase.ThrowingConsumer<T>, LuceneTestCase.ThrowingRunnable, LuceneTestCase.Weekly
-
-
Field Summary
Fields Modifier and Type Field Description protected static String
FIELD_NAME
-
Fields inherited from class org.apache.lucene.tests.util.LuceneTestCase
assertsAreEnabled, classRules, DEFAULT_LINE_DOCS_FILE, INFOSTREAM, JENKINS_LARGE_LINE_DOCS_FILE, LEAVE_TEMPORARY, MAYBE_CACHE_POLICY, RANDOM_MULTIPLIER, ruleChain, suiteFailureMarker, SYSPROP_AWAITSFIX, SYSPROP_BADAPPLES, SYSPROP_FAILFAST, SYSPROP_MAXFAILURES, SYSPROP_MONSTER, SYSPROP_NIGHTLY, SYSPROP_WEEKLY, TEST_ASSERTS_ENABLED, TEST_AWAITSFIX, TEST_BADAPPLES, TEST_CODEC, TEST_DIRECTORY, TEST_DOCVALUESFORMAT, TEST_LINE_DOCS_FILE, TEST_MONSTER, TEST_NIGHTLY, TEST_POSTINGSFORMAT, TEST_THROTTLING, TEST_WEEKLY, VERBOSE
-
-
Constructor Summary
Constructors Constructor Description BaseGeoPointTestCase()
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected abstract void
addPointToDoc(String field, Document doc, double lat, double lon)
protected abstract Query
newDistanceQuery(String field, double centerLat, double centerLon, double radiusMeters)
protected abstract Query
newGeometryQuery(String field, LatLonGeometry... geometry)
protected abstract Query
newPolygonQuery(String field, Polygon... polygon)
protected abstract Query
newRectQuery(String field, double minLat, double maxLat, double minLon, double maxLon)
protected Rectangle
nextBox()
protected Circle
nextCircle()
protected LatLonGeometry[]
nextGeometry()
protected double
nextLatitude()
protected double
nextLongitude()
protected Polygon
nextPolygon()
protected double
quantizeLat(double lat)
Override this to quantize randomly generated lat, so the test won't fail due to quantization errors, which are 1) annoying to debug, and 2) should never affect "real" usage terribly.protected double
quantizeLon(double lon)
Override this to quantize randomly generated lon, so the test won't fail due to quantization errors, which are 1) annoying to debug, and 2) should never affect "real" usage terribly.void
testAllLatEqual()
void
testAllLonEqual()
void
testBoxBasics()
Add a single point and search for it in a boxvoid
testBoxInvalidCoordinates()
void
testBoxNull()
null field name not allowedvoid
testDistanceBasics()
test we can search for a pointvoid
testDistanceIllegal()
distance query should not accept invalid lat/lon as originvoid
testDistanceInf()
Inf distance queries are not allowedvoid
testDistanceNaN()
NaN distance queries are not allowedvoid
testDistanceNegative()
negative distance queries are not allowedvoid
testDistanceNull()
null field name not allowedvoid
testEquals()
void
testIndexExtremeValues()
Valid values that should not cause exceptionvoid
testIndexInfValues()
Inf: illegalvoid
testIndexNaNValues()
NaN: illegalvoid
testIndexOutOfRangeValues()
Invalid valuesvoid
testLowCardinality()
void
testMultiPolygonBasics()
test we can search for a multi-polygonvoid
testMultiValued()
void
testPolygonBasics()
test we can search for a polygonvoid
testPolygonHole()
test we can search for a polygon with a hole (but still includes the doc)void
testPolygonHoleExcludes()
test we can search for a polygon with a hole (that excludes the doc)void
testPolygonNullField()
null field name not allowedvoid
testRandomBig()
void
testRandomDistance()
Run a few iterations with just 10 docs, hopefully easy to debugvoid
testRandomDistanceHuge()
Runs with thousands of docsvoid
testRandomMedium()
void
testRandomTiny()
void
testRectBoundariesAreInclusive()
void
testSamePointManyTimes()
void
testSmallSetDateline()
void
testSmallSetDistance()
void
testSmallSetDistanceDateline()
void
testSmallSetDistanceNotEmpty()
see https://issues.apache.org/jira/browse/LUCENE-6905void
testSmallSetHugeDistance()
Explicitly largevoid
testSmallSetMultiValued()
void
testSmallSetPoly()
void
testSmallSetPolyWholeMap()
void
testSmallSetRect()
void
testSmallSetTinyDistance()
void
testSmallSetWholeMap()
protected void
verifyRandomDistances(double[] lats, double[] lons)
protected void
verifyRandomGeometries(double[] lats, double[] lons)
protected void
verifyRandomPolygons(double[] lats, double[] lons)
protected void
verifyRandomRectangles(double[] lats, double[] lons)
-
Methods inherited from class org.apache.lucene.tests.util.LuceneTestCase
addVirusChecker, assertDeletedDocsEquals, assertDocsAndPositionsEnumEquals, assertDocsEnumEquals, assertDocsSkippingEquals, assertDocValuesEquals, assertDocValuesEquals, assertFieldInfosEquals, assertNormsEquals, assertPointsEquals, assertPositionsSkippingEquals, assertReaderEquals, assertReaderStatisticsEquals, assertStoredFieldEquals, assertStoredFieldsEquals, assertTermsEnumEquals, assertTermsEquals, assertTermsEquals, assertTermsStatisticsEquals, assertTermStatsEquals, assertTermVectorsEquals, asSet, assumeFalse, assumeNoException, assumeTrue, assumeWorkingMMapOnWindows, atLeast, atLeast, callStackContains, callStackContains, callStackContainsAnyOf, closeAfterSuite, closeAfterTest, collate, createTempDir, createTempDir, createTempFile, createTempFile, dumpArray, dumpIterator, ensureSaneIWCOnNightly, expectThrows, expectThrows, expectThrows, expectThrowsAnyOf, expectThrowsAnyOf, getDataInputStream, getDataPath, getJvmForkArguments, getOnlyLeafReader, getTestClass, getTestName, hasWorkingMMapOnWindows, isTestThread, localeForLanguageTag, maybeChangeLiveIndexWriterConfig, maybeWrapReader, newAlcoholicMergePolicy, newAlcoholicMergePolicy, newBytesRef, newBytesRef, newBytesRef, newBytesRef, newBytesRef, newBytesRef, newDirectory, newDirectory, newDirectory, newDirectory, newDirectory, newField, newField, newFSDirectory, newFSDirectory, newIndexWriterConfig, newIndexWriterConfig, newIndexWriterConfig, newIOContext, newIOContext, newLogMergePolicy, newLogMergePolicy, newLogMergePolicy, newLogMergePolicy, newLogMergePolicy, newMaybeVirusCheckingDirectory, newMaybeVirusCheckingFSDirectory, newMergePolicy, newMergePolicy, newMergePolicy, newMockDirectory, newMockDirectory, newMockDirectory, newMockFSDirectory, newMockFSDirectory, newSearcher, newSearcher, newSearcher, newSearcher, newSnapshotIndexWriterConfig, newStringField, newStringField, newStringField, newStringField, newTextField, newTextField, newTieredMergePolicy, newTieredMergePolicy, overrideDefaultQueryCache, overrideTestDefaultQueryCache, random, randomLocale, randomTimeZone, randomVectorFormat, rarely, rarely, replaceMaxFailureRule, resetDefaultQueryCache, restoreCPUCoreCount, restoreIndexWriterMaxDocs, runWithRestrictedPermissions, setIndexWriterMaxDocs, setUp, setupCPUCoreCount, setUpExecutorService, shutdownExecutorService, slowFileExists, tearDown, usually, usually, wrapReader
-
Methods inherited from class org.junit.Assert
assertArrayEquals, assertArrayEquals, assertArrayEquals, assertArrayEquals, assertArrayEquals, assertArrayEquals, assertArrayEquals, assertArrayEquals, assertArrayEquals, assertArrayEquals, assertArrayEquals, assertArrayEquals, assertArrayEquals, assertArrayEquals, assertArrayEquals, assertArrayEquals, assertArrayEquals, assertArrayEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertFalse, assertFalse, assertNotEquals, assertNotEquals, assertNotEquals, assertNotEquals, assertNotEquals, assertNotEquals, assertNotEquals, assertNotEquals, assertNotNull, assertNotNull, assertNotSame, assertNotSame, assertNull, assertNull, assertSame, assertSame, assertThat, assertThat, assertThrows, assertThrows, assertTrue, assertTrue, fail, fail
-
-
-
-
Field Detail
-
FIELD_NAME
protected static final String FIELD_NAME
- See Also:
- Constant Field Values
-
-
Method Detail
-
nextLongitude
protected double nextLongitude()
-
nextLatitude
protected double nextLatitude()
-
nextBox
protected Rectangle nextBox()
-
nextCircle
protected Circle nextCircle()
-
nextPolygon
protected Polygon nextPolygon()
-
nextGeometry
protected LatLonGeometry[] nextGeometry()
-
testIndexExtremeValues
public void testIndexExtremeValues()
Valid values that should not cause exception
-
testIndexOutOfRangeValues
public void testIndexOutOfRangeValues()
Invalid values
-
testIndexNaNValues
public void testIndexNaNValues()
NaN: illegal
-
testIndexInfValues
public void testIndexInfValues()
Inf: illegal
-
testBoxBasics
public void testBoxBasics() throws Exception
Add a single point and search for it in a box- Throws:
Exception
-
testBoxNull
public void testBoxNull()
null field name not allowed
-
testBoxInvalidCoordinates
public void testBoxInvalidCoordinates() throws Exception
- Throws:
Exception
-
testDistanceBasics
public void testDistanceBasics() throws Exception
test we can search for a point- Throws:
Exception
-
testDistanceNull
public void testDistanceNull()
null field name not allowed
-
testDistanceIllegal
public void testDistanceIllegal() throws Exception
distance query should not accept invalid lat/lon as origin- Throws:
Exception
-
testDistanceNegative
public void testDistanceNegative()
negative distance queries are not allowed
-
testDistanceNaN
public void testDistanceNaN()
NaN distance queries are not allowed
-
testDistanceInf
public void testDistanceInf()
Inf distance queries are not allowed
-
testPolygonBasics
public void testPolygonBasics() throws Exception
test we can search for a polygon- Throws:
Exception
-
testPolygonHole
public void testPolygonHole() throws Exception
test we can search for a polygon with a hole (but still includes the doc)- Throws:
Exception
-
testPolygonHoleExcludes
public void testPolygonHoleExcludes() throws Exception
test we can search for a polygon with a hole (that excludes the doc)- Throws:
Exception
-
testMultiPolygonBasics
public void testMultiPolygonBasics() throws Exception
test we can search for a multi-polygon- Throws:
Exception
-
testPolygonNullField
public void testPolygonNullField()
null field name not allowed
-
quantizeLat
protected double quantizeLat(double lat)
Override this to quantize randomly generated lat, so the test won't fail due to quantization errors, which are 1) annoying to debug, and 2) should never affect "real" usage terribly.
-
quantizeLon
protected double quantizeLon(double lon)
Override this to quantize randomly generated lon, so the test won't fail due to quantization errors, which are 1) annoying to debug, and 2) should never affect "real" usage terribly.
-
addPointToDoc
protected abstract void addPointToDoc(String field, Document doc, double lat, double lon)
-
newRectQuery
protected abstract Query newRectQuery(String field, double minLat, double maxLat, double minLon, double maxLon)
-
newDistanceQuery
protected abstract Query newDistanceQuery(String field, double centerLat, double centerLon, double radiusMeters)
-
newGeometryQuery
protected abstract Query newGeometryQuery(String field, LatLonGeometry... geometry)
-
verifyRandomRectangles
protected void verifyRandomRectangles(double[] lats, double[] lons) throws Exception
- Throws:
Exception
-
verifyRandomDistances
protected void verifyRandomDistances(double[] lats, double[] lons) throws Exception
- Throws:
Exception
-
verifyRandomPolygons
protected void verifyRandomPolygons(double[] lats, double[] lons) throws Exception
- Throws:
Exception
-
verifyRandomGeometries
protected void verifyRandomGeometries(double[] lats, double[] lons) throws Exception
- Throws:
Exception
-
testRectBoundariesAreInclusive
public void testRectBoundariesAreInclusive() throws Exception
- Throws:
Exception
-
testRandomDistance
public void testRandomDistance() throws Exception
Run a few iterations with just 10 docs, hopefully easy to debug- Throws:
Exception
-
testRandomDistanceHuge
@Nightly public void testRandomDistanceHuge() throws Exception
Runs with thousands of docs- Throws:
Exception
-
testSmallSetDistanceNotEmpty
public void testSmallSetDistanceNotEmpty() throws Exception
see https://issues.apache.org/jira/browse/LUCENE-6905- Throws:
Exception
-
testSmallSetHugeDistance
public void testSmallSetHugeDistance() throws Exception
Explicitly large- Throws:
Exception
-
-