/*******************************************************************************
* Copyright (c) 2010 Fraunhofer IWU and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Fraunhofer IWU - initial API and implementation
*******************************************************************************/
package net.enilink.composition.test;
import net.enilink.composition.annotations.Iri;
import net.enilink.composition.mappers.RoleMapper;
import org.junit.Assert;
import org.junit.Test;
public class BridgeMethodTest extends CompositionTestCase {
Object concept;
@Iri("urn:test:Concept")
public interface Concept {
Concept getThis();
Concept getThat();
}
@Iri("urn:test:Concept")
public interface Sub1 extends Concept {
Sub1 getThis();
Sub1 getThat();
}
@Iri("urn:test:Concept")
public interface Sub2 extends Concept {
Sub2 getThis();
Sub2 getThat();
}
public static abstract class Stub1 implements Sub1 {
public static int count;
public Stub1 getThis() {
count++;
return this;
}
public Stub1 getThat() {
count++;
return null;
}
}
public static abstract class Stub2 implements Sub2 {
public static int count;
public Stub2 getThis() {
count++;
return this;
}
public Stub2 getThat() {
count++;
return null;
}
}
public void setUp() throws Exception {
super.setUp();
Stub1.count = 0;
Stub2.count = 0;
concept = objectFactory.createObject("urn:test:Concept");
}
@Override
protected void initRoleMapper(RoleMapper<String> roleMapper) {
super.initRoleMapper(roleMapper);
roleMapper.addConcept(Concept.class);
roleMapper.addConcept(Sub1.class);
roleMapper.addConcept(Sub2.class);
roleMapper.addBehaviour(Stub1.class);
roleMapper.addBehaviour(Stub2.class);
}
@Test
public void testBridgeSub1() throws Exception {
Assert.assertNull(((Concept) concept).getThat());
Assert.assertEquals(1, Stub1.count);
Assert.assertEquals(1, Stub2.count);
}
@Test
public void testBridgeSub2() throws Exception {
Assert.assertNull(((Concept) concept).getThat());
Assert.assertEquals(1, Stub1.count);
Assert.assertEquals(1, Stub2.count);
}
}