MultiAttributeProvider extends AbstractAttributeProvider { @Pure @Override public boolean hasAttribute(String name) { for (final AttributeProvider c : this.containers) { if (c.hasAttribute(name)) { return true; } } return false; }  @Override void toMap(Map<String, Object> mapToFill); boolean addAttributeContainer(AttributeProvider container); boolean removeAttributeContainer(AttributeProvider container); @Pure int getAttributeContainerCount(); @Pure @Override MultiAttributeProvider clone(); @Override void freeMemory(); @Pure @Override Collection<Attribute> getAllAttributes(); @Pure @Override Map<AttributeType, Collection<Attribute>> getAllAttributesByType(); @Pure @Override AttributeValue getAttribute(String name); @Pure @Override AttributeValue getAttribute(String name, AttributeValue defaultValue); @Pure @Override int getAttributeCount(); @Pure @Override Collection<String> getAllAttributeNames(); @Pure @Override Attribute getAttributeObject(String name); @Pure @Override boolean hasAttribute(String name);  }
@Test public void testHasAttributeString() { assertTrue(this.container.hasAttribute("A")); assertTrue(this.container.hasAttribute("B")); assertTrue(this.container.hasAttribute("C")); assertTrue(this.container.hasAttribute("D")); assertTrue(this.container.hasAttribute("E")); assertFalse(this.container.hasAttribute("F")); assertTrue(this.container.hasAttribute("Z1")); assertTrue(this.container.hasAttribute("Z2")); assertTrue(this.container.hasAttribute("Z3")); assertFalse(this.container.hasAttribute("Z4")); }