* {@link PatternUtil#replacePlaceholders(Definition, String, Object[])}.
*/
@Test
public void testReplacePlaceholdersListAttribute() {
Map<String, Attribute> attributes = new HashMap<String, Attribute>();
ListAttribute listAttribute = new ListAttribute();
ListAttribute internalListAttribute = new ListAttribute();
listAttribute.setInherit(true);
attributes.put("myList", listAttribute);
listAttribute.add(new Attribute("value{2}"));
listAttribute.add(new Attribute("value{2}{3}"));
listAttribute.add(internalListAttribute);
internalListAttribute.add(new Attribute("secondvalue{2}"));
internalListAttribute.add(new Attribute("secondvalue{2}{3}"));
Definition definition = new Definition("definitionName", new Attribute(
"template{1}"), attributes);
Definition nudef = PatternUtil.replacePlaceholders(definition, "nudef",
"value0", "value1", "value2", "value3");
assertEquals("nudef", nudef.getName());
Attribute attribute = nudef.getTemplateAttribute();
assertEquals("templatevalue1", attribute.getValue());
ListAttribute nuListAttribute = (ListAttribute) nudef.getAttribute("myList");
assertTrue(nuListAttribute.isInherit());
List<Attribute> list = nuListAttribute.getValue();
assertEquals(LIST_ATTRIBUTE_SIZE, list.size());
attribute = list.get(0);
assertEquals("valuevalue2", attribute.getValue());
attribute = list.get(1);
assertEquals("valuevalue2value3", attribute.getValue());
ListAttribute evaluatedListAttribute = (ListAttribute) list.get(2);
assertFalse(evaluatedListAttribute.isInherit());
list = evaluatedListAttribute.getValue();
assertEquals(2, list.size());
attribute = list.get(0);
assertEquals("secondvaluevalue2", attribute.getValue());
attribute = list.get(1);
assertEquals("secondvaluevalue2value3", attribute.getValue());