Commit ca704ad9 authored by Martti Käärik's avatar Martti Käärik
Browse files

Correct rendering of DataElementUse items (collections).

parent 7567ff5d
Loading
Loading
Loading
Loading
+31 −4
Original line number Diff line number Diff line
@@ -27,6 +27,7 @@ import org.etsi.mts.tdl.Behaviour;
import org.etsi.mts.tdl.Block;
import org.etsi.mts.tdl.BoundedLoopBehaviour;
import org.etsi.mts.tdl.Break;
import org.etsi.mts.tdl.CollectionDataType;
import org.etsi.mts.tdl.CombinedBehaviour;
import org.etsi.mts.tdl.ComponentInstance;
import org.etsi.mts.tdl.ComponentInstanceRole;
@@ -100,7 +101,6 @@ import org.etsi.mts.tdl.VariableUse;
import org.etsi.mts.tdl.VerdictAssignment;
import org.etsi.mts.tdl.Wait;
import org.etsi.mts.tdl.execution.java.rt.core.TimeUnit;
import org.etsi.mts.tdl.execution.java.tri.PredefinedFunctions;

public class JUnitTestGenerator extends Renderer {

@@ -159,6 +159,7 @@ public class JUnitTestGenerator extends Renderer {
		List<TestDescription> tdList = new ArrayList<TestDescription>();
		gatherPackageableElements(model, false, e -> {
			if (e instanceof TestDescription)
				if (((TestDescription)e).isIsLocallyOrdered())
					tdList.add((TestDescription) e);
		});

@@ -1433,6 +1434,8 @@ public class JUnitTestGenerator extends Renderer {

			} else if (type instanceof Time || isTime)
				line("long " + varName + ";");
			else if (type instanceof CollectionDataType)
				line("java.util.List<" + getElementName(((CollectionDataType) type).getItemType()) + "> " + varName + ";");
			else
				line(getElementName(type) + " " + varName + ";");
			dataUseVariables.put(d, varName);
@@ -1469,6 +1472,11 @@ public class JUnitTestGenerator extends Renderer {
			if (idx != null)
				initializeDataUse(idx, dataUseVariables);
		}
		if (d instanceof DataElementUse) {
			for (DataUse item: ((DataElementUse)d).getItem()) {
				initializeDataUse(item, dataUseVariables);
			}
		}
		for (DataUse arg : getDataUseArgumentValues(d)) {
			initializeDataUse(arg, dataUseVariables);
		}
@@ -1486,7 +1494,8 @@ public class JUnitTestGenerator extends Renderer {
		FormalParameter formalParameter = null;
		Function function = null;
		PredefinedFunction predefinedFunction = null;
		EList<MemberAssignment> memberAssignments = null;
		List<MemberAssignment> memberAssignments = null;
		List<DataUse> collectionItems = null;

		if (d instanceof DataElementUse) {
			NamedElement element = ((DataElementUse) d).getDataElement();
@@ -1547,12 +1556,23 @@ public class JUnitTestGenerator extends Renderer {
			}

		} else if (dataType != null) {
			boolean isCollection = false;
			if (dataType instanceof CollectionDataType) {
				dataType = ((CollectionDataType) dataType).getItemType();
				isCollection = true;
				if (d instanceof DataElementUse)
					collectionItems = ((DataElementUse) d).getItem();
			}
			DataElementMapping m = getMapping(dataType);
			if (m != null) {
				if (hasAnnotation(m, MAPPING_ANNOTATION_CLASS)) {
					append("new ");
					if (isCollection)
						append("java.util.ArrayList<");
					String classQName = m.getDataResourceMapping().getResourceURI();
					append(classQName + "." + m.getElementURI());
					if (isCollection)
						append(">");
					append("()");
				}
			}
@@ -1631,6 +1651,14 @@ public class JUnitTestGenerator extends Renderer {
				line(";");
			}
		}
		if (collectionItems != null) {
			for (DataUse item: collectionItems) {
				String itemRef = dataUseVariables.get(item);
				append(ref + ".add(" + itemRef + ")");
				line(";");
				
			}
		}
	}

	private void writeMemberAssignment(Parameter p, DataUse v, Map<DataUse, String> dataUseVariables) {
@@ -1742,7 +1770,6 @@ public class JUnitTestGenerator extends Renderer {
	}

	private String getPredefinedFunction(PredefinedFunction f) {
		PredefinedFunctions pf;
		switch (f.getName()) {
		case "==":
			return "equals";