diff --git a/ids-lib-documentation/IdsLib.IfcSchema/IfcDataTypeInformation.md b/ids-lib-documentation/IdsLib.IfcSchema/IfcDataTypeInformation.md index 736ebce..b3f207b 100644 --- a/ids-lib-documentation/IdsLib.IfcSchema/IfcDataTypeInformation.md +++ b/ids-lib-documentation/IdsLib.IfcSchema/IfcDataTypeInformation.md @@ -1,6 +1,6 @@ # IfcDataTypeInformation class -Metadata container for entities containing measures of an IfcSchema +Metadata container for entities containing measures of an IfcSchema. Access the list from [`AllDataTypes`](./SchemaInfo/AllDataTypes.md). ```csharp public class IfcDataTypeInformation diff --git a/ids-lib-documentation/ids-lib.md b/ids-lib-documentation/ids-lib.md index 81901d3..0a89996 100644 --- a/ids-lib-documentation/ids-lib.md +++ b/ids-lib-documentation/ids-lib.md @@ -39,7 +39,7 @@ | enum [FunctionalType](./IdsLib.IfcSchema/FunctionalType.md) | the IFC classes we present can be classified with regards to their potential role in the IfcRelDefinesByType relation. | | class [IfcAttributeInformation](./IdsLib.IfcSchema/IfcAttributeInformation.md) | Metadata container for attributes of entities in IfcSchema | | class [IfcClassInformation](./IdsLib.IfcSchema/IfcClassInformation.md) | Simplistic metadata container for entities of an IfcSchema | -| class [IfcDataTypeInformation](./IdsLib.IfcSchema/IfcDataTypeInformation.md) | Metadata container for entities containing measures of an IfcSchema | +| class [IfcDataTypeInformation](./IdsLib.IfcSchema/IfcDataTypeInformation.md) | Metadata container for entities containing measures of an IfcSchema. Access the list from [`AllDataTypes`](./IdsLib.IfcSchema/SchemaInfo/AllDataTypes.md). | | struct [IfcMeasureInformation](./IdsLib.IfcSchema/IfcMeasureInformation.md) | Metadata about measure conversion behaviours. | | class [IfcSchemaAttribute](./IdsLib.IfcSchema/IfcSchemaAttribute.md) | Metadata attribute to define if a value of [`IfcSchemaVersions`](./IdsLib.IfcSchema/IfcSchemaVersions.md) identifies a single version of the schema | | [Flags] enum [IfcSchemaVersions](./IdsLib.IfcSchema/IfcSchemaVersions.md) | Enumerations for the identification of multiple schema versions. | diff --git a/ids-lib.codegen/IfcSchema_PropertiesGenerator.cs b/ids-lib.codegen/IfcSchema_PropertiesGenerator.cs index ef2c4d5..b137b0e 100644 --- a/ids-lib.codegen/IfcSchema_PropertiesGenerator.cs +++ b/ids-lib.codegen/IfcSchema_PropertiesGenerator.cs @@ -13,7 +13,7 @@ public class IfcSchema_PropertiesGenerator { private class propSetTempInfo { - public string Name { get; set; } + public string Name { get; set; } = string.Empty; public IEnumerable? ApplicableClasses { get; set; } public IEnumerable? CsSourceOfProperties { get; set; } @@ -36,6 +36,8 @@ public static string Execute() propsets = GetPsets(f).OrderBy(x => x.Name).ToArray(); foreach (var item in propsets) { + if (item.ApplicableClasses is null) + continue; var cArr = NewStringArray(item.ApplicableClasses); if (item.CsSourceOfProperties is null) continue; @@ -54,8 +56,8 @@ private static IEnumerable GetPsets(FileInfo f) var psets = store.Instances.OfType(); foreach (var pset in psets) { - propSetTempInfo ret = new propSetTempInfo() { Name = pset.Name }; - var tmpClasses = pset.ApplicableEntity.Value.Value.ToString().Split(","); + propSetTempInfo ret = new propSetTempInfo() { Name = pset.Name ?? "" }; + var tmpClasses = (pset.ApplicableEntity!.Value.Value.ToString() ?? "").Split(","); ret.ApplicableClasses = tmpClasses.Select(x => RemovePredefinedType(x)); var props = new List(); foreach (var proptemp in pset.HasPropertyTemplates.OrderBy(x=>x.Name.ToString())) @@ -90,7 +92,7 @@ private static IEnumerable GetPsets(FileInfo f) props.Add($"new SingleValuePropertyType(\"{singleV.Name}\", \"IfcTimeMeasure\"){def}"); break; case IfcSimplePropertyTemplateTypeEnum.P_ENUMERATEDVALUE: - props.Add($"new EnumerationPropertyType(\"{singleV.Name}\", {NewStringArray(singleV.Enumerators.EnumerationValues.Select(x => x.Value.ToString()))} ){def}"); + props.Add($"new EnumerationPropertyType(\"{singleV.Name}\", {NewStringArray(singleV.Enumerators.EnumerationValues.Select(x => x.Value.ToString() ?? ""))} ){def}"); break; case IfcSimplePropertyTemplateTypeEnum.P_SINGLEVALUE: case IfcSimplePropertyTemplateTypeEnum.P_REFERENCEVALUE: diff --git a/ids-lib/IdsSchema/IdsNodes/IdsSpecification.cs b/ids-lib/IdsSchema/IdsNodes/IdsSpecification.cs index 3e19eb3..7513086 100644 --- a/ids-lib/IdsSchema/IdsNodes/IdsSpecification.cs +++ b/ids-lib/IdsSchema/IdsNodes/IdsSpecification.cs @@ -73,10 +73,10 @@ internal protected override Audit.Status PerformAudit(AuditStateInformation stat var totalFilters = IfcTypeConstraint.Intersect(aF, rF); if (IfcTypeConstraint.IsNotNullAndEmpty(totalFilters)) { - var appDesc = aF.ConcreteTypes.Count() > 5 + var appDesc = aF!.ConcreteTypes.Count() > 5 ? $"{aF.ConcreteTypes.Count()} types" : $"{string.Join(", ", aF.ConcreteTypes)}"; - var reqDesc = rF.ConcreteTypes.Count() > 5 + var reqDesc = rF!.ConcreteTypes.Count() > 5 ? $"{rF.ConcreteTypes.Count()} types" : $"{string.Join(", ", rF.ConcreteTypes)}"; ret |= IdsErrorMessages.Report201IncompatibleClauses(logger, this, schemaInfo, $"impossible match of types between applicability ({appDesc}) and requirements ({reqDesc})"); diff --git a/ids-lib/IfcSchema/IfcDataTypeInformation.cs b/ids-lib/IfcSchema/IfcDataTypeInformation.cs index a635539..eee01dc 100644 --- a/ids-lib/IfcSchema/IfcDataTypeInformation.cs +++ b/ids-lib/IfcSchema/IfcDataTypeInformation.cs @@ -4,7 +4,8 @@ namespace IdsLib.IfcSchema; /// -/// Metadata container for entities containing measures of an IfcSchema +/// Metadata container for entities containing measures of an IfcSchema. +/// Access the list from . /// [DebuggerDisplay("{IfcDataTypeClassName} ({ValidSchemaVersions})")] public class IfcDataTypeInformation diff --git a/ids-lib/LibraryInformation.cs b/ids-lib/LibraryInformation.cs index 0e6bd5d..ece29ed 100644 --- a/ids-lib/LibraryInformation.cs +++ b/ids-lib/LibraryInformation.cs @@ -26,5 +26,5 @@ public static class LibraryInformation /// /// Static field with hardcoded DLL version number. /// - public static string AssemblyVersion => "1.0.70"; + public static string AssemblyVersion => "1.0.71"; } diff --git a/ids-lib/ids-lib.csproj b/ids-lib/ids-lib.csproj index 5a3fdc0..b28ae25 100644 --- a/ids-lib/ids-lib.csproj +++ b/ids-lib/ids-lib.csproj @@ -20,7 +20,7 @@ First implementation. README.md - 1.0.70 + 1.0.71 $(AssemblyVersion) $(AssemblyVersion) true diff --git a/ids-tool.tests/IdsSchemaTests.cs b/ids-tool.tests/IdsSchemaTests.cs index 1755bfc..110bfa7 100644 --- a/ids-tool.tests/IdsSchemaTests.cs +++ b/ids-tool.tests/IdsSchemaTests.cs @@ -83,7 +83,7 @@ public void XsdTestSuiteSchemaIsAlignedWithIdsRepository() schemasAreIdentical.Should().BeTrue("testing schema and repository schema should be identical"); } - [SkippableTheory] + [Theory] [InlineData("http://standards.buildingsmart.org/IDS/0.9.6/ids.xsd")] [InlineData("http://standards.buildingsmart.org/IDS/0.9.7/ids.xsd")] [InlineData("https://www.w3.org/2001/03/xml.xsd")] @@ -100,10 +100,10 @@ public async void BuildingSmartWebServerShouldReturnSchemaCorrectly(string url) var c = new HttpClient(); var t = await c.GetAsync(url); - - var tp = t.Content.Headers.ContentType; - Skip.If(tp is null, "contentype is null"); - Skip.If(!acceptable.Contains(tp.ToString()), $"contentype is `{tp}` is not in the acceptable range."); + Assert.NotNull(t.Content.Headers.ContentType); + var receivedContentType = t.Content.Headers.ContentType.MediaType; + receivedContentType.Should().NotBeNull(); + receivedContentType.Should().BeOneOf(acceptable); } } } diff --git a/ids-tool.tests/TestingSuiteSelfTests.cs b/ids-tool.tests/TestingSuiteSelfTests.cs index 788bc89..980caf7 100644 --- a/ids-tool.tests/TestingSuiteSelfTests.cs +++ b/ids-tool.tests/TestingSuiteSelfTests.cs @@ -14,6 +14,14 @@ namespace idsTool.tests /// public class TestingSuiteSelfTests { + [Fact] + public void BackingTypesVariabilityTest() + { + var types = IdsLib.IfcSchema.SchemaInfo.AllDataTypes.Select(x=>x.BackingType).Distinct().ToList(); + var nullBacking = IdsLib.IfcSchema.SchemaInfo.AllDataTypes.Where(x => x.BackingType is null).ToList(); + types.Count.Should().Be(9); + } + [Fact] public void IdsRepositoryFileMethodsAreCoherent() { diff --git a/ids-tool/ids-tool.csproj b/ids-tool/ids-tool.csproj index c70ab77..cadb880 100644 --- a/ids-tool/ids-tool.csproj +++ b/ids-tool/ids-tool.csproj @@ -16,7 +16,7 @@ icon.png IDS, buildingSmart - 1.0.70 + 1.0.71 $(AssemblyVersion) $(AssemblyVersion) https://github.com/buildingSMART/IDS-Audit-tool.git