package ca.uhn.fhir.model;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import org.hl7.fhir.dstu2016may.model.Appointment;
import org.hl7.fhir.dstu2016may.model.CodeableConcept;
import org.hl7.fhir.dstu2016may.model.Element;
import org.hl7.fhir.dstu2016may.model.Enumerations;
import org.hl7.fhir.dstu2016may.model.HumanName;
import org.hl7.fhir.dstu2016may.model.Patient;
import org.hl7.fhir.dstu2016may.model.Practitioner;
import org.hl7.fhir.dstu2016may.model.Practitioner.PractitionerPractitionerRoleComponent;
import org.hl7.fhir.instance.model.api.IBaseElement;
import org.junit.AfterClass;
import org.junit.Ignore;
import org.junit.Test;
import ca.uhn.fhir.context.BaseRuntimeDeclaredChildDefinition;
import ca.uhn.fhir.context.FhirContext;
import ca.uhn.fhir.context.RuntimeResourceDefinition;
import ca.uhn.fhir.util.FhirTerser;
import ca.uhn.fhir.util.TestUtil;
public class ModelDstu2_1Test {
private static FhirContext ourCtx = FhirContext.forDstu2_1();
@Test
public void testElementHasInterface() {
assertTrue(IBaseElement.class.isAssignableFrom(Element.class));
}
/**
* See #320
*/
@Test
public void testDontUseBoundCodeForExampleBinding() {
Practitioner p = new Practitioner();
PractitionerPractitionerRoleComponent role = p.addPractitionerRole();
CodeableConcept roleField = role.getRole();
assertEquals(CodeableConcept.class, roleField.getClass());
}
@AfterClass
public static void afterClassClearContext() {
TestUtil.clearAllStaticFieldsForUnitTest();
}
/**
* See #304
*/
@SuppressWarnings({ "rawtypes", "unchecked" })
@Test
public void testPopulateWrongGenericType() {
Patient p = new Patient();
List names = Arrays.asList("name");
List existingNames = p.getName();
existingNames.addAll(names);
try {
ourCtx.newXmlParser().encodeResourceToString(p);
} catch (ClassCastException e) {
assertEquals("Found instance of class java.lang.String - Did you set a field value to the incorrect type? Expected org.hl7.fhir.instance.model.api.IBase", e.getMessage());
}
}
// private static final org.slf4j.Logger ourLog = org.slf4j.LoggerFactory.getLogger(ModelDstu2_1Test.class);
/**
* See #325
*/
@Test
@Ignore
public void testEqualsDeep() throws Exception {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
Date date = dateFormat.parse("19920925");
FhirContext context = FhirContext.forDstu2_1();
Patient patient1 = new Patient();
patient1.setBirthDate(date)
.setGender(Enumerations.AdministrativeGender.MALE)
.addName().setUse(HumanName.NameUse.OFFICIAL).addGiven("first").addGiven("second").addFamily("family");
Patient patient2 = context.newJsonParser().parseResource(Patient.class,
context.newJsonParser().encodeResourceToString(patient1));
assertTrue(patient1.equalsDeep(patient2));
assertTrue(patient1.equalsShallow(patient2));
Patient patient3 = new Patient();
patient3.setBirthDate(date)
.setGender(Enumerations.AdministrativeGender.MALE)
.addName().setUse(HumanName.NameUse.OFFICIAL).addGiven("first").addGiven("second").addFamily("family");
assertTrue(patient1.equalsDeep(patient3));
assertTrue(patient1.equalsShallow(patient3));
Patient patient4 = new Patient();
patient4.setBirthDate(date)
.setGender(Enumerations.AdministrativeGender.MALE)
.addName().setUse(HumanName.NameUse.OFFICIAL).addGiven("first").addGiven("second").addFamily("family2");
assertTrue(patient1.equalsShallow(patient4));
assertFalse(patient1.equalsDeep(patient4));
Patient patient5 = new Patient();
patient5.setBirthDate(date)
.setGender(Enumerations.AdministrativeGender.FEMALE)
.addName().setUse(HumanName.NameUse.OFFICIAL).addGiven("first").addGiven("second").addFamily("family2");
assertFalse(patient1.equalsShallow(patient5));
assertFalse(patient1.equalsDeep(patient5));
}
}