public void TestPrimitiveDataTypeMapping() { Assert.IsTrue(ClassMapping.TryCreate(typeof(Base64Binary), out var mapping)); Assert.AreEqual("base64Binary", mapping.Name); Assert.IsTrue(mapping.HasPrimitiveValueMember); Assert.AreEqual(3, mapping.PropertyMappings.Count); // id, extension, fhir_comments & value var valueProp = mapping.PrimitiveValueProperty; Assert.IsNotNull(valueProp); Assert.AreEqual("value", valueProp.Name); Assert.IsFalse(valueProp.IsCollection); // don't see byte[] as a collection of byte in FHIR Assert.IsTrue(valueProp.RepresentsValueElement); Assert.IsTrue(ClassMapping.TryCreate(typeof(Code <SomeEnum>), out mapping)); Assert.AreEqual("codeOfT<Hl7.Fhir.Tests.Introspection.SomeEnum>", mapping.Name); Assert.IsTrue(mapping.HasPrimitiveValueMember); Assert.AreEqual(3, mapping.PropertyMappings.Count); // id, extension, fhir_comments & value valueProp = mapping.PrimitiveValueProperty; Assert.IsNotNull(valueProp); Assert.IsFalse(valueProp.IsCollection); Assert.IsTrue(valueProp.RepresentsValueElement); Assert.AreEqual(typeof(SomeEnum), valueProp.ImplementingType); Assert.IsTrue(ClassMapping.TryCreate(typeof(FhirUri), out mapping)); Assert.AreEqual("uri", mapping.Name); Assert.IsTrue(mapping.HasPrimitiveValueMember); Assert.AreEqual(3, mapping.PropertyMappings.Count); // id, extension, fhir_comments & value valueProp = mapping.PrimitiveValueProperty; Assert.IsNotNull(valueProp); Assert.IsFalse(valueProp.IsCollection); Assert.IsTrue(valueProp.RepresentsValueElement); Assert.AreEqual(typeof(string), valueProp.ImplementingType); }
public void TestPropsWithRedirect() { Assert.IsTrue(ClassMapping.TryCreate(typeof(TypeWithCodeOfT), out var mapping)); var propMapping = mapping.FindMappedElementByName("type1"); Assert.AreEqual(typeof(Code <SomeEnum>), propMapping.ImplementingType); Assert.AreEqual(typeof(FhirString), propMapping.FhirType.Single()); }
public void TestVersionSpecificMapping() { Assert.IsTrue(ClassMapping.TryCreate(typeof(Meta), out var mapping, Specification.FhirRelease.DSTU1)); Assert.IsNull(mapping.FindMappedElementByName("source")); var profile = mapping.FindMappedElementByName("profile"); Assert.IsNotNull(profile); Assert.AreEqual(typeof(FhirUri), profile.FhirType.Single()); Assert.IsTrue(ClassMapping.TryCreate(typeof(Meta), out mapping, Specification.FhirRelease.R4)); Assert.IsNotNull(mapping.FindMappedElementByName("source")); profile = mapping.FindMappedElementByName("profile"); Assert.IsNotNull(profile); Assert.AreEqual(typeof(Canonical), profile.FhirType.Single()); }
public void TestResourceMappingCreation() { Assert.IsTrue(ClassMapping.TryCreate(typeof(Way), out var mapping)); Assert.IsTrue(mapping.IsResource); Assert.AreEqual("Way", mapping.Name); Assert.AreEqual(typeof(Way), mapping.NativeType); Assert.IsTrue(ClassMapping.TryCreate(typeof(Way2), out mapping)); Assert.IsTrue(mapping.IsResource); Assert.AreEqual("Way2", mapping.Name); Assert.AreEqual(typeof(Way2), mapping.NativeType); Assert.IsFalse(ClassMapping.TryCreate(typeof(Way2), out _, Specification.FhirRelease.DSTU1)); Assert.IsTrue(ClassMapping.TryCreate(typeof(Way2), out _, Specification.FhirRelease.DSTU2)); Assert.IsTrue(ClassMapping.TryCreate(typeof(Way2), out _, Specification.FhirRelease.STU3)); }
public void TestResourceMappingCreation() { Assert.IsTrue(ClassMapping.TryCreate(typeof(Way), out var mapping)); Assert.IsTrue(mapping.IsResource); Assert.AreEqual("Way", mapping.Name); Assert.AreEqual(typeof(Way), mapping.NativeType); Assert.IsTrue(ClassMapping.TryCreate(typeof(Way2), out mapping)); Assert.IsTrue(mapping.IsResource); Assert.AreEqual("Way2", mapping.Name); Assert.AreEqual(typeof(Way2), mapping.NativeType); Assert.IsFalse(ClassMapping.TryCreate(typeof(Way2), out _, "1.0.0")); Assert.IsTrue(ClassMapping.TryCreate(typeof(Way2), out _, "2.0.0")); Assert.IsTrue(ClassMapping.TryCreate(typeof(Way2), out _, "3.0.0")); }
public void TestDatatypeMappingCreation() { Assert.IsTrue(ClassMapping.TryCreate(typeof(AnimalName), out var mapping, "10.0.0")); Assert.IsFalse(mapping.IsResource); Assert.AreEqual("AnimalName", mapping.Name); Assert.AreEqual(typeof(AnimalName), mapping.NativeType); Assert.IsTrue(ClassMapping.TryCreate(typeof(NewAnimalName), out mapping)); Assert.IsFalse(mapping.IsResource); Assert.AreEqual("AnimalName", mapping.Name); Assert.AreEqual(typeof(NewAnimalName), mapping.NativeType); Assert.IsFalse(ClassMapping.TryCreate(typeof(ComplexNumber), out mapping, "1.0.0")); Assert.IsTrue(ClassMapping.TryCreate(typeof(ComplexNumber), out mapping, "5.0.0")); Assert.IsFalse(mapping.IsResource); Assert.AreEqual("Complex", mapping.Name); Assert.AreEqual(typeof(ComplexNumber), mapping.NativeType); }
public void TestPerformanceOfMapping() { // just a random list of POCO types available in common var typesToTest = new Type[] { typeof(BackboneElement), typeof(BackboneType), typeof(Base64Binary), typeof(Canonical), typeof(Element), typeof(FhirString), typeof(Extension), typeof(Resource), typeof(Meta), typeof(XHtml) }; var sw = new Stopwatch(); sw.Start(); for (int i = 0; i < 1000; i++) { foreach (var testee in typesToTest) { createMapping(testee); } } sw.Stop(); Console.WriteLine($"No props: {sw.ElapsedMilliseconds}"); sw.Restart(); for (int i = 0; i < 1000; i++) { foreach (var testee in typesToTest) { createMapping(testee, touchProps: true); } } sw.Stop(); Console.WriteLine($"With props: {sw.ElapsedMilliseconds}"); int createMapping(Type t, bool touchProps = false) { ClassMapping.TryCreate(t, out var mapping); return(touchProps ? mapping.PropertyMappings.Count : -1); } }