/******************************************************************************
* Copyright (c) 2006, 2010 VMware Inc.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* and Apache License v2.0 which accompanies this distribution.
* The Eclipse Public License is available at
* http://www.eclipse.org/legal/epl-v10.html and the Apache License v2.0
* is available at http://www.opensource.org/licenses/apache2.0.php.
* You may elect to redistribute this code under either of these licenses.
*
* Contributors:
* VMware Inc.
*****************************************************************************/
package org.eclipse.gemini.blueprint.internal.service.collection;
import java.util.Dictionary;
import java.util.Iterator;
import java.util.Properties;
import org.eclipse.gemini.blueprint.service.importer.support.internal.collection.OsgiServiceCollection;
import org.eclipse.gemini.blueprint.service.importer.support.internal.collection.OsgiServiceSet;
import org.osgi.framework.Constants;
/**
* @author Costin Leau
*
*/
public class OsgiServiceSetTest extends AbstractOsgiCollectionTest {
private Iterator iter;
private Dictionary serviceProps;
protected void setUp() throws Exception {
super.setUp();
iter = col.iterator();
serviceProps = new Properties();
// set the id to test uniqueness
serviceProps.put(Constants.SERVICE_ID, new Long(13));
}
protected void tearDown() throws Exception {
super.tearDown();
col = null;
iter = null;
}
OsgiServiceCollection createCollection() {
return new OsgiServiceSet(null, context, getClass().getClassLoader(), createProxyCreator(new Class<?>[] {
Wrapper.class, Comparable.class }), false);
}
public void testAddDuplicates() {
long time1 = 123;
Wrapper date = new DateWrapper(time1);
assertEquals(0, col.size());
addService(date, serviceProps);
assertEquals(1, col.size());
addService(date, serviceProps);
assertEquals("set accepts duplicate services", 1, col.size());
}
public void testAddEqualServiceInstances() {
long time = 123;
Wrapper date1 = new DateWrapper(time);
Wrapper date2 = new DateWrapper(time);
assertEquals(date1, date2);
assertEquals(0, col.size());
addService(date1, serviceProps);
assertEquals(1, col.size());
addService(date2, serviceProps);
assertEquals("set accepts duplicate services", 1, col.size());
}
public void testAddEqualServiceInstancesWithIterator() {
long time = 123;
Wrapper date1 = new DateWrapper(time);
Wrapper date2 = new DateWrapper(time);
assertEquals(date1, date2);
assertEquals(0, col.size());
assertFalse(iter.hasNext());
addService(date1, serviceProps);
assertTrue(iter.hasNext());
assertEquals(date1.execute(), ((Wrapper) iter.next()).execute());
assertFalse(iter.hasNext());
addService(date1, serviceProps);
assertFalse("set accepts duplicate services", iter.hasNext());
}
public void testRemoveDuplicates() {
long time1 = 123;
Wrapper date = new DateWrapper(time1);
Wrapper date2 = new DateWrapper(time1 * 2);
assertEquals(0, col.size());
addService(date);
assertEquals(1, col.size());
addService(date2);
assertEquals(2, col.size());
removeService(date2);
assertEquals(1, col.size());
removeService(date2);
assertEquals(1, col.size());
}
}