blob: ed0014b8994c52f58e67ab0c4871d78a90866f27 [file] [log] [blame]
package org.eclipse.basyx.testsuite.regression.submodel.types.digitalnameplate.submodelelementcollections.address;
import static org.junit.Assert.assertEquals;
import java.util.ArrayList;
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.submodelelement.ISubmodelElement;
import org.eclipse.basyx.submodel.metamodel.map.qualifier.HasSemantics;
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.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.enums.PhoneType;
import org.eclipse.basyx.submodel.types.digitalnameplate.submodelelementcollections.address.Phone;
import org.eclipse.basyx.vab.exception.provider.ResourceNotFoundException;
import org.junit.Before;
import org.junit.Test;
/**
* Tests createAsFacade and isValid of {@link Phone} for their
* correctness
*
* @author haque
*
*/
public class TestPhone {
public static final String IDSHORT = "testPhoneId";
public static MultiLanguageProperty telephone = new MultiLanguageProperty(Phone.TELEPHONENUMBERID);
public static Property typeOfTelephone = new Property(Phone.TYPEOFTELEPHONEID, PropertyValueTypeDef.String);
private Map<String, Object> phoneMap = new HashMap<String, Object>();
@Before
public void buildPhone() {
telephone.setValue(new LangStrings(new LangString("DE", "0631123456")));
typeOfTelephone.setValue(PhoneType.HOME);
List<ISubmodelElement> elements = new ArrayList<ISubmodelElement>();
elements.add(telephone);
elements.add(typeOfTelephone);
phoneMap.put(Referable.IDSHORT, IDSHORT);
phoneMap.put(HasSemantics.SEMANTICID, Phone.SEMANTICID);
phoneMap.put(Property.VALUE, elements);
}
@Test
public void testCreateAsFacade() {
Phone phoneFromMap = Phone.createAsFacade(phoneMap);
assertEquals(Phone.SEMANTICID, phoneFromMap.getSemanticId());
assertEquals(telephone, phoneFromMap.getTelephoneNumber());
assertEquals(typeOfTelephone, phoneFromMap.getTypeOfTelephone());
assertEquals(IDSHORT, phoneFromMap.getIdShort());
}
@Test (expected = MetamodelConstructionException.class)
public void testCreateAsFacadeExceptionIdShort() {
phoneMap.remove(Referable.IDSHORT);
Phone.createAsFacade(phoneMap);
}
@Test (expected = ResourceNotFoundException.class)
public void testCreateAsFacadeExceptionTelephoneNumber() {
List<ISubmodelElement> newElements = new ArrayList<ISubmodelElement>();
newElements.add(typeOfTelephone);
phoneMap.put(Property.VALUE, newElements);
Phone.createAsFacade(phoneMap);
}
}