blob: 1d4ad2ec8e4e1b25c97c55ed46f40c54d0babf35 [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.submodelelementcollections.address.Address;
import org.eclipse.basyx.submodel.types.digitalnameplate.submodelelementcollections.address.Email;
import org.eclipse.basyx.submodel.types.digitalnameplate.submodelelementcollections.address.Fax;
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 Address} for their
* correctness
*
* @author haque
*
*/
public class TestAddress {
public static final String IDSHORT = "testAddressId";
public static MultiLanguageProperty department = new MultiLanguageProperty(Address.DEPARTMENTID);
public static MultiLanguageProperty street = new MultiLanguageProperty(Address.STREETID);
public static MultiLanguageProperty zipCode = new MultiLanguageProperty(Address.ZIPCODEID);
public static MultiLanguageProperty poBox = new MultiLanguageProperty(Address.POBOXID);
public static MultiLanguageProperty zipPoBox = new MultiLanguageProperty(Address.ZIPCODEOFPOBOXID);
public static MultiLanguageProperty cityTown = new MultiLanguageProperty(Address.CITYTOWNID);
public static MultiLanguageProperty stateCounty = new MultiLanguageProperty(Address.STATECOUNTYID);
public static MultiLanguageProperty nationalCode = new MultiLanguageProperty(Address.NATIONALCODEID);
public static MultiLanguageProperty vatNumber = new MultiLanguageProperty(Address.VATNUMBERID);
public static MultiLanguageProperty addressRemarks = new MultiLanguageProperty(Address.ADDRESSREMARKSID);
public static Property additLink = new Property(Address.ADDRESSOFADDITIONALLINKID, PropertyValueTypeDef.String);
public static Phone phone1 = new Phone("Phone01", new LangString("DE", "123456789"));
public static Phone phone2 = new Phone("Phone02", new LangString("US", "123456711"));
public static Fax fax1 = new Fax("Fax01", new LangString("DE", "123456789"));
public static Fax fax2 = new Fax("Fax02", new LangString("DE", "123456711"));
public static Email email1 = new Email("Email01", new Property(Email.EMAILADDRESSID, "abc@test.com"));
public static Email email2 = new Email("Email02", new Property(Email.EMAILADDRESSID, "abcd@test.com"));
private Map<String, Object> addressMap = new HashMap<String, Object>();
@Before
public void buildFax() {
department.setValue(new LangStrings(new LangString("DE", "Dept Test")));
street.setValue(new LangStrings(new LangString("DE", "musterstraße 1")));
zipCode.setValue(new LangStrings(new LangString("DE", "12345")));
poBox.setValue(new LangStrings(new LangString("DE", "PE 1234")));
zipPoBox.setValue(new LangStrings(new LangString("DE", "12345")));
cityTown.setValue(new LangStrings(new LangString("DE", "MusterStadt")));
stateCounty.setValue(new LangStrings(new LangString("DE", "RLP")));
nationalCode.setValue(new LangStrings(new LangString("DE", "DE")));
vatNumber.setValue(new LangStrings(new LangString("DE", "123456")));
addressRemarks.setValue(new LangStrings(new LangString("DE", "test remarks")));
additLink.setValue("test.com");
List<ISubmodelElement> elements = new ArrayList<ISubmodelElement>();
elements.add(department);
elements.add(street);
elements.add(zipCode);
elements.add(poBox);
elements.add(zipPoBox);
elements.add(cityTown);
elements.add(stateCounty);
elements.add(nationalCode);
elements.add(vatNumber);
elements.add(addressRemarks);
elements.add(additLink);
elements.add(phone1);
elements.add(phone2);
elements.add(fax1);
elements.add(fax2);
elements.add(email1);
elements.add(email2);
addressMap.put(Referable.IDSHORT, IDSHORT);
addressMap.put(HasSemantics.SEMANTICID, Address.SEMANTICID);
addressMap.put(Property.VALUE, elements);
}
@Test
public void testCreateAsFacade() {
Address addressFromMap = Address.createAsFacade(addressMap);
assertEquals(Address.SEMANTICID, addressFromMap.getSemanticId());
assertEquals(IDSHORT, addressFromMap.getIdShort());
assertEquals(department, addressFromMap.getDepartment());
assertEquals(street, addressFromMap.getStreet());
assertEquals(poBox, addressFromMap.getPOBox());
assertEquals(zipPoBox, addressFromMap.getZipCodeOfPOBox());
assertEquals(cityTown, addressFromMap.getCityTown());
assertEquals(stateCounty, addressFromMap.getStateCounty());
assertEquals(nationalCode, addressFromMap.getNationalCode());
assertEquals(zipCode, addressFromMap.getZipCode());
assertEquals(vatNumber, addressFromMap.getVatNumber());
assertEquals(addressRemarks, addressFromMap.getAddressRemarks());
assertEquals(additLink, addressFromMap.getAddressOfAdditionalLink());
List<Phone> phones = new ArrayList<Phone>();
phones.add(phone2);
phones.add(phone1);
List<Fax> faxes = new ArrayList<Fax>();
faxes.add(fax1);
faxes.add(fax2);
List<Email> emails = new ArrayList<Email>();
emails.add(email2);
emails.add(email1);
assertEquals(phones, addressFromMap.getPhone());
assertEquals(faxes, addressFromMap.getFax());
assertEquals(emails, addressFromMap.getEmail());
}
@Test (expected = MetamodelConstructionException.class)
public void testCreateAsFacadeExceptionIdShort() {
addressMap.remove(Referable.IDSHORT);
Address.createAsFacade(addressMap);
}
@SuppressWarnings("unchecked")
@Test (expected = ResourceNotFoundException.class)
public void testCreateAsFacadeExceptionStreet() {
List<ISubmodelElement> elements = (List<ISubmodelElement>)addressMap.get(Property.VALUE);
elements.remove(street);
Address.createAsFacade(addressMap);
}
@SuppressWarnings("unchecked")
@Test (expected = ResourceNotFoundException.class)
public void testCreateAsFacadeExceptionZipCode() {
List<ISubmodelElement> elements = (List<ISubmodelElement>)addressMap.get(Property.VALUE);
elements.remove(zipCode);
Address.createAsFacade(addressMap);
}
@SuppressWarnings("unchecked")
@Test (expected = ResourceNotFoundException.class)
public void testCreateAsFacadeExceptionCityTown() {
List<ISubmodelElement> elements = (List<ISubmodelElement>)addressMap.get(Property.VALUE);
elements.remove(cityTown);
Address.createAsFacade(addressMap);
}
@SuppressWarnings("unchecked")
@Test (expected = ResourceNotFoundException.class)
public void testCreateAsFacadeExceptionNationalCode() {
List<ISubmodelElement> elements = (List<ISubmodelElement>)addressMap.get(Property.VALUE);
elements.remove(nationalCode);
Address.createAsFacade(addressMap);
}
}