ValueType[] types = randomSetOfSupportedAndSortableTypes(); List<ValueTuple> values = generateValuesFromType( types ); List<IndexEntryUpdate<?>> updates = generateUpdatesFromValues( values ); updateAndCommit( updates ); TreeSet<IndexEntryUpdate> sortedValues = new TreeSet<>( ( u1, u2 ) -> ValueTuple.COMPARATOR.compare( ValueTuple.of( u1.values()[0], u1.values()[1] ), List<Long> expectedIds = expectedIds( sortedValues, booleanValue, from, to, fromInclusive, toInclusive ); IndexQuery.exact( 100, booleanValue ), IndexQuery.range( 101, from, fromInclusive, to, toInclusive )}; ValueCategory[] valueCategories = getValueCategories( predicates ); IndexOrder[] indexOrders = indexProvider.getCapability( descriptor ).orderCapability( valueCategories ); for ( IndexOrder order : indexOrders ) List<Long> actualIds = assertInOrder( order, predicates ); actualIds.sort( Long::compare );