1515import org .apache .lucene .store .Directory ;
1616import org .apache .lucene .tests .index .RandomIndexWriter ;
1717import org .apache .lucene .util .BytesRef ;
18- import org .elasticsearch .common .Strings ;
1918import org .elasticsearch .common .geo .Orientation ;
19+ import org .elasticsearch .core .Strings ;
2020import org .elasticsearch .geo .GeometryTestUtils ;
2121import org .elasticsearch .geo .ShapeTestUtils ;
2222import org .elasticsearch .geometry .Geometry ;
@@ -56,7 +56,7 @@ public void ignoreTestGeoBoundsBlockLoader() throws IOException {
5656 );
5757 }
5858
59- private void testBoundsBlockLoaderAux (
59+ private static void testBoundsBlockLoaderAux (
6060 CoordinateEncoder encoder ,
6161 Supplier <Geometry > generator ,
6262 Function <String , ShapeIndexer > indexerFactory ,
@@ -74,34 +74,36 @@ private void testBoundsBlockLoaderAux(
7474 iw .addDocument (doc );
7575 }
7676 }
77- // We specifically check just the even indices, to verify the loader can skip documents correctly.
78- var evenIndices = evenArray (geometries .size ());
77+
78+ var expected = new ArrayList <Rectangle >();
79+ var byteRefResults = new ArrayList <BytesRef >();
80+ int currentIndex = 0 ;
7981 try (DirectoryReader reader = DirectoryReader .open (directory )) {
80- var byteRefResults = new ArrayList <BytesRef >();
8182 for (var leaf : reader .leaves ()) {
8283 LeafReader leafReader = leaf .reader ();
8384 int numDocs = leafReader .numDocs ();
84- try (
85- TestBlock block = (TestBlock ) loader .reader (leaf )
86- .read (TestBlock .factory (leafReader .numDocs ()), TestBlock .docs (evenArray (numDocs )))
87- ) {
85+ // We specifically check just the even indices, to verify the loader can skip documents correctly.
86+ int [] array = evenArray (numDocs );
87+ for (int i = 0 ; i < array .length ; i += 1 ) {
88+ expected .add (visitor .apply (geometries .get (array [i ] + currentIndex )).get ());
89+ }
90+ try (var block = (TestBlock ) loader .reader (leaf ).read (TestBlock .factory (leafReader .numDocs ()), TestBlock .docs (array ))) {
8891 for (int i = 0 ; i < block .size (); i ++) {
8992 byteRefResults .add ((BytesRef ) block .get (i ));
9093 }
9194 }
95+ currentIndex += numDocs ;
9296 }
93- for (int i = 0 ; i < evenIndices .length ; i ++) {
94- var idx = evenIndices [i ];
95- var geometry = geometries .get (idx );
96- var geoString = geometry .toString ();
97- var geometryString = geoString .length () > 200 ? geoString .substring (0 , 200 ) + "..." : geoString ;
98- Rectangle r = visitor .apply (geometry ).get ();
99- assertThat (
100- Strings .format ("geometries[%d] ('%s') wasn't extracted correctly" , idx , geometryString ),
101- byteRefResults .get (i ),
102- WellKnownBinaryBytesRefMatcher .encodes (RectangleMatcher .closeToFloat (r , 1e-3 , encoder ))
103- );
104- }
97+ }
98+
99+ for (int i = 0 ; i < expected .size (); i ++) {
100+ Rectangle rectangle = expected .get (i );
101+ var geoString = rectangle .toString ();
102+ assertThat (
103+ Strings .format ("geometry '%s' wasn't extracted correctly" , geoString ),
104+ byteRefResults .get (i ),
105+ WellKnownBinaryBytesRefMatcher .encodes (RectangleMatcher .closeToFloat (rectangle , 1e-3 , encoder ))
106+ );
105107 }
106108 }
107109 }
0 commit comments