mod cardinality;
mod reference;
mod required;
mod unique;
pub use cardinality::aggregate_shape;
pub(crate) use reference::expected_references;
pub use reference::{dangling_references, wrong_kind_references};
pub use required::required_attributes;
pub use unique::duplicate_global_ids;
use ifc_model::Model;
use ifc_schema::Schema;
use crate::report::Report;
use crate::where_rule::Budget;
pub fn check(model: &Model, schema: &Schema, budget: Budget, report: &mut Report) {
dangling_references(model, report);
wrong_kind_references(model, schema, report);
required_attributes(model, schema, report);
aggregate_shape(model, schema, report);
if report.findings().len() >= budget.max_findings {
report.mark_truncated();
}
}