private static void duelFieldDataBytes( Random random, AtomicReaderContext context, IndexFieldData<?> left, IndexFieldData<?> right, Preprocessor pre) throws Exception { AtomicFieldData leftData = random.nextBoolean() ? left.load(context) : left.loadDirect(context); AtomicFieldData rightData = random.nextBoolean() ? right.load(context) : right.loadDirect(context); int numDocs = context.reader().maxDoc(); SortedBinaryDocValues leftBytesValues = leftData.getBytesValues(); SortedBinaryDocValues rightBytesValues = rightData.getBytesValues(); BytesRef leftSpare = new BytesRef(); BytesRef rightSpare = new BytesRef(); for (int i = 0; i < numDocs; i++) { leftBytesValues.setDocument(i); rightBytesValues.setDocument(i); int numValues = leftBytesValues.count(); assertThat(numValues, equalTo(rightBytesValues.count())); BytesRef previous = null; for (int j = 0; j < numValues; j++) { rightSpare.copyBytes(rightBytesValues.valueAt(j)); leftSpare.copyBytes(leftBytesValues.valueAt(j)); if (previous != null) { assertThat(pre.compare(previous, rightSpare), lessThan(0)); } previous = BytesRef.deepCopyOf(rightSpare); pre.toString(rightSpare); pre.toString(leftSpare); assertThat(pre.toString(leftSpare), equalTo(pre.toString(rightSpare))); } } }