@Test
public void setAttributeStringAttributeValue() throws Exception {

	//
	// Set ZZZ
	//
	assertEquals(
			new AttributeImpl("ZZZ", "xyz"),   //$NON-NLS-1$ //$NON-NLS-2$
			this.provider.setAttribute("ZZZ", new AttributeValueImpl("xyz")));   //$NON-NLS-1$ //$NON-NLS-2$
	assertEquals(6, this.subprovider1.getAttributeCount());
	assertEquals(6, this.subprovider2.getAttributeCount());
	assertEquals(7, this.subprovider3.getAttributeCount());
	assertEquals(2, this.subcontainer4.getAttributeCount());
	assertEquals(10, this.provider.getAttributeCount());		
	assertEpsilonEquals(Arrays.asList(
			new AttributeImpl("ZZZ", "xyz"),   //$NON-NLS-1$ //$NON-NLS-2$
			new AttributeImpl("A", true),  //$NON-NLS-1$
			new AttributeImpl("B", 1),  //$NON-NLS-1$
			new AttributeImpl("C", new URL("http://www.multiagent.fr")),   //$NON-NLS-1$ //$NON-NLS-2$
			new AttributeImpl("E", new URL("http://www.multiagent.fr")),   //$NON-NLS-1$ //$NON-NLS-2$
			new AttributeImpl("Z1", "Z1")   //$NON-NLS-1$ //$NON-NLS-2$
	), this.subprovider1.getAllAttributes());
	assertEpsilonEquals(Arrays.asList(
			new AttributeImpl("ZZZ", "xyz"),   //$NON-NLS-1$ //$NON-NLS-2$
			new AttributeImpl("A", true),  //$NON-NLS-1$
			new AttributeImpl("B", 1),  //$NON-NLS-1$
			new AttributeImpl("D", "abc"),   //$NON-NLS-1$ //$NON-NLS-2$
			new AttributeImpl("E", 1),  //$NON-NLS-1$
			new AttributeImpl("Z2", "Z2")   //$NON-NLS-1$ //$NON-NLS-2$
	), this.subprovider2.getAllAttributes());
	assertEpsilonEquals(Arrays.asList(
			new AttributeImpl("ZZZ", "xyz"),   //$NON-NLS-1$ //$NON-NLS-2$
			new AttributeImpl("A", false),  //$NON-NLS-1$
			new AttributeImpl("B", 1.),  //$NON-NLS-1$
			new AttributeImpl("C", new URL("http://www.multiagent.fr")),   //$NON-NLS-1$ //$NON-NLS-2$
			new AttributeImpl("D", "abc"),   //$NON-NLS-1$ //$NON-NLS-2$
			new AttributeImpl("E", true),  //$NON-NLS-1$
			new AttributeImpl("Z3", "Z3")   //$NON-NLS-1$ //$NON-NLS-2$
	), this.subprovider3.getAllAttributes());
	assertEpsilonEquals(Arrays.asList(
			new AttributeImpl("A", true),  //$NON-NLS-1$
			new AttributeImpl("Z4", "Z4")   //$NON-NLS-1$ //$NON-NLS-2$
	), this.subcontainer4.getAllAttributes());
	assertEpsilonEquals(Arrays.asList(
			makeUninitialized("ZZZ", AttributeType.STRING),  //$NON-NLS-1$
			makeUninitialized("A", AttributeType.BOOLEAN),  //$NON-NLS-1$
			makeUninitialized("B", AttributeType.INTEGER),  //$NON-NLS-1$
			makeUninitialized("C", AttributeType.URL),  //$NON-NLS-1$
			makeUninitialized("D", AttributeType.STRING),  //$NON-NLS-1$
			makeUninitialized("E", AttributeType.OBJECT),  //$NON-NLS-1$
			makeUninitialized("Z1", AttributeType.STRING),  //$NON-NLS-1$
			makeUninitialized("Z2", AttributeType.STRING),  //$NON-NLS-1$
			makeUninitialized("Z3", AttributeType.STRING),  //$NON-NLS-1$
			makeUninitialized("Z4", AttributeType.STRING)  //$NON-NLS-1$
	), this.provider.getAllAttributes());
	//
	// Set B
	//
	assertEquals(
			new AttributeImpl("B", "def"),   //$NON-NLS-1$ //$NON-NLS-2$
			this.provider.setAttribute("B", new AttributeValueImpl("def")));   //$NON-NLS-1$ //$NON-NLS-2$
	assertEquals(6, this.subprovider1.getAttributeCount());
	assertEquals(6, this.subprovider2.getAttributeCount());
	assertEquals(7, this.subprovider3.getAttributeCount());
	assertEquals(2, this.subcontainer4.getAttributeCount());
	assertEquals(10, this.provider.getAttributeCount());		
	assertEpsilonEquals(Arrays.asList(
			new AttributeImpl("ZZZ", "xyz"),   //$NON-NLS-1$ //$NON-NLS-2$
			new AttributeImpl("A", true),  //$NON-NLS-1$
			new AttributeImpl("B", "def"),   //$NON-NLS-1$ //$NON-NLS-2$
			new AttributeImpl("C", new URL("http://www.multiagent.fr")),   //$NON-NLS-1$ //$NON-NLS-2$
			new AttributeImpl("E", new URL("http://www.multiagent.fr")),   //$NON-NLS-1$ //$NON-NLS-2$
			new AttributeImpl("Z1", "Z1")   //$NON-NLS-1$ //$NON-NLS-2$
	), this.subprovider1.getAllAttributes());
	assertEpsilonEquals(Arrays.asList(
			new AttributeImpl("ZZZ", "xyz"),   //$NON-NLS-1$ //$NON-NLS-2$
			new AttributeImpl("A", true),  //$NON-NLS-1$
			new AttributeImpl("B", "def"),   //$NON-NLS-1$ //$NON-NLS-2$
			new AttributeImpl("D", "abc"),   //$NON-NLS-1$ //$NON-NLS-2$
			new AttributeImpl("E", 1),  //$NON-NLS-1$
			new AttributeImpl("Z2", "Z2")   //$NON-NLS-1$ //$NON-NLS-2$
	), this.subprovider2.getAllAttributes());
	assertEpsilonEquals(Arrays.asList(
			new AttributeImpl("ZZZ", "xyz"),   //$NON-NLS-1$ //$NON-NLS-2$
			new AttributeImpl("A", false),  //$NON-NLS-1$
			new AttributeImpl("B", "def"),   //$NON-NLS-1$ //$NON-NLS-2$
			new AttributeImpl("C", new URL("http://www.multiagent.fr")),   //$NON-NLS-1$ //$NON-NLS-2$
			new AttributeImpl("D", "abc"),   //$NON-NLS-1$ //$NON-NLS-2$
			new AttributeImpl("E", true),  //$NON-NLS-1$
			new AttributeImpl("Z3", "Z3")   //$NON-NLS-1$ //$NON-NLS-2$
	), this.subprovider3.getAllAttributes());
	assertEpsilonEquals(Arrays.asList(
			new AttributeImpl("A", true),  //$NON-NLS-1$
			new AttributeImpl("Z4", "Z4")   //$NON-NLS-1$ //$NON-NLS-2$
	), this.subcontainer4.getAllAttributes());
	assertEpsilonEquals(Arrays.asList(
			makeUninitialized("ZZZ", AttributeType.STRING),  //$NON-NLS-1$
			makeUninitialized("A", AttributeType.BOOLEAN),  //$NON-NLS-1$
			makeUninitialized("B", AttributeType.STRING),  //$NON-NLS-1$
			makeUninitialized("C", AttributeType.URL),  //$NON-NLS-1$
			makeUninitialized("D", AttributeType.STRING),  //$NON-NLS-1$
			makeUninitialized("E", AttributeType.OBJECT),  //$NON-NLS-1$
			makeUninitialized("Z1", AttributeType.STRING),  //$NON-NLS-1$
			makeUninitialized("Z2", AttributeType.STRING),  //$NON-NLS-1$
			makeUninitialized("Z3", AttributeType.STRING),  //$NON-NLS-1$
			makeUninitialized("Z4", AttributeType.STRING)  //$NON-NLS-1$
	), this.provider.getAllAttributes());
}