control.verify();
// VisitHint.SKIP_ITERATION test:
// (1) uiData with two rows - should iterate over row twice
MockVisitContext mockVisitContext = new MockVisitContext(facesContext, null);
CountingVisitCallback countingVisitCallback = new CountingVisitCallback(2);
uidata.visitTree(mockVisitContext, countingVisitCallback);
countingVisitCallback.verify();
// (2) uiData with two values - should iterate over row ones - SKIP_ITERATION is used
mockVisitContext = new MockVisitContext(facesContext, EnumSet.of(VisitHint.SKIP_ITERATION));
countingVisitCallback = new CountingVisitCallback(1);
uidata.visitTree(mockVisitContext, countingVisitCallback);
countingVisitCallback.verify();
// (3) uiData with five values - should iterate over row five times
value = new ArrayList<String>();
value.add("1");
value.add("2");
value.add("3");
value.add("4");
value.add("5");
uidata.setValue(value);
mockVisitContext = new MockVisitContext(facesContext, null);
countingVisitCallback = new CountingVisitCallback(5);
uidata.visitTree(mockVisitContext, countingVisitCallback);
countingVisitCallback.verify();
// (4) uiData with five values - should iterate over child ones - SKIP_ITERATION is used
mockVisitContext = new MockVisitContext(facesContext, EnumSet.of(VisitHint.SKIP_ITERATION));
countingVisitCallback = new CountingVisitCallback(1);
uidata.visitTree(mockVisitContext, countingVisitCallback);
countingVisitCallback.verify();
}