@Test public void testEagerStop() throws IOException { HashSet<String> acceptedFieldNames = new HashSet<>(); acceptedFieldNames.add( "field one" ); acceptedFieldNames.add( "field two" ); ReusableDocumentStoredFieldVisitor fieldVisitor = new ReusableDocumentStoredFieldVisitor( acceptedFieldNames ); Assert.assertEquals( Status.NO, fieldVisitor.needsField( forgeFieldInfo( "made up field one" ) ) ); Assert.assertEquals( Status.YES, fieldVisitor.needsField( forgeFieldInfo( "field one" ) ) ); consumeField( fieldVisitor ); Assert.assertEquals( Status.NO, fieldVisitor.needsField( forgeFieldInfo( "made up field two" ) ) ); Assert.assertEquals( Status.NO, fieldVisitor.needsField( forgeFieldInfo( "made up field three" ) ) ); Assert.assertEquals( Status.YES, fieldVisitor.needsField( forgeFieldInfo( "field two" ) ) ); consumeField( fieldVisitor ); Assert.assertEquals( Status.STOP, fieldVisitor.needsField( forgeFieldInfo( "made up field four" ) ) ); //Fetch Document, prepare for processing next one: fieldVisitor.getDocumentAndReset(); Assert.assertEquals( Status.NO, fieldVisitor.needsField( forgeFieldInfo( "made up field one" ) ) ); Assert.assertEquals( Status.YES, fieldVisitor.needsField( forgeFieldInfo( "field one" ) ) ); }
/** * Verifies the FieldSelector being used contains the listed field names (and no more). * Note that DocumentBuilder.CLASS_FIELDNAME is always used. * @param expectedFieldNames * @throws IOException */ public static void assertFieldSelectorEnabled(String... expectedFieldNames) throws IOException { if ( expectedFieldNames == null || expectedFieldNames.length == 0 ) { assertFieldSelectorDisabled(); } else { assertNotNull( FieldSelectorLeakingReaderProvider.fieldSelector ); assertTrue( fieldSelector instanceof ReusableDocumentStoredFieldVisitor ); ReusableDocumentStoredFieldVisitor visitor = (ReusableDocumentStoredFieldVisitor) fieldSelector; assertEquals( expectedFieldNames.length, visitor.countAcceptedFields() ); for ( String fieldName : expectedFieldNames ) { FieldInfo fieldId = forgeFieldInfo( fieldName ); assertEquals( Status.YES, visitor.needsField( fieldId ) ); } } }