blob: b2e1c39309c2c4de93f4dc336162cdae3a2600df [file] [log] [blame]
package org.eclipse.basyx.testsuite.regression.submodel.types.digitalnameplate.submodelelementcollections;
import static org.junit.Assert.assertEquals;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.eclipse.basyx.aas.metamodel.exception.MetamodelConstructionException;
import org.eclipse.basyx.submodel.metamodel.api.identifier.IdentifierType;
import org.eclipse.basyx.submodel.metamodel.api.reference.enums.KeyElements;
import org.eclipse.basyx.submodel.metamodel.api.submodelelement.ISubmodelElement;
import org.eclipse.basyx.submodel.metamodel.map.SubModel;
import org.eclipse.basyx.submodel.metamodel.map.identifier.Identifier;
import org.eclipse.basyx.submodel.metamodel.map.qualifier.HasSemantics;
import org.eclipse.basyx.submodel.metamodel.map.qualifier.Identifiable;
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.qualifier.Referable;
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.dataelement.MultiLanguageProperty;
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.types.digitalnameplate.submodelelementcollections.address.Address;
import org.eclipse.basyx.submodel.types.digitalnameplate.submodelelementcollections.assetspecificproperties.AssetSpecificProperties;
import org.eclipse.basyx.submodel.types.digitalnameplate.submodelelementcollections.markings.Marking;
import org.eclipse.basyx.submodel.types.digitalnameplate.submodelelementcollections.markings.Markings;
import org.eclipse.basyx.submodel.types.digitalnameplate.DigitalNameplateSubmodel;
import org.eclipse.basyx.testsuite.regression.submodel.types.digitalnameplate.submodelelementcollections.address.TestAddress;
import org.eclipse.basyx.testsuite.regression.submodel.types.digitalnameplate.submodelelementcollections.assetspecificproperties.TestAssetSpecificProperties;
import org.eclipse.basyx.testsuite.regression.submodel.types.digitalnameplate.submodelelementcollections.markings.TestMarking;
import org.eclipse.basyx.testsuite.regression.submodel.types.digitalnameplate.submodelelementcollections.markings.TestMarkings;
import org.eclipse.basyx.vab.exception.provider.ResourceNotFoundException;
import org.junit.Before;
import org.junit.Test;
/**
* Tests createAsFacade and isValid of {@link DigitalNameplateSubmodel} for their
* correctness
*
* @author haque
*
*/
public class TestDigitalNameplateSubmodel {
public static MultiLanguageProperty manufacturerName = new MultiLanguageProperty(DigitalNameplateSubmodel.MANUFACTURERNAMEID);
public static MultiLanguageProperty designation = new MultiLanguageProperty(DigitalNameplateSubmodel.MANUFACTURERPRODUCTDESIGNATIONID);
public static Address address = new Address(TestAddress.street, TestAddress.zipCode, TestAddress.cityTown, TestAddress.nationalCode);
public static MultiLanguageProperty productFamily = new MultiLanguageProperty(DigitalNameplateSubmodel.MANUFACTURERPRODUCTFAMILYID);
public static Property serialNumber = new Property(DigitalNameplateSubmodel.SERIALNUMBERID, PropertyValueTypeDef.String);
public static Property yearsOfConstruction = new Property(DigitalNameplateSubmodel.YEARSOFCONSTRUCTIONID, PropertyValueTypeDef.String);
public static Markings markings;
public static AssetSpecificProperties assetSpecificProperties = new AssetSpecificProperties(Collections.singletonList(TestAssetSpecificProperties.guidelineSpecificProperties));
public static Identifier identifier = new Identifier(IdentifierType.IRI, "https://admin-shell.io/zvei/nameplate/1/0/Nameplate");
private Map<String, Object> submodelMap = new HashMap<String, Object>();
@Before
public void buildFax() {
manufacturerName.setValue(new LangStrings(new LangString("DE", "Test Manufacturer")));
designation.setValue(new LangStrings(new LangString("DE", "Test Designation")));
productFamily.setValue(new LangStrings(new LangString("DE", "Test Product Family")));
serialNumber.setValue("123456");
yearsOfConstruction.setValue("2020");
TestMarking.markingFile.setIdShort(Marking.MARKINGFILEID);
TestMarking.markingName.setValue("0173-1#07-DAA603#004");
TestMarkings.marking = new Marking(TestMarking.IDSHORT, TestMarking.markingName, TestMarking.markingFile);
TestMarkings.marking.setParent(new Reference(new Key(KeyElements.SUBMODELELEMENTCOLLECTION, true, Markings.IDSHORT, IdentifierType.IRDI)));
TestMarkings.markings = new ArrayList<Marking>();
TestMarkings.markings.add(TestMarkings.marking);
markings = new Markings(TestMarkings.markings);
TestAddress.street.setValue(new LangStrings(new LangString("DE", "musterstraße 1")));
TestAddress.zipCode.setValue(new LangStrings(new LangString("DE", "12345")));
TestAddress.cityTown.setValue(new LangStrings(new LangString("DE", "MusterStadt")));
TestAddress.nationalCode.setValue(new LangStrings(new LangString("DE", "DE")));
List<ISubmodelElement> elements = new ArrayList<ISubmodelElement>();
elements.add(manufacturerName);
elements.add(designation);
elements.add(productFamily);
elements.add(serialNumber);
elements.add(yearsOfConstruction);
elements.add(markings);
elements.add(address);
elements.add(assetSpecificProperties);
submodelMap.put(Referable.IDSHORT, DigitalNameplateSubmodel.SUBMODELID);
submodelMap.put(HasSemantics.SEMANTICID, DigitalNameplateSubmodel.SEMANTICID);
submodelMap.put(SubModel.SUBMODELELEMENT, elements);
submodelMap.put(Identifiable.IDENTIFICATION, identifier);
}
@Test
public void testCreateAsFacade() {
DigitalNameplateSubmodel submodelFromMap = DigitalNameplateSubmodel.createAsFacade(submodelMap);
assertEquals(DigitalNameplateSubmodel.SEMANTICID, submodelFromMap.getSemanticId());
assertEquals(manufacturerName, submodelFromMap.getManufacturerName());
assertEquals(designation, submodelFromMap.getManufacturerProductDesignation());
assertEquals(address, submodelFromMap.getAddress());
assertEquals(productFamily, submodelFromMap.getManufacturerProductFamily());
assertEquals(serialNumber, submodelFromMap.getSerialNumber());
assertEquals(yearsOfConstruction, submodelFromMap.getYearOfConstruction());
assertEquals(markings, submodelFromMap.getMarkings());
assertEquals(assetSpecificProperties, submodelFromMap.getAssetSpecificProperties());
assertEquals(DigitalNameplateSubmodel.SUBMODELID, submodelFromMap.getIdShort());
assertEquals(identifier, submodelFromMap.getIdentification());
}
@Test (expected = MetamodelConstructionException.class)
public void testCreateAsFacadeExceptionIdShort() {
submodelMap.remove(Referable.IDSHORT);
DigitalNameplateSubmodel.createAsFacade(submodelMap);
}
@Test (expected = MetamodelConstructionException.class)
public void testCreateAsFacadeExceptionIdentifier() {
submodelMap.remove(Identifiable.IDENTIFICATION);
DigitalNameplateSubmodel.createAsFacade(submodelMap);
}
@SuppressWarnings("unchecked")
@Test (expected = ResourceNotFoundException.class)
public void testCreateAsFacadeExceptionManufacturerName() {
List<ISubmodelElement> elements = (List<ISubmodelElement>)submodelMap.get(SubModel.SUBMODELELEMENT);
elements.remove(manufacturerName);
DigitalNameplateSubmodel.createAsFacade(submodelMap);
}
@SuppressWarnings("unchecked")
@Test (expected = ResourceNotFoundException.class)
public void testCreateAsFacadeExceptionZearsOfConstruction() {
List<ISubmodelElement> elements = (List<ISubmodelElement>)submodelMap.get(SubModel.SUBMODELELEMENT);
elements.remove(yearsOfConstruction);
DigitalNameplateSubmodel.createAsFacade(submodelMap);
}
@SuppressWarnings("unchecked")
@Test (expected = ResourceNotFoundException.class)
public void testCreateAsFacadeExceptionManufacturerProductDesignation() {
List<ISubmodelElement> elements = (List<ISubmodelElement>)submodelMap.get(SubModel.SUBMODELELEMENT);
elements.remove(designation);
DigitalNameplateSubmodel.createAsFacade(submodelMap);
}
@SuppressWarnings("unchecked")
@Test (expected = ResourceNotFoundException.class)
public void testCreateAsFacadeExceptionAddress() {
List<ISubmodelElement> elements = (List<ISubmodelElement>)submodelMap.get(SubModel.SUBMODELELEMENT);
elements.remove(address);
DigitalNameplateSubmodel.createAsFacade(submodelMap);
}
@SuppressWarnings("unchecked")
@Test (expected = ResourceNotFoundException.class)
public void testCreateAsFacadeExceptionManufacturerProductFamily() {
List<ISubmodelElement> elements = (List<ISubmodelElement>)submodelMap.get(SubModel.SUBMODELELEMENT);
elements.remove(productFamily);
DigitalNameplateSubmodel.createAsFacade(submodelMap);
}
}