Refactors TestSubmodelSuite

- Removes BasicEvent -> Future of element not clear
- Adds more test data to elements

Change-Id: I8b56d05984a877b531b1ec3bb2194b64bfecf222
Signed-off-by: Frank Schnicke <frank.schnicke@iese.fraunhofer.de>
diff --git a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/submodel/metamodel/facade/SubmodelValuesHelper.java b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/submodel/metamodel/facade/SubmodelValuesHelper.java
index 01f09ab..96b9f04 100644
--- a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/submodel/metamodel/facade/SubmodelValuesHelper.java
+++ b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/submodel/metamodel/facade/SubmodelValuesHelper.java
@@ -6,6 +6,7 @@
 
 import org.eclipse.basyx.submodel.metamodel.api.submodelelement.ISubmodelElement;
 import org.eclipse.basyx.submodel.metamodel.map.SubModel;
+import org.eclipse.basyx.submodel.metamodel.map.qualifier.LangStrings;
 
 /**
  * Helperclass for getting the /values Map from a SubModel.
@@ -31,7 +32,8 @@
 	
 	@SuppressWarnings("unchecked")
 	private static Object handleValue(Object value) {
-		if(value instanceof Collection<?>) {
+		// Check if it is a collection but not a LangStrings (is internally also a Collection)
+		if (value instanceof Collection<?> && !(value instanceof LangStrings)) {
 			return handleValueCollection((Collection<ISubmodelElement>) value);
 		} else {
 			// The value is not a collection -> return it as is
diff --git a/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/submodel/metamodel/TestSubmodelSuite.java b/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/submodel/metamodel/TestSubmodelSuite.java
index 8f0c28d..e405e34 100644
--- a/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/submodel/metamodel/TestSubmodelSuite.java
+++ b/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/submodel/metamodel/TestSubmodelSuite.java
@@ -1,5 +1,6 @@
 package org.eclipse.basyx.testsuite.regression.submodel.metamodel;
 
+import static org.junit.Assert.assertArrayEquals;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
@@ -26,6 +27,8 @@
 import org.eclipse.basyx.submodel.metamodel.api.submodelelement.dataelement.IBlob;
 import org.eclipse.basyx.submodel.metamodel.api.submodelelement.dataelement.IProperty;
 import org.eclipse.basyx.submodel.metamodel.map.SubModel;
+import org.eclipse.basyx.submodel.metamodel.map.qualifier.LangString;
+import org.eclipse.basyx.submodel.metamodel.map.qualifier.LangStrings;
 import org.eclipse.basyx.submodel.metamodel.map.reference.Key;
 import org.eclipse.basyx.submodel.metamodel.map.reference.Reference;
 import org.eclipse.basyx.submodel.metamodel.map.submodelelement.SubmodelElementCollection;
@@ -36,7 +39,7 @@
 import org.eclipse.basyx.submodel.metamodel.map.submodelelement.dataelement.property.Property;
 import org.eclipse.basyx.submodel.metamodel.map.submodelelement.dataelement.property.valuetypedef.PropertyValueTypeDef;
 import org.eclipse.basyx.submodel.metamodel.map.submodelelement.dataelement.range.Range;
-import org.eclipse.basyx.submodel.metamodel.map.submodelelement.event.BasicEvent;
+import org.eclipse.basyx.submodel.metamodel.map.submodelelement.dataelement.range.RangeValue;
 import org.eclipse.basyx.submodel.metamodel.map.submodelelement.relationship.RelationshipElement;
 import org.eclipse.basyx.vab.exception.provider.ResourceNotFoundException;
 import org.junit.Test;
@@ -57,11 +60,11 @@
 	private final String BLOB_ID = "blob_id";
 	private final String RELATIONSHIP_ELEM_ID = "relElem_id";
 	private final String SUBMODEL_ELEM_COLLECTION_ID = "elemCollection_id";
+	private final String PROPERTY_CONTAINED_ID = "containedProp";
 	private final String RANGE_ID = "range_id";
 	private final String FILE_ID = "file_id";
 	private final String MULTI_LANG_PROP_ID = "multi_lang_prop_id";
 	private final String REFERENCE_ELEMENT_ID = "reference_element_id";
-	private final String BASIC_EVENT_ID = "basic_event_id";
 	private final String PROPERTY_ID2 = "property_id2";
 	
 
@@ -214,6 +217,7 @@
 		}
 
 		Map<String, Object> values = submodel.getValues();
+
 		assertEquals(9, values.size());
 
 		// Check if all expected Values are present
@@ -224,13 +228,13 @@
 		assertTrue(values.containsKey(SUBMODEL_ELEM_COLLECTION_ID));
 		Map<String, Object> collection = (Map<String, Object>) values.get(SUBMODEL_ELEM_COLLECTION_ID);
 
-		assertTrue(collection.containsKey(BLOB_ID));
+		assertTrue(collection.containsKey(PROPERTY_CONTAINED_ID));
 		assertTrue(values.containsKey(PROPERTY_ID2));
+		assertTrue(values.containsKey(BLOB_ID));
 		assertTrue(values.containsKey(RANGE_ID));
 		assertTrue(values.containsKey(MULTI_LANG_PROP_ID));
 		assertTrue(values.containsKey(FILE_ID));
 		assertTrue(values.containsKey(REFERENCE_ELEMENT_ID));
-		assertTrue(values.containsKey(BASIC_EVENT_ID));
 	}
 
 	/**
@@ -281,16 +285,19 @@
 		SubmodelElementCollection smECollection = new SubmodelElementCollection();
 		smECollection.setIdShort(SUBMODEL_ELEM_COLLECTION_ID);
 
-		// Create a Blob to use as Value for smECollection
-		Blob blob = new Blob(BLOB_ID, "text/json");
-		blob.setValue(new byte[] { 1, 2, 3 });
-
+		// Create a Property to use as Value for smECollection
 		List<ISubmodelElement> values = new ArrayList<>();
-		values.add(blob);
+		Property contained = new Property(PROPERTY_CONTAINED_ID, true);
+		values.add(contained);
+
 
 		smECollection.setValue(values);
 		ret.put(smECollection.getIdShort(), smECollection);
 
+		Blob blob = new Blob(BLOB_ID, "text/json");
+		blob.setValue(new byte[] { 1, 2, 3 });
+		ret.put(blob.getIdShort(), blob);
+
 		Reference first = new Reference(new Key(KeyElements.BASICEVENT, true, "testFirst", IdentifierType.CUSTOM));
 		Reference second = new Reference(new Key(KeyElements.BASICEVENT, true, "testSecond", IdentifierType.CUSTOM));
 
@@ -300,21 +307,21 @@
 		Property property = new Property(PROPERTY_ID2, PropertyValueTypeDef.AnySimpleType);
 		ret.put(property.getIdShort(), property);
 		
-		Range range = new Range(RANGE_ID, PropertyValueTypeDef.AnyType);
+		Range range = new Range(RANGE_ID, PropertyValueTypeDef.Integer);
+		range.setValue(new RangeValue(-100, +100));
 		ret.put(range.getIdShort(), range);
 		
 		File file = new File("text/plain");
 		file.setIdShort(FILE_ID);
+		file.setValue("fileUrl");
 		ret.put(file.getIdShort(), file);
 		
 		MultiLanguageProperty languageProperty = new MultiLanguageProperty(MULTI_LANG_PROP_ID);
+		languageProperty.setValue(new LangStrings(new LangString("en-en", "TestDescription")));
 		ret.put(languageProperty.getIdShort(), languageProperty);
 		
-		ReferenceElement referenceElement = new ReferenceElement(REFERENCE_ELEMENT_ID);
+		ReferenceElement referenceElement = new ReferenceElement(REFERENCE_ELEMENT_ID, first);
 		ret.put(referenceElement.getIdShort(), referenceElement);
-		
-		BasicEvent basicEvent = new BasicEvent(BASIC_EVENT_ID, first);
-		ret.put(basicEvent.getIdShort(), basicEvent);
 
 		return ret;
 	}
@@ -356,10 +363,10 @@
 
 		Collection<ISubmodelElement> elements = actualCollection.getSubmodelElements().values();
 
+
 		// Check for correct Type
-		for (ISubmodelElement iSubmodelElement : elements) {
-			assertTrue(iSubmodelElement instanceof IBlob);
-		}
+		assertEquals(1, elements.size());
+		assertTrue(elements.iterator().next() instanceof IProperty);
 
 		assertEquals(expectedCollection.getSubmodelElements().size(), elements.size());
 
@@ -368,7 +375,13 @@
 			// Equality of Ids is implicitly checked by this retrieval
 			ISubmodelElement actualElem = actual.get(elem.getIdShort());
 			assertNotNull(actualElem);
-			assertEquals(elem.getValue(), actualElem.getValue());
+
+			// Blob needs to be handled separately due to array content
+			if (elem instanceof IBlob) {
+				assertArrayEquals((byte[]) elem.getValue(), (byte[]) actualElem.getValue());
+			} else {
+				assertEquals(elem.getValue(), actualElem.getValue());
+			}
 		}
 	}