/*******************************************************************************
* Copyright (c) 2010 Martin Schnabel <mb0@mb0.org>.
* 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
******************************************************************************/
package org.axdt.asdoc.model;
import java.util.Iterator;
import org.axdt.asdoc.AsdocEFactory;
import org.axdt.avm.AvmEFactory;
import org.axdt.avm.model.AvmGeneric;
import org.axdt.avm.model.AvmNull;
import org.axdt.avm.model.AvmTypeReference;
import org.axdt.avm.model.AvmVoid;
import org.axdt.avm.naming.AvmQualifiedName;
import com.google.common.collect.Iterators;
/**
* <!-- begin-user-doc -->
* A test case for the model object '<em><b>Asdoc Type</b></em>'.
* <!-- end-user-doc -->
* <p>
* The following operations are tested:
* <ul>
* <li>{@link org.axdt.avm.model.AvmDeclaredType#getSuperTypes() <em>Get Super Types</em>}</li>
* <li>{@link org.axdt.avm.model.AvmDeclaredType#getExtendedClass() <em>Get Extended Class</em>}</li>
* <li>{@link org.axdt.avm.model.AvmType#isDynamic() <em>Is Dynamic</em>}</li>
* <li>{@link org.axdt.avm.model.AvmType#isFinal() <em>Is Final</em>}</li>
* <li>{@link org.axdt.avm.model.AvmType#isInterface() <em>Is Interface</em>}</li>
* <li>{@link org.axdt.avm.model.AvmType#isClass() <em>Is Class</em>}</li>
* <li>{@link org.axdt.avm.model.AvmType#calculateCommonType(org.axdt.avm.model.AvmType) <em>Calculate Common Type</em>}</li>
* </ul>
* </p>
* @generated
*/
public abstract class AsdocTypeTest extends AsdocDefinitionTest {
/**
* Constructs a new Asdoc Type test case with the given name.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public AsdocTypeTest(String name) {
super(name);
}
/**
* Returns the fixture for this Asdoc Type test case.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
@Override
protected AsdocType getFixture() {
return (AsdocType)fixture;
}
/**
* Tests the '{@link org.axdt.avm.model.AvmDeclaredType#getSuperTypes() <em>Get Super Types</em>}' operation.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see org.axdt.avm.model.AvmDeclaredType#getSuperTypes()
* @generated NOT
*/
public void testGetSuperTypes() {
Iterator<AvmTypeReference> iter = getFixture().getSuperTypes().iterator();
assertNotNull(iter);
assertEquals(0, Iterators.size(iter));
AvmTypeReference ref1 = AvmEFactory.eINSTANCE.createAvmDeclaredTypeReference();
getFixture().getExtendedInterfaces().add(ref1);
iter = getFixture().getSuperTypes().iterator();
assertSame(ref1, iter.next());
assertFalse(iter.hasNext());
AvmTypeReference ref2 = AvmEFactory.eINSTANCE.createAvmDeclaredTypeReference();
getFixture().getExtendedInterfaces().add(ref2);
iter = getFixture().getSuperTypes().iterator();
assertSame(ref1, iter.next());
assertSame(ref2, iter.next());
assertFalse(iter.hasNext());
}
/**
* Tests the '{@link org.axdt.avm.model.AvmDeclaredType#getExtendedClass() <em>Get Extended Class</em>}' operation.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see org.axdt.avm.model.AvmDeclaredType#getExtendedClass()
*/
public void testGetExtendedClass() {
assertNull(getFixture().getExtendedClass());
}
/**
* Tests the '{@link org.axdt.avm.model.AvmType#isDynamic() <em>Is Dynamic</em>}' operation.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see org.axdt.avm.model.AvmType#isDynamic()
*/
public void testIsDynamic() {
assertFalse(getFixture().isDynamic());
}
/**
* Tests the '{@link org.axdt.avm.model.AvmType#isFinal() <em>Is Final</em>}' operation.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see org.axdt.avm.model.AvmType#isFinal()
*/
public void testIsFinal() {
assertFalse(getFixture().isFinal());
}
/**
* Tests the '{@link org.axdt.avm.model.AvmType#isInterface() <em>Is Interface</em>}' operation.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see org.axdt.avm.model.AvmType#isInterface()
*/
public abstract void testIsInterface();
/**
* Tests the '{@link org.axdt.avm.model.AvmType#isClass() <em>Is Class</em>}' operation.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see org.axdt.avm.model.AvmType#isClass()
*/
public abstract void testIsClass();
/**
* Tests the '{@link org.axdt.avm.model.AvmType#calculateCommonType(org.axdt.avm.model.AvmType) <em>Calculate Common Type</em>}' operation.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see org.axdt.avm.model.AvmType#calculateCommonType(org.axdt.avm.model.AvmType)
*/
public void testCalculateCommonType__AvmType() {
assertNull(getFixture().calculateCommonType(null));
AvmNull nul = AvmEFactory.eINSTANCE.createAvmNull();
assertEquals(getFixture(), getFixture().calculateCommonType(nul));
AvmVoid voi = AvmEFactory.eINSTANCE.createAvmVoid();
assertEquals(voi, getFixture().calculateCommonType(voi));
AvmGeneric generic = AvmEFactory.eINSTANCE.createAvmGeneric();
assertEquals(generic, getFixture().calculateCommonType(generic));
assertEquals(getFixture(), getFixture().calculateCommonType(getFixture()));
// TODO test inheritance
// TODO special case interface -> Object
}
/**
* Tests the '{@link org.axdt.avm.DeclaredType#getExtendedInterfaces() <em>Get Extended Interfaces</em>}' operation.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see org.axdt.avm.DeclaredType#getExtendedInterfaces()
*/
public void testGetExtendedInterfaces() {
assertNotNull(getFixture().getExtendedInterfaces());
assertEquals(0, getFixture().getExtendedInterfaces().size());
}
@Override
public void testGetName() {
assertNull(getFixture().getName());
getFixture().setName("foo");
assertSame("foo", getFixture().getName());
}
@Override
public void testGetQualifier() {
assertNull(getFixture().getQualifier());
AsdocPackage pack = AsdocEFactory.eINSTANCE.createAsdocPackage();
pack.setQualifiedName(AvmQualifiedName.create("foo","bar"));
pack.getTypes().add(getFixture());
assertEquals("foo.bar", getFixture().getQualifier());
}
public void testGetCanonicalName() {
assertNull(getFixture().getCanonicalName());
getFixture().setName("spam");
assertEquals("spam",getFixture().getCanonicalName());
AsdocPackage pack = AsdocEFactory.eINSTANCE.createAsdocPackage();
pack.getTypes().add(getFixture());
assertEquals("spam",getFixture().getCanonicalName());
pack.setQualifiedName(AvmQualifiedName.create("foo","bar"));
assertEquals("foo.bar.spam", getFixture().getCanonicalName());
}
} //AsdocTypeTest