HashMap<String, Object> params = new HashMap<String, Object>();
params.put("array", strings);
// alternatively: do invoker.getRequest().setParameter("array", strings);
DropletResult result = invoker.invokeDroplet("/atg/dynamo/droplet/ForEach", params);
assertNotNull(
"Make sure output got rendered at least once",
result.getRenderedOutputParameter("output", false)
);
List<RenderedOutputParameter> listOutputs = result.getRenderedOutputParametersByName(
"output"
);
assertEquals(
"Make sure output was rendered 5 times", 5, listOutputs.size()
);
// use an old-fashioned for, because we want to test numeric
// look-ups, too.
for (int i = 0; i < strings.length; i++) {
RenderedOutputParameter oparam = listOutputs.get(i);
assertEquals(
"Should be the same as from the list ",
oparam,
result.getRenderedOutputParameter("output", i)
);
assertEquals(
"Element should be our string",
strings[i],
(String) oparam.getFrameParameter("element")
);
assertEquals(
"Index should be equal to i", i, oparam.getFrameParameter("index")
);
// make sure we can get at things through
// getFrameParameterOfRenderedParameter
assertEquals(
"Count should be i + 1", i + 1, result.getFrameParameterOfRenderedParameter(
"count", "output", i
)
);
}
}