package org.archstudio.xarchadt.common;
import org.archstudio.xadl3.structure_3_0.Component;
import org.archstudio.xadl3.structure_3_0.Structure;
import org.archstudio.xadl3.structure_3_0.Structure_3_0Factory;
import org.archstudio.xadl3.structure_3_0.Structure_3_0Package;
import org.archstudio.xadl3.structure_3_0.SubStructure;
import org.archstudio.xadl3.xadlcore_3_0.DocumentRoot;
import org.archstudio.xadl3.xadlcore_3_0.XADLType;
import org.archstudio.xadl3.xadlcore_3_0.Xadlcore_3_0Factory;
import org.archstudio.xadl3.xadlcore_3_0.Xadlcore_3_0Package;
import org.archstudio.xarchadt.XArchADTProxy;
import org.eclipse.emf.ecore.EObject;
import com.google.common.collect.Sets;
public class XArchADTProxyTest extends AbstractXArchADTTest {
@Override
protected void setUp() throws Exception {
super.setUp();
DocumentRoot documentRoot = XArchADTProxy.proxy(xarch, documentRootRef);
documentRoot.setXADL(((Xadlcore_3_0Factory) XArchADTProxy.proxy(xarch, Xadlcore_3_0Package.eNS_URI))
.createXADLType());
}
private void assertConsistent(EObject eObject) {
assertNotNull(eObject);
assertNotNull(XArchADTProxy.unproxy(eObject));
assertSame(eObject, XArchADTProxy.proxy(xarch, XArchADTProxy.unproxy(eObject)));
}
public void testCreateDocument() {
DocumentRoot documentRoot = XArchADTProxy.proxy(xarch, documentRootRef);
assertConsistent(documentRoot);
XADLType xadlType = documentRoot.getXADL();
assertConsistent(xadlType);
}
public void testCreate() {
Structure_3_0Factory structures = XArchADTProxy.proxy(xarch, Structure_3_0Package.eNS_URI);
Component component = structures.createComponent();
assertConsistent(component);
}
public void testCache() {
assertSame(XArchADTProxy.proxy(xarch, documentRootRef), XArchADTProxy.proxy(xarch, documentRootRef));
DocumentRoot documentRoot = XArchADTProxy.proxy(xarch, documentRootRef);
assertSame(documentRoot.getXADL(), documentRoot.getXADL());
}
public void testSetClear() {
Structure_3_0Factory structures = XArchADTProxy.proxy(xarch, Structure_3_0Package.eNS_URI);
Component component = structures.createComponent();
assertEquals(null, component.getId());
component.setId("ID1");
assertEquals("ID1", component.getId());
component.setId("ID2");
assertEquals("ID2", component.getId());
component.setId(null);
assertEquals(null, component.getId());
SubStructure subStructure = structures.createSubStructure();
assertEquals(null, component.getSubStructure());
component.setSubStructure(subStructure);
assertEquals(subStructure, component.getSubStructure());
component.setSubStructure(null);
assertEquals(null, component.getSubStructure());
}
public void testAddRemove() {
DocumentRoot documentRoot = XArchADTProxy.proxy(xarch, documentRootRef);
assertConsistent(documentRoot);
XADLType xadlType = documentRoot.getXADL();
assertConsistent(xadlType);
Structure_3_0Factory structures = XArchADTProxy.proxy(xarch, Structure_3_0Package.eNS_URI);
Structure structure = structures.createStructure();
assertConsistent(structure);
xadlType.getTopLevelElement().add(structure);
Component component1 = structures.createComponent();
assertConsistent(component1);
Component component2 = structures.createComponent();
assertConsistent(component2);
structure.getComponent().add(component1);
assertEquals(Sets.newHashSet(component1), Sets.newHashSet(structure.getComponent()));
structure.getComponent().add(component2);
assertEquals(Sets.newHashSet(component1, component2), Sets.newHashSet(structure.getComponent()));
structure.getComponent().remove(component1);
assertEquals(Sets.newHashSet(component2), Sets.newHashSet(structure.getComponent()));
structure.getComponent().remove(component2);
assertEquals(Sets.newHashSet(), Sets.newHashSet(structure.getComponent()));
}
public void testEClass() {
assertEquals(((DocumentRoot) XArchADTProxy.proxy(xarch, documentRootRef)).eClass(),
Xadlcore_3_0Package.Literals.DOCUMENT_ROOT);
assertEquals(((DocumentRoot) XArchADTProxy.proxy(xarch, documentRootRef)).eClass().getEPackage(),
Xadlcore_3_0Package.Literals.DOCUMENT_ROOT.getEPackage());
}
}