package org.zkoss.zktest.zats.zuti.simple._foreach;
import java.util.List;
import org.junit.Assert;
import org.junit.Test;
import org.zkoss.zats.mimic.ComponentAgent;
import org.zkoss.zats.mimic.DesktopAgent;
import org.zkoss.zktest.zats.ZATSTestCase;
import org.zkoss.zktest.zats.zuti.ZutiBasicTestCase;
import org.zkoss.zul.Label;
import org.zkoss.zul.ListModelList;
/**
* @author jumperchen
*
*/
public class ForEachRandomChangeTest extends ZutiBasicTestCase {
private String seed;
private int iteration;
@Test
public void test() {
DesktopAgent desktop = connect();
seed = desktop.query("#seed").as(Label.class).getValue();
ComponentAgent result = desktop.query("#result");
ComponentAgent testLabel = desktop.query("#testLabel");
ComponentAgent button = desktop.query("button");
ListModelList<Integer> debugListModel = (ListModelList<Integer>) result.getAttribute("debugListModel");
verifyModel(debugListModel, testLabel, result.getChildren());
iteration = 0;
for(iteration = 0; iteration < 1000; iteration++) {
button.click();
verifyModel(debugListModel, testLabel, result.getChildren());
//System.out.println(debugListModel);
}
}
private void verifyModel(ListModelList<Integer> model, ComponentAgent testLabel, List<ComponentAgent> children) {
String testStepInfo = ", Iteration: " + iteration + " Seed:" + seed;
Assert.assertEquals("testLabel does not match model.toString()" + testStepInfo, model.toString(), testLabel.as(Label.class).getValue());
int index = 0;
for (ComponentAgent componentAgent : children) {
String itemLabel = componentAgent.as(Label.class).getValue();
Assert.assertEquals("forEach item label mismatch at position:" + index + testStepInfo, model.get(index).toString(), itemLabel);
index++;
}
}
}