/*
* $Id$
* This file is a part of the Arakhne Foundation Classes, http://www.arakhne.org/afc
*
* Copyright (c) 2000-2012 Stephane GALLAND.
* Copyright (c) 2005-10, Multiagent Team, Laboratoire Systemes et Transports,
* Universite de Technologie de Belfort-Montbeliard.
* Copyright (c) 2013-2016 The original authors, and other authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.arakhne.afc.attrs.collection;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import java.lang.reflect.Method;
import java.util.ArrayList;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.arakhne.afc.attrs.attr.Attribute;
import org.arakhne.afc.attrs.attr.AttributeImpl;
import org.arakhne.afc.attrs.attr.AttributeValue;
import org.arakhne.afc.attrs.attr.AttributeValueImpl;
@SuppressWarnings("all")
public abstract class AbstractAttributeCollectionTest<T extends AttributeCollection> extends AbstractAttributeProviderTest<T> {
private Attribute[] newValues;
protected ListenerStub listenerStub;
public AbstractAttributeCollectionTest(String id) {
super(id);
}
@Override
@Before
public void setUp() throws Exception {
super.setUp();
this.newValues = new Attribute[] {
new AttributeImpl("A",false), //$NON-NLS-1$
new AttributeImpl("D","34"), //$NON-NLS-1$ //$NON-NLS-2$
new AttributeImpl("Z",17f), //$NON-NLS-1$
};
this.listenerStub = new ListenerStub();
this.testData.addAttributeChangeListener(this.listenerStub);
}
@Override
@After
public void tearDown() throws Exception {
this.newValues = null;
this.listenerStub.reset();
this.listenerStub = null;
super.tearDown();
}
private void runSetAttributeValue(Class<?>[] types, Object[] parameters, Attribute attr) throws Exception {
String name = attr.getName();
boolean attrExists = this.testData.hasAttribute(name);
AttributeValue oldValue = null;
if (attrExists) {
oldValue = this.testData.getAttribute(name);
}
Method method = this.testData.getClass().getMethod("setAttribute", types); //$NON-NLS-1$
Object o = method.invoke(this.testData, parameters);
assertTrue(this.id, o instanceof Attribute);
assertEquals(this.id, attr,o);
assertNotNull(this.id, this.testData.getAttribute(name));
assertEquals(this.id, attr.getType(),this.testData.getAttribute(name).getType());
assertEquals(this.id, attr,this.testData.getAttribute(name));
// Test events
String message = this.id+": set attribute "+name; //$NON-NLS-1$
this.listenerStub.assertNames(message, name);
this.listenerStub.assertValues(message, attr);
if (!attrExists) {
this.listenerStub.assertTypes(message,
AttributeChangeEvent.Type.ADDITION);
this.listenerStub.assertOldNames(message, new String[]{null});
this.listenerStub.assertOldValues(message, new AttributeValue[]{null});
}
else {
this.listenerStub.assertTypes(message,
AttributeChangeEvent.Type.VALUE_UPDATE);
this.listenerStub.assertOldNames(message, name);
this.listenerStub.assertOldValues(message, oldValue);
}
this.listenerStub.reset();
}
private void runSetAttributeValue(Class<?> type, Object parameter, Attribute attr) throws Exception {
runSetAttributeValue(
new Class<?>[] {String.class, type},
new Object[] {attr.getName(), parameter}, attr);
}
@Test
public void setAttributeAttribute() throws Exception {
for (Attribute attr : this.newValues) {
runSetAttributeValue(
new Class<?>[] {Attribute.class},
new Object[] {attr},
attr);
}
}
@Test
public void setAttributeStringAttributeValue() throws Exception {
for (Attribute attr : this.newValues) {
runSetAttributeValue(
AttributeValue.class,
attr,
attr);
}
}
@Test
public void setAttributeStringBoolean() throws Exception {
Attribute attr = new AttributeImpl("A", false); //$NON-NLS-1$
runSetAttributeValue(
boolean.class,
attr.getBoolean(),
attr);
attr = new AttributeImpl("X", false); //$NON-NLS-1$
runSetAttributeValue(
boolean.class,
attr.getBoolean(),
attr);
}
@Test
public void setAttributeStringInt() throws Exception {
Attribute attr = new AttributeImpl("E", 34); //$NON-NLS-1$
runSetAttributeValue(
int.class,
(int)attr.getInteger(),
attr);
attr = new AttributeImpl("X", 34); //$NON-NLS-1$
runSetAttributeValue(
int.class,
(int)attr.getInteger(),
attr);
}
@Test
public void setAttributeStringLong() throws Exception {
Attribute attr = new AttributeImpl("E", 34); //$NON-NLS-1$
runSetAttributeValue(
long.class,
attr.getInteger(),
attr);
attr = new AttributeImpl("X", 34); //$NON-NLS-1$
runSetAttributeValue(
long.class,
attr.getInteger(),
attr);
}
@Test
public void setAttributeStringFloat() throws Exception {
Attribute attr = new AttributeImpl("E", 34f); //$NON-NLS-1$
runSetAttributeValue(
float.class,
(float)attr.getReal(),
attr);
attr = new AttributeImpl("X", 34f); //$NON-NLS-1$
runSetAttributeValue(
float.class,
(float)attr.getReal(),
attr);
}
@Test
public void setAttributeStringDouble() throws Exception {
Attribute attr = new AttributeImpl("E", 34.); //$NON-NLS-1$
runSetAttributeValue(
double.class,
attr.getReal(),
attr);
attr = new AttributeImpl("X", 34.); //$NON-NLS-1$
runSetAttributeValue(
double.class,
attr.getReal(),
attr);
}
@Test
public void setAttributeStringString() throws Exception {
Attribute attr = new AttributeImpl("E", "Toto"); //$NON-NLS-1$ //$NON-NLS-2$
runSetAttributeValue(
String.class,
attr.getString(),
attr);
attr = new AttributeImpl("X", "Titi et Rominet"); //$NON-NLS-1$ //$NON-NLS-2$
runSetAttributeValue(
String.class,
attr.getString(),
attr);
}
@Test
public void removeAttributeString() {
String message;
assertFalse(this.id, this.testData.removeAttribute("Y")); //$NON-NLS-1$
// Testing events
message = this.id+": removing Y"; //$NON-NLS-1$
this.listenerStub.assertEmpty(message);
this.listenerStub.reset();
assertTrue(this.id, this.testData.removeAttribute("C")); //$NON-NLS-1$
// Testing events
message = "removing C"; //$NON-NLS-1$
this.listenerStub.assertTypes(message, AttributeChangeEvent.Type.REMOVAL);
this.listenerStub.assertNames(message, "C"); //$NON-NLS-1$
this.listenerStub.assertOldNames(message, "C"); //$NON-NLS-1$
this.listenerStub.assertValues(message, new AttributeValueImpl(true));
this.listenerStub.assertOldValues(message, new AttributeValueImpl(true));
this.listenerStub.reset();
assertFalse(this.id, this.testData.removeAttribute("X")); //$NON-NLS-1$
// Testing events
message = this.id+": removing X"; //$NON-NLS-1$
this.listenerStub.assertEmpty(message);
this.listenerStub.reset();
assertTrue(this.id, this.testData.hasAttribute("A")); //$NON-NLS-1$
assertFalse(this.id, this.testData.hasAttribute("X")); //$NON-NLS-1$
assertTrue(this.id, this.testData.hasAttribute("B")); //$NON-NLS-1$
assertFalse(this.id, this.testData.hasAttribute("Y")); //$NON-NLS-1$
assertFalse(this.id, this.testData.hasAttribute("C")); //$NON-NLS-1$
assertTrue(this.id, this.testData.hasAttribute("D")); //$NON-NLS-1$
assertFalse(this.id, this.testData.hasAttribute("Z")); //$NON-NLS-1$
assertTrue(this.id, this.testData.hasAttribute("E")); //$NON-NLS-1$
assertTrue(this.id, this.testData.hasAttribute("F")); //$NON-NLS-1$
}
@Test
public void removeAllAttributes() {
String message;
assertTrue(this.id, this.testData.hasAttribute("A")); //$NON-NLS-1$
assertFalse(this.id, this.testData.hasAttribute("X")); //$NON-NLS-1$
assertTrue(this.id, this.testData.hasAttribute("B")); //$NON-NLS-1$
assertFalse(this.id, this.testData.hasAttribute("Y")); //$NON-NLS-1$
assertTrue(this.id, this.testData.hasAttribute("C")); //$NON-NLS-1$
assertTrue(this.id, this.testData.hasAttribute("D")); //$NON-NLS-1$
assertFalse(this.id, this.testData.hasAttribute("Z")); //$NON-NLS-1$
assertTrue(this.id, this.testData.hasAttribute("E")); //$NON-NLS-1$
assertTrue(this.id, this.testData.hasAttribute("F")); //$NON-NLS-1$
assertTrue(this.id, this.testData.removeAllAttributes());
message = this.id+": removing all attributes"; //$NON-NLS-1$
this.listenerStub.assertTypes(message, AttributeChangeEvent.Type.REMOVE_ALL);
this.listenerStub.assertNames(message, new String[]{null});
this.listenerStub.assertOldNames(message, new String[]{null});
this.listenerStub.assertValues(message, new AttributeValue[]{null});
this.listenerStub.assertOldValues(message, new AttributeValue[]{null});
this.listenerStub.reset();
assertFalse(this.id, this.testData.hasAttribute("A")); //$NON-NLS-1$
assertFalse(this.id, this.testData.hasAttribute("X")); //$NON-NLS-1$
assertFalse(this.id, this.testData.hasAttribute("B")); //$NON-NLS-1$
assertFalse(this.id, this.testData.hasAttribute("Y")); //$NON-NLS-1$
assertFalse(this.id, this.testData.hasAttribute("C")); //$NON-NLS-1$
assertFalse(this.id, this.testData.hasAttribute("D")); //$NON-NLS-1$
assertFalse(this.id, this.testData.hasAttribute("Z")); //$NON-NLS-1$
assertFalse(this.id, this.testData.hasAttribute("E")); //$NON-NLS-1$
assertFalse(this.id, this.testData.hasAttribute("F")); //$NON-NLS-1$
assertFalse(this.id, this.testData.removeAllAttributes());
this.listenerStub.assertEmpty(message);
this.listenerStub.reset();
assertFalse(this.id, this.testData.hasAttribute("A")); //$NON-NLS-1$
assertFalse(this.id, this.testData.hasAttribute("X")); //$NON-NLS-1$
assertFalse(this.id, this.testData.hasAttribute("B")); //$NON-NLS-1$
assertFalse(this.id, this.testData.hasAttribute("Y")); //$NON-NLS-1$
assertFalse(this.id, this.testData.hasAttribute("C")); //$NON-NLS-1$
assertFalse(this.id, this.testData.hasAttribute("D")); //$NON-NLS-1$
assertFalse(this.id, this.testData.hasAttribute("Z")); //$NON-NLS-1$
assertFalse(this.id, this.testData.hasAttribute("E")); //$NON-NLS-1$
assertFalse(this.id, this.testData.hasAttribute("F")); //$NON-NLS-1$
}
@Test
public void renameAttribute() {
String message;
assertTrue(this.id, this.testData.hasAttribute("A")); //$NON-NLS-1$
assertFalse(this.id, this.testData.hasAttribute("X")); //$NON-NLS-1$
assertTrue(this.id, this.testData.hasAttribute("B")); //$NON-NLS-1$
assertFalse(this.id, this.testData.hasAttribute("Y")); //$NON-NLS-1$
assertTrue(this.id, this.testData.hasAttribute("C")); //$NON-NLS-1$
assertTrue(this.id, this.testData.hasAttribute("D")); //$NON-NLS-1$
assertFalse(this.id, this.testData.hasAttribute("Z")); //$NON-NLS-1$
assertTrue(this.id, this.testData.hasAttribute("E")); //$NON-NLS-1$
assertTrue(this.id, this.testData.hasAttribute("F")); //$NON-NLS-1$
AttributeValue oldValue = this.testData.getAttribute("B"); //$NON-NLS-1$
assertTrue(this.id, this.testData.renameAttribute("B", "ZZZ", false)); //$NON-NLS-1$ //$NON-NLS-2$
// Testing events
message = this.id+": renaming B to ZZZ"; //$NON-NLS-1$
this.listenerStub.assertTypes(message, AttributeChangeEvent.Type.RENAME);
this.listenerStub.assertNames(message, "ZZZ"); //$NON-NLS-1$
this.listenerStub.assertOldNames(message, "B"); //$NON-NLS-1$
this.listenerStub.assertValues(message, oldValue);
this.listenerStub.assertOldValues(message, oldValue);
this.listenerStub.reset();
assertTrue(this.id, this.testData.hasAttribute("A")); //$NON-NLS-1$
assertFalse(this.id, this.testData.hasAttribute("X")); //$NON-NLS-1$
assertFalse(this.id, this.testData.hasAttribute("B")); //$NON-NLS-1$
assertTrue(this.id, this.testData.hasAttribute("ZZZ")); //$NON-NLS-1$
assertFalse(this.id, this.testData.hasAttribute("Y")); //$NON-NLS-1$
assertTrue(this.id, this.testData.hasAttribute("C")); //$NON-NLS-1$
assertTrue(this.id, this.testData.hasAttribute("D")); //$NON-NLS-1$
assertFalse(this.id, this.testData.hasAttribute("Z")); //$NON-NLS-1$
assertTrue(this.id, this.testData.hasAttribute("E")); //$NON-NLS-1$
assertTrue(this.id, this.testData.hasAttribute("F")); //$NON-NLS-1$
assertEquals(this.id, oldValue, this.testData.getAttribute("ZZZ")); //$NON-NLS-1$
assertFalse(this.id, this.testData.renameAttribute("toto", "XXX", false)); //$NON-NLS-1$ //$NON-NLS-2$
// Testing events
message = this.id+": renaming toto to XXX"; //$NON-NLS-1$
this.listenerStub.assertEmpty(message);
this.listenerStub.reset();
assertTrue(this.id, this.testData.hasAttribute("A")); //$NON-NLS-1$
assertFalse(this.id, this.testData.hasAttribute("X")); //$NON-NLS-1$
assertFalse(this.id, this.testData.hasAttribute("B")); //$NON-NLS-1$
assertTrue(this.id, this.testData.hasAttribute("ZZZ")); //$NON-NLS-1$
assertFalse(this.id, this.testData.hasAttribute("Y")); //$NON-NLS-1$
assertTrue(this.id, this.testData.hasAttribute("C")); //$NON-NLS-1$
assertTrue(this.id, this.testData.hasAttribute("D")); //$NON-NLS-1$
assertFalse(this.id, this.testData.hasAttribute("Z")); //$NON-NLS-1$
assertTrue(this.id, this.testData.hasAttribute("E")); //$NON-NLS-1$
assertTrue(this.id, this.testData.hasAttribute("F")); //$NON-NLS-1$
oldValue = this.testData.getAttribute("F"); //$NON-NLS-1$
AttributeValue oldValue2 = this.testData.getAttribute("A"); //$NON-NLS-1$
assertFalse(this.id, this.testData.renameAttribute("F", "A", false)); //$NON-NLS-1$ //$NON-NLS-2$
// Testing events
message = this.id+": renaming F to A"; //$NON-NLS-1$
this.listenerStub.assertEmpty(message);
this.listenerStub.reset();
assertTrue(this.id, this.testData.hasAttribute("A")); //$NON-NLS-1$
assertFalse(this.id, this.testData.hasAttribute("X")); //$NON-NLS-1$
assertFalse(this.id, this.testData.hasAttribute("B")); //$NON-NLS-1$
assertTrue(this.id, this.testData.hasAttribute("ZZZ")); //$NON-NLS-1$
assertFalse(this.id, this.testData.hasAttribute("Y")); //$NON-NLS-1$
assertTrue(this.id, this.testData.hasAttribute("C")); //$NON-NLS-1$
assertTrue(this.id, this.testData.hasAttribute("D")); //$NON-NLS-1$
assertFalse(this.id, this.testData.hasAttribute("Z")); //$NON-NLS-1$
assertTrue(this.id, this.testData.hasAttribute("E")); //$NON-NLS-1$
assertTrue(this.id, this.testData.hasAttribute("F")); //$NON-NLS-1$
assertEquals(this.id, oldValue, this.testData.getAttribute("F")); //$NON-NLS-1$
assertEquals(this.id, oldValue2, this.testData.getAttribute("A")); //$NON-NLS-1$
}
@Test
public void renameAttributeOverwrite() {
String message;
assertTrue(this.id, this.testData.hasAttribute("A")); //$NON-NLS-1$
assertFalse(this.id, this.testData.hasAttribute("X")); //$NON-NLS-1$
assertTrue(this.id, this.testData.hasAttribute("B")); //$NON-NLS-1$
assertFalse(this.id, this.testData.hasAttribute("Y")); //$NON-NLS-1$
assertTrue(this.id, this.testData.hasAttribute("C")); //$NON-NLS-1$
assertTrue(this.id, this.testData.hasAttribute("D")); //$NON-NLS-1$
assertFalse(this.id, this.testData.hasAttribute("Z")); //$NON-NLS-1$
assertTrue(this.id, this.testData.hasAttribute("E")); //$NON-NLS-1$
assertTrue(this.id, this.testData.hasAttribute("F")); //$NON-NLS-1$
AttributeValue oldValue = this.testData.getAttribute("B"); //$NON-NLS-1$
assertTrue(this.id, this.testData.renameAttribute("B", "ZZZ", true)); //$NON-NLS-1$ //$NON-NLS-2$
// Testing events
message = this.id+": renaming B to ZZZ"; //$NON-NLS-1$
this.listenerStub.assertTypes(message, AttributeChangeEvent.Type.RENAME);
this.listenerStub.assertNames(message, "ZZZ"); //$NON-NLS-1$
this.listenerStub.assertOldNames(message, "B"); //$NON-NLS-1$
this.listenerStub.assertValues(message, oldValue);
this.listenerStub.assertOldValues(message, oldValue);
this.listenerStub.reset();
assertTrue(this.id, this.testData.hasAttribute("A")); //$NON-NLS-1$
assertFalse(this.id, this.testData.hasAttribute("X")); //$NON-NLS-1$
assertFalse(this.id, this.testData.hasAttribute("B")); //$NON-NLS-1$
assertTrue(this.id, this.testData.hasAttribute("ZZZ")); //$NON-NLS-1$
assertFalse(this.id, this.testData.hasAttribute("Y")); //$NON-NLS-1$
assertTrue(this.id, this.testData.hasAttribute("C")); //$NON-NLS-1$
assertTrue(this.id, this.testData.hasAttribute("D")); //$NON-NLS-1$
assertFalse(this.id, this.testData.hasAttribute("Z")); //$NON-NLS-1$
assertTrue(this.id, this.testData.hasAttribute("E")); //$NON-NLS-1$
assertTrue(this.id, this.testData.hasAttribute("F")); //$NON-NLS-1$
assertEquals(this.id, oldValue, this.testData.getAttribute("ZZZ")); //$NON-NLS-1$
assertFalse(this.id, this.testData.renameAttribute("toto", "XXX", true)); //$NON-NLS-1$ //$NON-NLS-2$
// Testing events
message = this.id+": renaming toto to XXX"; //$NON-NLS-1$
this.listenerStub.assertEmpty(message);
this.listenerStub.reset();
assertTrue(this.id, this.testData.hasAttribute("A")); //$NON-NLS-1$
assertFalse(this.id, this.testData.hasAttribute("X")); //$NON-NLS-1$
assertFalse(this.id, this.testData.hasAttribute("B")); //$NON-NLS-1$
assertTrue(this.id, this.testData.hasAttribute("ZZZ")); //$NON-NLS-1$
assertFalse(this.id, this.testData.hasAttribute("Y")); //$NON-NLS-1$
assertTrue(this.id, this.testData.hasAttribute("C")); //$NON-NLS-1$
assertTrue(this.id, this.testData.hasAttribute("D")); //$NON-NLS-1$
assertFalse(this.id, this.testData.hasAttribute("Z")); //$NON-NLS-1$
assertTrue(this.id, this.testData.hasAttribute("E")); //$NON-NLS-1$
assertTrue(this.id, this.testData.hasAttribute("F")); //$NON-NLS-1$
oldValue = this.testData.getAttribute("F"); //$NON-NLS-1$
AttributeValue oldValue2 = this.testData.getAttribute("A"); //$NON-NLS-1$
assertTrue(this.id, this.testData.renameAttribute("F", "A", true)); //$NON-NLS-1$ //$NON-NLS-2$
// Testing events
message = this.id+": renaming F to A"; //$NON-NLS-1$
this.listenerStub.assertTypes(message, AttributeChangeEvent.Type.REMOVAL, AttributeChangeEvent.Type.RENAME);
this.listenerStub.assertNames(message, "A","A"); //$NON-NLS-1$ //$NON-NLS-2$
this.listenerStub.assertOldNames(message, "A", "F"); //$NON-NLS-1$ //$NON-NLS-2$
this.listenerStub.assertValues(message, oldValue2, oldValue);
this.listenerStub.assertOldValues(message, oldValue2, oldValue);
this.listenerStub.reset();
assertTrue(this.id, this.testData.hasAttribute("A")); //$NON-NLS-1$
assertFalse(this.id, this.testData.hasAttribute("X")); //$NON-NLS-1$
assertFalse(this.id, this.testData.hasAttribute("B")); //$NON-NLS-1$
assertTrue(this.id, this.testData.hasAttribute("ZZZ")); //$NON-NLS-1$
assertFalse(this.id, this.testData.hasAttribute("Y")); //$NON-NLS-1$
assertTrue(this.id, this.testData.hasAttribute("C")); //$NON-NLS-1$
assertTrue(this.id, this.testData.hasAttribute("D")); //$NON-NLS-1$
assertFalse(this.id, this.testData.hasAttribute("Z")); //$NON-NLS-1$
assertTrue(this.id, this.testData.hasAttribute("E")); //$NON-NLS-1$
assertFalse(this.id, this.testData.hasAttribute("F")); //$NON-NLS-1$
assertEquals(this.id, oldValue, this.testData.getAttribute("A")); //$NON-NLS-1$
}
protected class ListenerStub implements AttributeChangeListener {
private final ArrayList<AttributeChangeEvent> eventList = new ArrayList<>();
public void reset() {
this.eventList.clear();
}
@Override
public void onAttributeChangeEvent(AttributeChangeEvent event) {
this.eventList.add(event);
}
public void assertEmpty(String message) {
assertEquals(message, 0,this.eventList.size());
}
public void assertTypes(String message, AttributeChangeEvent.Type... desiredTypes) {
assertEquals(message, desiredTypes.length, this.eventList.size());
for(int i=0; i<desiredTypes.length; ++i) {
assertEquals(message+" at index "+i, desiredTypes[i], this.eventList.get(i).getType()); //$NON-NLS-1$
}
}
public void assertNames(String message, String... desiredNames) {
assertEquals(message, desiredNames.length, this.eventList.size());
for(int i=0; i<desiredNames.length; ++i) {
assertEquals(message+" at index "+i, desiredNames[i], this.eventList.get(i).getName()); //$NON-NLS-1$
}
}
public void assertOldNames(String message, String... desiredNames) {
assertEquals(message, desiredNames.length, this.eventList.size());
for(int i=0; i<desiredNames.length; ++i) {
assertEquals(message+" at index "+i, desiredNames[i], this.eventList.get(i).getOldName()); //$NON-NLS-1$
}
}
public void assertValues(String message, AttributeValue... desiredValues) {
assertEquals(message, desiredValues.length, this.eventList.size());
for(int i=0; i<desiredValues.length; ++i) {
assertEquals(message+" at index "+i, desiredValues[i], this.eventList.get(i).getValue()); //$NON-NLS-1$
}
}
public void assertOldValues(String message, AttributeValue... desiredValues) {
assertEquals(message, desiredValues.length, this.eventList.size());
for(int i=0; i<desiredValues.length; ++i) {
assertEquals(message+" at index "+i, desiredValues[i], this.eventList.get(i).getOldValue()); //$NON-NLS-1$
}
}
public void assertAttributes(String message, Attribute... desiredAttributes) {
assertEquals(message, desiredAttributes.length, this.eventList.size());
for(int i=0; i<desiredAttributes.length; ++i) {
assertEquals(message+" at index "+i, desiredAttributes[i], this.eventList.get(i).getAttribute()); //$NON-NLS-1$
}
}
}
}