package org.modeldriven.fuml.test.builtin;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.modeldriven.fuml.test.FUMLTestSetup;
import fUML.Semantics.Classes.Kernel.ExtensionalValue;
import fUML.Semantics.Classes.Kernel.ExtensionalValueList;
import fUML.Semantics.Classes.Kernel.FeatureValue;
import fUML.Semantics.Classes.Kernel.Value;
import fUML.Semantics.CommonBehaviors.BasicBehaviors.ParameterValueList;
import junit.framework.Test;
/**
*
*/
public class LinkReaderTestCase extends BuiltInTest {
private static Log log = LogFactory.getLog(LinkReaderTestCase.class);
public static Test suite() {
return FUMLTestSetup.newTestSetup(LinkReaderTestCase.class);
}
public void setUp() throws Exception {
this.clearExtents();
}
public void testLinkReader() throws Exception {
log.info("testLinkReader");
ParameterValueList output = this.testSuite.testLinkReader();
log.info("done");
assertNotNull(output);
assertEquals("output.size()", 2, output.size());
assertEquals("output[0].values.size()", 2, output.get(0).values.size());
assertEquals("output[1].values.size()", 2, output.get(1).values.size());
Value linkOutput1 = output.get(0).values.get(0);
Value linkOutput2 = output.get(0).values.get(1);
Value featureOutput1 = output.get(1).values.get(0);
Value featureOutput2 = output.get(1).values.get(1);
ExtensionalValueList extent = this.findExtent("AB");
assertEquals("extent.size()", 2, extent.size());
ExtensionalValue link1 = extent.get(0);
assertEquals("link1.featureValues.size()", 2, link1.getFeatureValues().size());
FeatureValue featureValue1a = link1.getFeatureValues().get(0);
assertEquals("featureValue1a.values.size()", 1, featureValue1a.values.size());
FeatureValue featureValue1b = link1.getFeatureValues().get(1);
assertEquals("featureValue1b.values.size()", 1, featureValue1b.values.size());
ExtensionalValue link2 = extent.get(1);
assertEquals("link2.featureValues.size()", 2, link2.getFeatureValues().size());
FeatureValue featureValue2a = link2.getFeatureValues().get(0);
assertEquals("featureValue2a.values.size()", 1, featureValue2a.values.size());
FeatureValue featureValue2b = link2.getFeatureValues().get(1);
assertEquals("featureValue2b.values.size()", 1, featureValue2b.values.size());
Value value1b = featureValue1b.values.get(0);
Value value2b = featureValue2b.values.get(0);
assertSame("value1b (end)", linkOutput2, value1b);
assertSame("value1b (feature)", featureOutput2, value1b);
assertSame("value2b (end)", linkOutput1, value2b);
assertSame("value2b (feature)", featureOutput1, value2b);
}
}