blob: a80a0a274b1fafd99eea2867f28c4ecdaebcc530 [file] [log] [blame]
/**
*
* Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
*/
package org.eclipse.osbp.infogrid.services.tests;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import java.util.List;
import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.xtext.common.types.JvmGenericType;
import org.eclipse.xtext.common.types.JvmParameterizedTypeReference;
import org.eclipse.xtext.common.types.TypesFactory;
import org.junit.Before;
import org.junit.Test;
import org.knowhowlab.osgi.testing.utils.BundleUtils;
import org.knowhowlab.osgi.testing.utils.ServiceUtils;
import org.eclipse.osbp.infogrid.api.IGridSourceCache;
import org.eclipse.osbp.infogrid.model.gridsource.CxGridSource;
import org.eclipse.osbp.infogrid.model.gridsource.CxGridSourceFactory;
import org.eclipse.osbp.infogrid.services.tests.data.TestClass1;
import org.eclipse.osbp.infogrid.services.tests.data.TestClass2;
import org.osgi.framework.BundleContext;
import org.osgi.framework.FrameworkUtil;
public class GridSourceCacheTest {
private BundleContext bc;
private IGridSourceCache cache;
@Before
public void setup() throws Exception {
bc = getBundleContext();
BundleUtils.startBundleAsync(bc, "org.eclipse.osbp.infogrid.model");
BundleUtils.startBundleAsync(bc, "org.eclipse.osbp.infogrid.services");
cache = ServiceUtils.getService(getBundleContext(),
IGridSourceCache.class);
assertNotNull(cache);
}
private BundleContext getBundleContext() {
return FrameworkUtil.getBundle(getClass()).getBundleContext();
}
@Test
public void test_IdNull() {
assertNull(cache.getSource(null));
}
@Test
public void test_ClassNull() {
List<CxGridSource> result = cache.getSources(null);
assertEquals(0, result.size());
}
@Test
public void test_AddRemoveModel_getById() {
CxGridSource cxSource = CxGridSourceFactory.eINSTANCE
.createCxGridSource();
CxGridSource cxSource2 = CxGridSourceFactory.eINSTANCE
.createCxGridSource();
cxSource2.setId("test2");
// add remove with empty id
cache.registerSource(cxSource);
cache.unregisterSource(cxSource);
// add test1
cxSource.setId("test1");
cache.registerSource(cxSource);
CxGridSource result = cache.getSource("test1");
assertNotNull(result);
assertEquals("test1", result.getId());
cache.unregisterSource(cxSource);
result = cache.getSource("test1");
assertNull(result);
cache.registerSource(cxSource);
cache.registerSource(cxSource2);
assertEquals("test1", cache.getSource("test1").getId());
assertEquals("test2", cache.getSource("test2").getId());
cache.unregisterSource(cxSource);
}
@Test
public void test_AddRemoveModel_getByClass() {
JvmGenericType jvmType1 = TypesFactory.eINSTANCE.createJvmGenericType();
jvmType1.setSimpleName("TestClass1");
jvmType1.setPackageName("org.eclipse.osbp.infogrid.services.tests.data");
JvmParameterizedTypeReference jvmType1Ref = TypesFactory.eINSTANCE
.createJvmParameterizedTypeReference();
jvmType1Ref.setType(jvmType1);
JvmGenericType jvmType2 = TypesFactory.eINSTANCE.createJvmGenericType();
jvmType2.setSimpleName("TestClass2");
jvmType2.setPackageName("org.eclipse.osbp.infogrid.services.tests.data");
JvmParameterizedTypeReference jvmType2Ref = TypesFactory.eINSTANCE
.createJvmParameterizedTypeReference();
jvmType2Ref.setType(jvmType2);
CxGridSource cxSource = CxGridSourceFactory.eINSTANCE
.createCxGridSource();
cxSource.setId("test1");
cxSource.setRootType(jvmType1Ref);
cxSource.setRootTypeFQN(jvmType1Ref.getQualifiedName());
CxGridSource cxSource2 = CxGridSourceFactory.eINSTANCE
.createCxGridSource();
cxSource2.setId("test2");
cxSource2.setRootType(jvmType2Ref);
cxSource2.setRootTypeFQN(jvmType2Ref.getQualifiedName());
CxGridSource cxSource3 = CxGridSourceFactory.eINSTANCE
.createCxGridSource();
cxSource3.setId("test3");
cxSource3.setRootType(EcoreUtil.copy(jvmType1Ref));
cxSource3.setRootTypeFQN(jvmType1Ref.getQualifiedName());
// only register source1
cache.registerSource(cxSource);
List<CxGridSource> result = cache.getSources(TestClass1.class);
assertEquals(1, result.size());
assertEquals("test1", result.get(0).getId());
result = cache.getSources(TestClass2.class);
assertEquals(0, result.size());
// unregister source1
cache.unregisterSource(cxSource);
result = cache.getSources(TestClass1.class);
assertEquals(0, result.size());
// register all sources
cache.registerSource(cxSource);
cache.registerSource(cxSource2);
cache.registerSource(cxSource3);
// 2 descriptors are available
result = cache.getSources(TestClass1.class);
assertEquals(2, result.size());
assertEquals("test1", result.get(0).getId());
assertEquals("test3", result.get(1).getId());
}
}