@Test
public void testWalk() {

    final List<Object> rowKeys = new ArrayList<Object>();
    DataVisitor visitor = new DataVisitor() {
        public DataVisitResult process(FacesContext context, Object rowKey, Object argument) {
            arrangeableModel.setRowKey(rowKey);
            if (arrangeableModel.isRowAvailable()) {
                rowKeys.add(rowKey);
            }
            return DataVisitResult.CONTINUE;
        }
    };
    arrangeableModel.walk(facesContext, visitor, new SequenceRange(0, -1), null);
    Assert.assertEquals(FILTERD_AND_SORTED_ROW_KEYS, rowKeys);
    rowKeys.clear();
    arrangeableModel.walk(facesContext, visitor, new SequenceRange(0, ROWS), null);
    Assert.assertEquals(FILTERD_AND_SORTED_ROW_KEYS.subList(0, ROWS), rowKeys);
}