### Question:
ChildViewAttributesBuilderImpl implements ChildViewAttributesBuilder<ViewType> { @Override public void add(String attributeName, ChildViewAttribute childAttribute) { AbstractAttribute attribute = resolvedGroupAttributes.attributeFor(attributeName); childViewAttributeInitializer.initializeChildViewAttribute(childAttribute, attribute); childViewAttributeMap.put(attributeName, childAttribute); } ChildViewAttributesBuilderImpl(ResolvedGroupAttributes resolvedGroupAttributes, 
			ViewAttributeBinderFactory viewAttributeBinderFactory); @Override void add(String attributeName, ChildViewAttribute childAttribute); @Override void add(String attributeName, ChildViewAttributeFactory factory); @Override void addDependent(String attributeName, ChildViewAttributeFactory factory); @Override void add(String attributeName, OneWayPropertyViewAttribute<ViewType, ?> viewAttribute); @Override void add(String propertyAttribute, OneWayPropertyViewAttributeFactory<ViewType> factory); @Override void add(String attributeName, TwoWayPropertyViewAttribute<ViewType, ?, ?> viewAttribute); @Override void add(String attributeName, TwoWayPropertyViewAttributeFactory<ViewType> factory); @Override void add(String attributeName, OneWayMultiTypePropertyViewAttribute<ViewType> viewAttribute); @Override void add(String attributeName, OneWayMultiTypePropertyViewAttributeFactory<ViewType> factory); @Override void add(String attributeName, TwoWayMultiTypePropertyViewAttribute<ViewType> viewAttribute); @Override void add(String attributeName, TwoWayMultiTypePropertyViewAttributeFactory<ViewType> factory); @Override void add(String attributeName, EventViewAttribute<ViewType, ? extends ViewAddOn> viewAttribute); @Override void add(String attributeName, EventViewAttributeFactory<ViewType> factory); @Override void failOnFirstBindingError(); ChildViewAttributes build(); @Override boolean hasAttribute(String attributeName); @Override ValueModelAttribute valueModelAttributeFor(String attributeName); @Override StaticResourceAttribute staticResourceAttributeFor(String attributeName); @Override EnumAttribute<E> enumAttributeFor(String attributeName);  }### Answer:
@Test public void whenAddDifferentChildViewAttributes_thenTheAllAttributesAreAdded() { String attribute1 = "attribute1"; String attribute2 = "attribute2"; String attribute3 = "attribute3"; String attribute4 = "attribute4"; String attribute5 = "attribute5"; String attribute6 = "attribute6"; String attribute7 = "attribute7"; String attribute8 = "attribute8"; childViewAttributesBuilder.add(attribute1, childViewAttribute); childViewAttributesBuilder.add(attribute2, childViewAttributeFactory); childViewAttributesBuilder.add(attribute3, propertyViewAttribute); childViewAttributesBuilder.add(attribute4, propertyViewAttributeFactory); childViewAttributesBuilder.add(attribute5, multiTypePropertyViewAttribute); childViewAttributesBuilder.add(attribute6, multiTypePropertyViewAttributeFactory); childViewAttributesBuilder.add(attribute7, eventViewAttribute); childViewAttributesBuilder.add(attribute8, eventViewAttributeFactory); assertThat(numOfChildViewAttributes(), is(NUM_KINDS_OF_CHILD_VIEW_ATTRIBUTES)); assertTrue(hasChildViewAttribute(attribute1)); assertTrue(hasChildViewAttribute(attribute2)); assertTrue(hasChildViewAttribute(attribute3)); assertTrue(hasChildViewAttribute(attribute4)); assertTrue(hasChildViewAttribute(attribute5)); assertTrue(hasChildViewAttribute(attribute6)); assertTrue(hasChildViewAttribute(attribute7)); assertTrue(hasChildViewAttribute(attribute8)); }
@Test public void whenAddChildViewAttributeWithAttribute_thenTheAttributeIsSet() { @SuppressWarnings("unchecked") ChildViewAttributeWithAttribute<AbstractAttribute> childViewAttribute = mock(ChildViewAttributeWithAttribute.class); childViewAttributesBuilder.add("attributeName", childViewAttribute); verify(childViewAttribute).setAttribute(any(AbstractAttribute.class)); }