| 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); |
| } |
| } |