IDS Conformance Dashboard¶
How IDS engines answer the buildingSMART IDS 1.0 test cases, case by case.
The corpus is buildingSMART's own: 334 IDS files, each with the verdict it
expects in its name. pass- and fail- files pair an IDS with an IFC model
and ask whether the model satisfies the specification. invalid- files ask
whether the IDS document itself conforms; an engine with a document audit
must reject them. ifc-lite vendors the corpus unchanged in
packages/ids/src/__corpus__/buildingsmart-ids (CC BY-ND 4.0).
The dashboard runs each engine through a small adapter and records every verdict. It only reports what was run: an engine appears here when it can be installed from a public package registry under an open-source licence and run headless. Commercial tools are not included.
Reproduce¶
This rewrites ids-conformance.json (every case for
every engine, plus summaries) and the generated section below. An engine
installed outside this repository joins through a command adapter:
Adding an engine¶
An adapter answers one or both corpus questions for one IDS+IFC pair:
| Method | Input | Output |
|---|---|---|
validate |
the .ids and .ifc paths |
'pass' or 'fail': the verdict of the file's single specification |
audit |
the .ids path |
'valid' or 'invalid' |
A question the engine does not offer is n/a and never counted. A crash is
an error and counts as a disagreement. An adapter may translate engine
output into a verdict, but it must say how in its notes, which the report
prints next to the numbers.
Engines in other runtimes plug in without code through a JSON
--engine-config (see scripts/ids-conformance/lib/adapters/command.mjs):
{
"id": "my-engine",
"name": "My engine",
"version": "1.2.3",
"licence": "MIT",
"source": "https://example.org/my-engine",
"notes": ["validate: runs the engine CLI; spec status of the single specification"],
"validate": ["python3", "-I", "bridge.py", "{ids}", "{ifc}"],
"audit": ["my-engine", "audit", "{ids}"]
}
The command prints one JSON line, for example {"verdict": "fail"}, or
{"verdict": "unsupported", "reason": "..."} for a case it cannot answer.
Typical integrations, all through a command adapter:
- An open-source Python engine: a small bridge script that runs the
engine on
{ids}and{ifc}and prints{"verdict": "pass"}or{"verdict": "fail"}asvalidate. - An open-source JS engine: a Node script that loads the engine in its own process and prints the verdict the same way. Running it as a separate process keeps any browser shims it needs out of the other columns.
- The official buildingSMART IDS-Audit-tool (
ids-tool, .NET): anauditcommand whose wrapper maps the tool's result to{"verdict": "valid"}or{"verdict": "invalid"}, so theinvalid-cases get a second, authoritative column.
Corpus: buildingSMART IDS 1.0 test cases (vendored in packages/ids/src/corpus/buildingsmart-ids), 334 cases (CC BY-ND 4.0; https://github.com/buildingSMART/IDS).
Generated from ids-conformance.json by node scripts/ids-conformance/run.mjs; do not edit by hand.
| Engine | Version | Licence | Source |
|---|---|---|---|
| ifc-lite | @ifc-lite/ids 3.2.0 (workspace) | MPL-2.0 | packages/ids in this repository |
| ifc-lite (IDS 1.1 preview) | @ifc-lite/ids 3.2.0 (workspace) | MPL-2.0 | packages/ids in this repository |
Agreement with the corpus¶
Each cell is cases agreeing with the expected verdict out of cases the engine answered. n/a cases (a question the engine does not offer) are not counted; an error (the engine crashed or gave no verdict) counts as a disagreement.
| Facet (corpus folder) | ifc-lite | ifc-lite (IDS 1.1 preview) |
|---|---|---|
| attribute | 56/56 (100.0%) | 56/56 (100.0%) |
| classification | 27/27 (100.0%) | 27/27 (100.0%) |
| entity | 33/33 (100.0%) | 33/33 (100.0%) |
| ids | 12/12 (100.0%) | 12/12 (100.0%) |
| material | 29/29 (100.0%) | 29/29 (100.0%) |
| partof | 34/34 (100.0%) | 34/34 (100.0%) |
| property | 82/82 (100.0%) | 82/82 (100.0%) |
| restriction | 25/25 (100.0%) | 25/25 (100.0%) |
| tolerance | 36/36 (100.0%) | 36/36 (100.0%) |
all pass- cases |
187/187 (100.0%) | 187/187 (100.0%) |
all fail- cases |
120/120 (100.0%) | 120/120 (100.0%) |
all invalid- cases |
27/27 (100.0%) | 27/27 (100.0%) |
| all cases | 334/334 (100.0%) | 334/334 (100.0%) |
How each column is produced¶
- ifc-lite
- validate: parseIDS + validateIDS over @ifc-lite/parser; the verdict is the status of the file's single specification.
- audit: auditIDSDocument; a document with at least one error-severity issue is invalid.
- ifc-lite (IDS 1.1 preview)
- validate: parseIDS + validateIDS over @ifc-lite/parser; the verdict is the status of the file's single specification.
- audit: auditIDSDocument; a document with at least one error-severity issue is invalid.
- IDS 1.1 preview flag on parse, validate and audit (#418 tolerance candidate applies to simple values).
Disagreements¶
ifc-lite: 0¶
None.
ifc-lite (IDS 1.1 preview): 0¶
None.
All 334 cases
| Case | Expected | ifc-lite | ifc-lite (IDS 1.1 preview) |
|---|---|---|---|
attribute/fail-a_prohibited_facet_returns_the_opposite_of_a_required_facet |
fail | fail | fail |
attribute/fail-an_optional_attribute_fails_if_empty |
fail | fail | fail |
attribute/fail-attributes_are_not_inherited_by_the_occurrence |
fail | fail | fail |
attribute/fail-attributes_should_check_strings_case_sensitively_2_2 |
fail | fail | fail |
attribute/fail-attributes_with_a_logical_unknown_always_fail |
fail | fail | fail |
attribute/fail-attributes_with_an_empty_list_always_fail |
fail | fail | fail |
attribute/fail-attributes_with_an_empty_set_always_fail |
fail | fail | fail |
attribute/fail-attributes_with_empty_strings_always_fail |
fail | fail | fail |
attribute/fail-attributes_with_null_values_always_fail |
fail | fail | fail |
attribute/fail-booleans_must_be_specified_as_lowercase_strings_1_3 |
fail | fail | fail |
attribute/fail-dates_are_treated_as_strings_1_2 |
fail | fail | fail |
attribute/fail-durations_are_treated_as_strings_2_2 |
fail | fail | fail |
attribute/fail-ids_does_not_handle_string_truncation_such_as_for_identifiers |
fail | fail | fail |
attribute/fail-numeric_values_are_checked_using_type_casting_4_4 |
fail | fail | fail |
attribute/fail-value_restrictions_may_be_used_3_3 |
fail | fail | fail |
attribute/invalid-booleans_must_be_specified_as_lowercase_strings_2_3 |
invalid | invalid | invalid |
attribute/invalid-derived_attributes_cannot_be_checked_and_always_fail |
invalid | invalid | invalid |
attribute/invalid-integers_cannot_be_expressed_as_floating_point_numbers_2_2 |
invalid | invalid | invalid |
attribute/invalid-invalid_attribute_names_always_fail |
invalid | invalid | invalid |
attribute/invalid-inverse_attributes_cannot_be_checked_and_always_fail |
invalid | invalid | invalid |
attribute/invalid-only_specifically_formatted_numbers_are_allowed_1_4 |
invalid | invalid | invalid |
attribute/invalid-only_specifically_formatted_numbers_are_allowed_2_4 |
invalid | invalid | invalid |
attribute/invalid-specifying_a_float_when_the_value_is_an_integer_is_invalid |
invalid | invalid | invalid |
attribute/invalid-value_checks_always_fail_for_lists |
invalid | invalid | invalid |
attribute/invalid-value_checks_always_fail_for_objects |
invalid | invalid | invalid |
attribute/invalid-value_checks_always_fail_for_selects |
invalid | invalid | invalid |
attribute/pass-a_required_facet_checks_all_parameters_as_normal |
pass | pass | pass |
attribute/pass-an_optional_attribute_passes_if_null |
pass | pass | pass |
attribute/pass-an_optional_attribute_passes_if_specified |
pass | pass | pass |
attribute/pass-attributes_referencing_an_object_should_pass |
pass | pass | pass |
attribute/pass-attributes_should_check_strings_case_sensitively_1_2 |
pass | pass | pass |
attribute/pass-attributes_with_a_boolean_false_should_pass |
pass | pass | pass |
attribute/pass-attributes_with_a_boolean_true_should_pass |
pass | pass | pass |
attribute/pass-attributes_with_a_select_referencing_a_primitive_should_pass |
pass | pass | pass |
attribute/pass-attributes_with_a_select_referencing_an_object_should_pass |
pass | pass | pass |
attribute/pass-attributes_with_a_string_value_should_pass |
pass | pass | pass |
attribute/pass-attributes_with_a_zero_duration_should_pass |
pass | pass | pass |
attribute/pass-attributes_with_a_zero_number_have_meaning_and_should_pass |
pass | pass | pass |
attribute/pass-booleans_must_be_specified_as_lowercase_strings_3_3 |
pass | pass | pass |
attribute/pass-dates_are_treated_as_strings_2_2 |
pass | pass | pass |
attribute/pass-durations_are_treated_as_strings_1_2 |
pass | pass | pass |
attribute/pass-globalids_are_treated_as_strings_and_not_expanded |
pass | pass | pass |
attribute/pass-integers_follow_the_same_rules_as_numbers |
pass | pass | pass |
attribute/pass-name_restrictions_will_match_any_result_1_3 |
pass | pass | pass |
attribute/pass-name_restrictions_will_match_any_result_2_3 |
pass | pass | pass |
attribute/pass-name_restrictions_will_match_any_result_3_3 |
pass | pass | pass |
attribute/pass-non_ascii_characters_are_treated_without_encoding |
pass | pass | pass |
attribute/pass-numeric_values_are_checked_using_type_casting_1_4 |
pass | pass | pass |
attribute/pass-numeric_values_are_checked_using_type_casting_2_4 |
pass | pass | pass |
attribute/pass-numeric_values_are_checked_using_type_casting_3_4 |
pass | pass | pass |
attribute/pass-only_specifically_formatted_numbers_are_allowed_3_4 |
pass | pass | pass |
attribute/pass-only_specifically_formatted_numbers_are_allowed_4_4 |
pass | pass | pass |
attribute/pass-strict_numeric_checking_may_be_done_with_a_bounds_restriction |
pass | pass | pass |
attribute/pass-typecast_checking_may_also_occur_within_enumeration_restrictions |
pass | pass | pass |
attribute/pass-value_restrictions_may_be_used_1_3 |
pass | pass | pass |
attribute/pass-value_restrictions_may_be_used_2_3 |
pass | pass | pass |
classification/fail-a_classification_facet_with_no_data_matches_any_classification_1_2 |
fail | fail | fail |
classification/fail-a_prohibited_classification_reference_returns_the_opposite_of_a_required_facet |
fail | fail | fail |
classification/fail-a_prohibited_facet_returns_the_opposite_of_a_required_facet |
fail | fail | fail |
classification/fail-a_required_classification_system_fails_if_no_match |
fail | fail | fail |
classification/fail-an_optional_classification_value_fails_if_no_match |
fail | fail | fail |
classification/fail-both_system_and_value_must_match__all__not_any__if_specified_2_2 |
fail | fail | fail |
classification/fail-occurrences_override_the_type_classification_per_system_2_3 |
fail | fail | fail |
classification/fail-restrictions_can_be_used_for_systems_1_2 |
fail | fail | fail |
classification/fail-restrictions_can_be_used_for_values_3_3 |
fail | fail | fail |
classification/fail-systems_should_match_exactly_2_5 |
fail | fail | fail |
classification/pass-a_classification_facet_with_no_data_matches_any_classification_2_2 |
pass | pass | pass |
classification/pass-a_required_facet_checks_all_parameters_as_normal |
pass | pass | pass |
classification/pass-an_optional_classification_value_passes_if_null |
pass | pass | pass |
classification/pass-an_optional_classification_value_passes_if_specified |
pass | pass | pass |
classification/pass-both_system_and_value_must_match__all__not_any__if_specified_1_2 |
pass | pass | pass |
classification/pass-non_rooted_resources_that_have_external_classification_references_should_also_pass |
pass | pass | pass |
classification/pass-occurrences_override_the_type_classification_per_system_1_3 |
pass | pass | pass |
classification/pass-occurrences_override_the_type_classification_per_system_3_3 |
pass | pass | pass |
classification/pass-restrictions_can_be_used_for_systems_2_2 |
pass | pass | pass |
classification/pass-restrictions_can_be_used_for_values_1_3 |
pass | pass | pass |
classification/pass-restrictions_can_be_used_for_values_2_3 |
pass | pass | pass |
classification/pass-systems_should_match_exactly_1_5 |
pass | pass | pass |
classification/pass-systems_should_match_exactly_3_5 |
pass | pass | pass |
classification/pass-systems_should_match_exactly_4_5 |
pass | pass | pass |
classification/pass-systems_should_match_exactly_5_5 |
pass | pass | pass |
classification/pass-values_match_subreferences_if_full_classifications_are_used__e_g__ef_25_10_should_match_ef_25_10_25__ef_25_10_30__etc_ |
pass | pass | pass |
classification/pass-values_should_match_exactly_if_lightweight_classifications_are_used |
pass | pass | pass |
entity/fail-a_null_predefined_type_should_always_fail_a_specified_predefined_types |
fail | fail | fail |
entity/fail-a_predefined_type_from_an_enumeration_must_be_uppercase |
fail | fail | fail |
entity/fail-an_entity_not_matching_a_specified_predefined_type_will_fail |
fail | fail | fail |
entity/fail-in_ifc2x3_a_user_defined_airterminal_predefined_type_resolves_via_the_type_mapping_table_2_2 |
fail | fail | fail |
entity/fail-in_ifc2x3_an_airterminal_can_be_checked_by_name_via_the_type_mapping_table_2_2 |
fail | fail | fail |
entity/fail-in_ifc2x3_an_airterminal_predefined_type_resolves_via_the_type_mapping_table_2_2 |
fail | fail | fail |
entity/fail-in_ifc2x3_there_must_be_an_airterminal_per_the_type_mapping_table_2_2 |
fail | fail | fail |
entity/fail-restrictions_can_be_specified_for_the_predefined_type_3_3 |
fail | fail | fail |
entity/fail-user_defined_types_are_checked_case_sensitively |
fail | fail | fail |
entity/invalid-an_entity_not_matching_the_specified_class_should_fail |
invalid | invalid | invalid |
entity/invalid-entities_can_be_specified_as_a_xsd_regex_pattern_1_2 |
invalid | invalid | invalid |
entity/invalid-entities_can_be_specified_as_an_enumeration_3_3 |
invalid | invalid | invalid |
entity/invalid-entities_must_be_specified_as_uppercase_strings |
invalid | invalid | invalid |
entity/invalid-invalid_entities_always_fail |
invalid | invalid | invalid |
entity/invalid-subclasses_are_not_considered_as_matching |
invalid | invalid | invalid |
entity/pass-a_matching_entity_should_pass |
pass | pass | pass |
entity/pass-a_matching_predefined_type_should_pass |
pass | pass | pass |
entity/pass-a_predefined_type_may_specify_a_user_defined_element_type |
pass | pass | pass |
entity/pass-a_predefined_type_may_specify_a_user_defined_object_type |
pass | pass | pass |
entity/pass-a_predefined_type_may_specify_a_user_defined_process_type |
pass | pass | pass |
entity/pass-an_matching_entity_should_pass_regardless_of_predefined_type |
pass | pass | pass |
entity/pass-entities_can_be_specified_as_a_xsd_regex_pattern_2_2 |
pass | pass | pass |
entity/pass-entities_can_be_specified_as_an_enumeration_1_3 |
pass | pass | pass |
entity/pass-entities_can_be_specified_as_an_enumeration_2_3 |
pass | pass | pass |
entity/pass-in_ifc2x3_a_user_defined_airterminal_predefined_type_resolves_via_the_type_mapping_table_1_2 |
pass | pass | pass |
entity/pass-in_ifc2x3_an_airterminal_can_be_checked_by_name_via_the_type_mapping_table_1_2 |
pass | pass | pass |
entity/pass-in_ifc2x3_an_airterminal_predefined_type_resolves_via_the_type_mapping_table_1_2 |
pass | pass | pass |
entity/pass-in_ifc2x3_there_must_be_an_airterminal_per_the_type_mapping_table_1_2 |
pass | pass | pass |
entity/pass-inherited_predefined_types_should_pass |
pass | pass | pass |
entity/pass-overridden_predefined_types_should_pass |
pass | pass | pass |
entity/pass-restrictions_can_be_specified_for_the_predefined_type_1_3 |
pass | pass | pass |
entity/pass-restrictions_can_be_specified_for_the_predefined_type_2_3 |
pass | pass | pass |
entity/pass-userdefined_predefined_types_may_be_specified |
pass | pass | pass |
ids/fail-a_minimal_ids_can_check_a_minimal_ifc_1_2 |
fail | fail | fail |
ids/fail-a_specification_passes_only_if_all_requirements_pass_1_2 |
fail | fail | fail |
ids/fail-prohibited_specifications_fails_if_the_applicability_matches |
fail | fail | fail |
ids/fail-required_specifications_need_at_least_one_applicable_entity_2_2 |
fail | fail | fail |
ids/invalid-prohibited_specifications_invalid_if_requirements_are_specified |
invalid | invalid | invalid |
ids/pass-a_minimal_ids_can_check_a_minimal_ifc_2_2 |
pass | pass | pass |
ids/pass-a_specification_passes_only_if_all_requirements_pass_2_2 |
pass | pass | pass |
ids/pass-optional_specifications_may_still_pass_if_nothing_is_applicable |
pass | pass | pass |
ids/pass-prohibited_specifications_passes_if_the_applicability_does_not_matches |
pass | pass | pass |
ids/pass-required_specifications_need_at_least_one_applicable_entity_1_2 |
pass | pass | pass |
ids/pass-specification_optionality_and_facet_optionality_can_be_combined |
pass | pass | pass |
ids/pass-specification_version_is_purely_metadata_and_does_not_impact_pass_or_fail_result |
pass | pass | pass |
material/fail-a_constituent_set_with_no_data_will_fail_a_value_check |
fail | fail | fail |
material/fail-a_material_list_with_no_data_will_fail_a_value_check |
fail | fail | fail |
material/fail-a_prohibited_facet_returns_the_opposite_of_a_required_facet |
fail | fail | fail |
material/fail-an_optional_material_fails_if_no_value_matches |
fail | fail | fail |
material/fail-elements_without_a_material_always_fail |
fail | fail | fail |
material/fail-material_with_no_data_will_fail_a_value_check |
fail | fail | fail |
material/pass-a_layer_set_name_will_pass_a_value_check |
pass | pass | pass |
material/pass-a_material_category_may_pass_the_value_check |
pass | pass | pass |
material/pass-a_material_name_may_pass_the_value_check |
pass | pass | pass |
material/pass-a_required_facet_checks_all_parameters_as_normal |
pass | pass | pass |
material/pass-an_optional_material_passes_if_null |
pass | pass | pass |
material/pass-an_optional_material_passes_if_specified |
pass | pass | pass |
material/pass-any_constituent_category_in_a_constituent_set_will_pass_a_value_check |
pass | pass | pass |
material/pass-any_constituent_name_in_a_constituent_set_will_pass_a_value_check |
pass | pass | pass |
material/pass-any_layer_category_in_a_layer_set_will_pass_a_value_check |
pass | pass | pass |
material/pass-any_layer_name_in_a_layer_set_will_pass_a_value_check |
pass | pass | pass |
material/pass-any_material_category_in_a_constituent_set_will_pass_a_value_check |
pass | pass | pass |
material/pass-any_material_category_in_a_layer_set_will_pass_a_value_check |
pass | pass | pass |
material/pass-any_material_category_in_a_list_will_pass_a_value_check |
pass | pass | pass |
material/pass-any_material_category_in_a_profile_set_will_pass_a_value_check |
pass | pass | pass |
material/pass-any_material_name_in_a_constituent_set_will_pass_a_value_check |
pass | pass | pass |
material/pass-any_material_name_in_a_layer_set_will_pass_a_value_check |
pass | pass | pass |
material/pass-any_material_name_in_a_list_will_pass_a_value_check |
pass | pass | pass |
material/pass-any_material_name_in_a_profile_set_will_pass_a_value_check |
pass | pass | pass |
material/pass-any_profile_category_in_a_profile_set_will_pass_a_value_check |
pass | pass | pass |
material/pass-any_profile_name_in_a_profile_set_will_pass_a_value_check |
pass | pass | pass |
material/pass-elements_with_any_material_will_pass_an_empty_material_facet |
pass | pass | pass |
material/pass-occurrences_can_inherit_materials_from_their_types |
pass | pass | pass |
material/pass-occurrences_can_override_materials_from_their_types |
pass | pass | pass |
partof/fail-a_group_entity_must_match_exactly_1_2 |
fail | fail | fail |
partof/fail-a_non_aggregated_element_fails_an_aggregate_relationship |
fail | fail | fail |
partof/fail-a_non_grouped_element_fails_a_group_relationship |
fail | fail | fail |
partof/fail-a_prohibited_facet_returns_the_opposite_of_a_required_facet |
fail | fail | fail |
partof/fail-an_aggregate_may_specify_the_entity_of_the_whole_2_2 |
fail | fail | fail |
partof/fail-an_aggregate_may_specify_the_predefined_type_of_the_whole_2_2 |
fail | fail | fail |
partof/fail-any_contained_element_passes_a_containment_relationship_1_2 |
fail | fail | fail |
partof/fail-any_nested_whole_fails_a_nest_relationship |
fail | fail | fail |
partof/fail-the_aggregated_whole_fails_an_aggregate_relationship |
fail | fail | fail |
partof/fail-the_container_entity_must_match_exactly_1_2 |
fail | fail | fail |
partof/fail-the_container_itself_always_fails |
fail | fail | fail |
partof/fail-the_container_must_be_related_using_specified_relation_2_2 |
fail | fail | fail |
partof/fail-the_container_predefined_type_must_match_exactly_1_2 |
fail | fail | fail |
partof/fail-the_containment_can_be_indirect_2_2 |
fail | fail | fail |
partof/fail-the_nest_entity_must_match_exactly_1_2 |
fail | fail | fail |
partof/fail-the_nest_predefined_type_must_match_exactly_1_2 |
fail | fail | fail |
partof/invalid-a_group_predefined_type_must_match_exactly_1_2 |
invalid | invalid | invalid |
partof/pass-a_group_entity_must_match_exactly_2_2 |
pass | pass | pass |
partof/pass-a_group_predefined_type_must_match_exactly_2_2 |
pass | pass | pass |
partof/pass-a_grouped_element_passes_a_group_relationship |
pass | pass | pass |
partof/pass-a_required_facet_checks_all_parameters_as_normal |
pass | pass | pass |
partof/pass-an_aggregate_entity_may_pass_any_ancestral_whole_passes |
pass | pass | pass |
partof/pass-an_aggregate_may_specify_the_entity_of_the_whole_1_2 |
pass | pass | pass |
partof/pass-an_aggregate_may_specify_the_predefined_type_of_the_whole_1_2 |
pass | pass | pass |
partof/pass-any_contained_element_passes_a_containment_relationship_2_2 |
pass | pass | pass |
partof/pass-any_nested_part_passes_a_nest_relationship |
pass | pass | pass |
partof/pass-nesting_may_be_indirect |
pass | pass | pass |
partof/pass-the_aggregated_part_passes_an_aggregate_relationship |
pass | pass | pass |
partof/pass-the_container_entity_must_match_exactly_2_2 |
pass | pass | pass |
partof/pass-the_container_must_be_related_using_specified_relation_1_2 |
pass | pass | pass |
partof/pass-the_container_predefined_type_must_match_exactly_2_2 |
pass | pass | pass |
partof/pass-the_containment_can_be_indirect_1_2 |
pass | pass | pass |
partof/pass-the_nest_entity_must_match_exactly_2_2 |
pass | pass | pass |
partof/pass-the_nest_predefined_type_must_match_exactly_2_2 |
pass | pass | pass |
property/fail-a_logical_unknown_is_considered_false_and_will_not_pass |
fail | fail | fail |
property/fail-a_prohibited_facet_returns_the_opposite_of_a_required_facet |
fail | fail | fail |
property/fail-all_matching_properties_must_satisfy_requirements_3_3 |
fail | fail | fail |
property/fail-all_matching_property_sets_must_satisfy_requirements_2_3 |
fail | fail | fail |
property/fail-an_empty_string_is_considered_false_and_will_not_pass |
fail | fail | fail |
property/fail-any_matching_value_in_a_bounded_property_will_pass_4_4 |
fail | fail | fail |
property/fail-any_matching_value_in_a_list_property_will_pass_3_3 |
fail | fail | fail |
property/fail-any_matching_value_in_a_table_property_will_pass_3_3 |
fail | fail | fail |
property/fail-booleans_must_be_specified_as_lowercase_strings_1_3 |
fail | fail | fail |
property/fail-complex_properties_are_not_supported_1_2 |
fail | fail | fail |
property/fail-complex_properties_are_not_supported_2_2 |
fail | fail | fail |
property/fail-dates_are_treated_as_strings_2_2 |
fail | fail | fail |
property/fail-durations_are_treated_as_strings_1_2 |
fail | fail | fail |
property/fail-elements_with_a_matching_pset_but_no_property_also_fail |
fail | fail | fail |
property/fail-elements_with_no_properties_always_fail |
fail | fail | fail |
property/fail-ids_does_not_handle_string_truncation_such_as_for_identifiers |
fail | fail | fail |
property/fail-if_multiple_properties_are_matched__all_values_must_satisfy_requirements_2_2 |
fail | fail | fail |
property/fail-material_properties_that_are_absent_fail_under_ifc2x3 |
fail | fail | fail |
property/fail-material_properties_that_are_absent_fail_under_ifc4 |
fail | fail | fail |
property/fail-measures_are_used_to_specify_an_ifc_data_type_1_2 |
fail | fail | fail |
property/fail-no_matching_value_in_an_enumerated_property_will_fail_3_3 |
fail | fail | fail |
property/fail-predefined_properties_are_supported_but_discouraged_2_2 |
fail | fail | fail |
property/fail-project_properties_that_are_absent_fail_under_ifc2x3_via_ifcobject |
fail | fail | fail |
property/fail-project_properties_that_are_absent_fail_under_ifc4_via_ifccontext |
fail | fail | fail |
property/fail-properties_can_be_associated_to_relevant_object_types |
fail | fail | fail |
property/fail-properties_can_be_overriden_by_an_occurrence_2_2 |
fail | fail | fail |
property/fail-properties_with_a_null_value_fail |
fail | fail | fail |
property/fail-quantities_must_also_match_the_appropriate_measure |
fail | fail | fail |
property/fail-reference_properties_are_treated_as_objects_and_not_supported |
fail | fail | fail |
property/fail-specifying_a_value_fails_against_different_values |
fail | fail | fail |
property/fail-specifying_a_value_performs_a_case_sensitive_match_2_2 |
fail | fail | fail |
property/fail-unit_conversions_shall_take_place_to_ids_nominated_standard_units_1_2 |
fail | fail | fail |
property/invalid-booleans_must_be_specified_as_lowercase_strings_3_3 |
invalid | invalid | invalid |
property/invalid-integer_values_are_checked_using_type_casting_4_4 |
invalid | invalid | invalid |
property/invalid-integer_values_cannot_be_stored_with_decimal_2_4 |
invalid | invalid | invalid |
property/invalid-integer_values_cannot_be_stored_with_decimal_3_4 |
invalid | invalid | invalid |
property/invalid-only_specifically_formatted_numbers_are_allowed_1_4 |
invalid | invalid | invalid |
property/invalid-only_specifically_formatted_numbers_are_allowed_2_4 |
invalid | invalid | invalid |
property/pass-a_name_check_will_match_any_property_with_any_string_value |
pass | pass | pass |
property/pass-a_name_check_will_match_any_quantity_with_any_value |
pass | pass | pass |
property/pass-a_number_specified_as_a_string_is_treated_as_a_string |
pass | pass | pass |
property/pass-a_property_set_to_false_is_still_considered_a_value_and_will_pass_a_name_check |
pass | pass | pass |
property/pass-a_property_set_to_true_will_pass_a_name_check |
pass | pass | pass |
property/pass-a_required_facet_checks_all_parameters_as_normal |
pass | pass | pass |
property/pass-a_zero_duration_will_pass |
pass | pass | pass |
property/pass-all_matching_properties_must_satisfy_requirements_1_3 |
pass | pass | pass |
property/pass-all_matching_properties_must_satisfy_requirements_2_3 |
pass | pass | pass |
property/pass-all_matching_property_sets_must_satisfy_requirements_1_3 |
pass | pass | pass |
property/pass-all_matching_property_sets_must_satisfy_requirements_3_3 |
pass | pass | pass |
property/pass-an_optional_facet_always_passes_regardless_of_outcome_1_2 |
pass | pass | pass |
property/pass-an_optional_facet_always_passes_regardless_of_outcome_2_2 |
pass | pass | pass |
property/pass-any_matching_value_in_a_bounded_property_will_pass_1_4 |
pass | pass | pass |
property/pass-any_matching_value_in_a_bounded_property_will_pass_2_4 |
pass | pass | pass |
property/pass-any_matching_value_in_a_bounded_property_will_pass_3_4 |
pass | pass | pass |
property/pass-any_matching_value_in_a_list_property_will_pass_1_3 |
pass | pass | pass |
property/pass-any_matching_value_in_a_list_property_will_pass_2_3 |
pass | pass | pass |
property/pass-any_matching_value_in_a_table_property_will_pass_1_3 |
pass | pass | pass |
property/pass-any_matching_value_in_a_table_property_will_pass_2_3 |
pass | pass | pass |
property/pass-any_matching_value_in_an_enumerated_property_will_pass_1_3 |
pass | pass | pass |
property/pass-any_matching_value_in_an_enumerated_property_will_pass_2_3 |
pass | pass | pass |
property/pass-booleans_must_be_specified_as_lowercase_strings_2_3 |
pass | pass | pass |
property/pass-dates_are_treated_as_strings_1_2 |
pass | pass | pass |
property/pass-durations_are_treated_as_strings_2_2 |
pass | pass | pass |
property/pass-if_multiple_properties_are_matched__all_values_must_satisfy_requirements_1_2 |
pass | pass | pass |
property/pass-integer_values_are_checked_using_type_casting_1_4 |
pass | pass | pass |
property/pass-material_properties_are_supported_under_ifc2x3_via_extendedmaterialproperties |
pass | pass | pass |
property/pass-material_properties_are_supported_under_ifc4_via_ifcmaterialproperties |
pass | pass | pass |
property/pass-measures_are_used_to_specify_an_ifc_data_type_2_2 |
pass | pass | pass |
property/pass-non_ascii_characters_are_treated_without_encoding |
pass | pass | pass |
property/pass-only_specifically_formatted_numbers_are_allowed_3_4 |
pass | pass | pass |
property/pass-only_specifically_formatted_numbers_are_allowed_4_4 |
pass | pass | pass |
property/pass-predefined_properties_are_supported_but_discouraged_1_2 |
pass | pass | pass |
property/pass-project_properties_are_supported_under_ifc2x3_via_ifcobject |
pass | pass | pass |
property/pass-project_properties_are_supported_under_ifc4_via_ifccontext |
pass | pass | pass |
property/pass-properties_can_be_inherited_from_the_type_1_2 |
pass | pass | pass |
property/pass-properties_can_be_inherited_from_the_type_2_2 |
pass | pass | pass |
property/pass-properties_can_be_overriden_by_an_occurrence_1_2 |
pass | pass | pass |
property/pass-real_values_are_checked_using_type_casting_1_3 |
pass | pass | pass |
property/pass-real_values_are_checked_using_type_casting_2_3 |
pass | pass | pass |
property/pass-real_values_are_checked_using_type_casting_3_3 |
pass | pass | pass |
property/pass-specifying_a_value_performs_a_case_sensitive_match_1_2 |
pass | pass | pass |
property/pass-unit_conversions_shall_take_place_to_ids_nominated_standard_units_2_2 |
pass | pass | pass |
restriction/fail-a_bound_can_be_exclusive_1_3 |
fail | fail | fail |
restriction/fail-a_bound_can_be_exclusive_3_3 |
fail | fail | fail |
restriction/fail-a_bound_can_be_inclusive_4_4 |
fail | fail | fail |
restriction/fail-an_enumeration_matches_case_sensitively_3_3 |
fail | fail | fail |
restriction/fail-an_enumeration_matches_case_sensitively_4_3 |
fail | fail | fail |
restriction/fail-length_checks_can_be_used_1_2 |
fail | fail | fail |
restriction/fail-max_and_min_length_checks_can_be_used_1_3 |
fail | fail | fail |
restriction/fail-max_and_min_length_checks_can_be_used_4_3 |
fail | fail | fail |
restriction/fail-regex_patterns_can_be_used_3_3 |
fail | fail | fail |
restriction/fail-regex_patterns_work_in_OR_3_3 |
fail | fail | fail |
restriction/invalid-patterns_always_fail_on_any_number |
invalid | invalid | invalid |
restriction/invalid-patterns_only_work_on_strings_and_nothing_else |
invalid | invalid | invalid |
restriction/pass-a_bound_can_be_exclusive_2_3 |
pass | pass | pass |
restriction/pass-a_bound_can_be_inclusive_1_4 |
pass | pass | pass |
restriction/pass-a_bound_can_be_inclusive_2_4 |
pass | pass | pass |
restriction/pass-a_bound_can_be_inclusive_3_4 |
pass | pass | pass |
restriction/pass-an_enumeration_matches_case_sensitively_1_3 |
pass | pass | pass |
restriction/pass-an_enumeration_matches_case_sensitively_2_3 |
pass | pass | pass |
restriction/pass-length_checks_can_be_used_2_2 |
pass | pass | pass |
restriction/pass-max_and_min_length_checks_can_be_used_2_3 |
pass | pass | pass |
restriction/pass-max_and_min_length_checks_can_be_used_3_3 |
pass | pass | pass |
restriction/pass-regex_patterns_can_be_used_1_3 |
pass | pass | pass |
restriction/pass-regex_patterns_can_be_used_2_3 |
pass | pass | pass |
restriction/pass-regex_patterns_work_in_OR_1_3 |
pass | pass | pass |
restriction/pass-regex_patterns_work_in_OR_2_3 |
pass | pass | pass |
tolerance/fail-comparison_tolerance_for_floating_point_negative_high_number_lower_bound |
fail | fail | fail |
tolerance/fail-comparison_tolerance_for_floating_point_negative_high_number_upper_bound |
fail | fail | fail |
tolerance/fail-comparison_tolerance_for_floating_point_negative_low_number_lower_bound |
fail | fail | fail |
tolerance/fail-comparison_tolerance_for_floating_point_negative_low_number_upper_bound |
fail | fail | fail |
tolerance/fail-comparison_tolerance_for_floating_point_negative_one_lower_bound |
fail | fail | fail |
tolerance/fail-comparison_tolerance_for_floating_point_negative_one_upper_bound |
fail | fail | fail |
tolerance/fail-comparison_tolerance_for_floating_point_one_lower_bound |
fail | fail | fail |
tolerance/fail-comparison_tolerance_for_floating_point_one_upper_bound |
fail | fail | fail |
tolerance/fail-comparison_tolerance_for_floating_point_positive_high_number_lower_bound |
fail | fail | fail |
tolerance/fail-comparison_tolerance_for_floating_point_positive_high_number_upper_bound |
fail | fail | fail |
tolerance/fail-comparison_tolerance_for_floating_point_positive_low_number_lower_bound |
fail | fail | fail |
tolerance/fail-comparison_tolerance_for_floating_point_positive_low_number_upper_bound |
fail | fail | fail |
tolerance/fail-comparison_tolerance_for_floating_point_range_greater_than_zero_exclusive |
fail | fail | fail |
tolerance/fail-comparison_tolerance_for_floating_point_range_greater_than_zero_inclusive |
fail | fail | fail |
tolerance/fail-comparison_tolerance_for_floating_point_range_lower_than_zero_exclusive |
fail | fail | fail |
tolerance/fail-comparison_tolerance_for_floating_point_range_lower_than_zero_inclusive |
fail | fail | fail |
tolerance/fail-comparison_tolerance_for_floating_point_zero_lower_bound |
fail | fail | fail |
tolerance/fail-comparison_tolerance_for_floating_point_zero_upper_bound |
fail | fail | fail |
tolerance/pass-comparison_tolerance_for_floating_point_negative_high_number_lower_bound |
pass | pass | pass |
tolerance/pass-comparison_tolerance_for_floating_point_negative_high_number_upper_bound |
pass | pass | pass |
tolerance/pass-comparison_tolerance_for_floating_point_negative_low_number_lower_bound |
pass | pass | pass |
tolerance/pass-comparison_tolerance_for_floating_point_negative_low_number_upper_bound |
pass | pass | pass |
tolerance/pass-comparison_tolerance_for_floating_point_negative_one_lower_bound |
pass | pass | pass |
tolerance/pass-comparison_tolerance_for_floating_point_negative_one_upper_bound |
pass | pass | pass |
tolerance/pass-comparison_tolerance_for_floating_point_one_lower_bound |
pass | pass | pass |
tolerance/pass-comparison_tolerance_for_floating_point_one_upper_bound |
pass | pass | pass |
tolerance/pass-comparison_tolerance_for_floating_point_positive_high_number_lower_bound |
pass | pass | pass |
tolerance/pass-comparison_tolerance_for_floating_point_positive_high_number_upper_bound |
pass | pass | pass |
tolerance/pass-comparison_tolerance_for_floating_point_positive_low_number_lower_bound |
pass | pass | pass |
tolerance/pass-comparison_tolerance_for_floating_point_positive_low_number_upper_bound |
pass | pass | pass |
tolerance/pass-comparison_tolerance_for_floating_point_range_greater_than_zero_exclusive |
pass | pass | pass |
tolerance/pass-comparison_tolerance_for_floating_point_range_greater_than_zero_inclusive |
pass | pass | pass |
tolerance/pass-comparison_tolerance_for_floating_point_range_lower_than_zero_exclusive |
pass | pass | pass |
tolerance/pass-comparison_tolerance_for_floating_point_range_lower_than_zero_inclusive |
pass | pass | pass |
tolerance/pass-comparison_tolerance_for_floating_point_zero_lower_bound |
pass | pass | pass |
tolerance/pass-comparison_tolerance_for_floating_point_zero_upper_bound |
pass | pass | pass |