use wasm4pm_compat::formats::FormatKind as Fmt;
use wasm4pm_compat::interop::SummaryShape as Sum;
use wasm4pm_compat::law::{PowlProjectionState as PPS, RelationLaw as RL};
#[test]
fn powl_projection_states_are_constructed() {
let all = [
PPS::Unknown,
PPS::ProcessTreeProjectable,
PPS::ExceedsProcessTree,
PPS::RefusedProjection,
];
fn known(p: PPS) -> bool {
match p {
PPS::Unknown
| PPS::ProcessTreeProjectable
| PPS::ExceedsProcessTree
| PPS::RefusedProjection => true,
}
}
assert!(all.iter().copied().all(known));
assert_eq!(all.len(), 4, "four POWL projection states");
}
#[test]
fn format_kinds_are_constructed() {
let all = [
Fmt::OcelJson,
Fmt::OcelXml,
Fmt::OcelSqlite,
Fmt::XesXml,
Fmt::BpmnXml,
Fmt::PetriPnml,
Fmt::PowlJson,
];
fn known(f: Fmt) -> bool {
match f {
Fmt::OcelJson
| Fmt::OcelXml
| Fmt::OcelSqlite
| Fmt::XesXml
| Fmt::BpmnXml
| Fmt::PetriPnml
| Fmt::PowlJson => true,
_ => false,
}
}
assert!(all.iter().copied().all(known));
assert_eq!(
all.len(),
7,
"seven currently-known import/export format kinds"
);
}
#[test]
fn relation_laws_are_constructed() {
let all = [RL::EventToObject, RL::ObjectToObject, RL::ObjectToEvent];
fn label(r: RL) -> &'static str {
match r {
RL::EventToObject => "e2o",
RL::ObjectToObject => "o2o",
RL::ObjectToEvent => "o2e",
}
}
let s: std::collections::BTreeSet<&str> = all.iter().copied().map(label).collect();
assert_eq!(s.len(), 3, "three OCEL relation directions");
}
#[test]
fn summary_shapes_are_constructed() {
let all = [
Sum::Counts,
Sum::TraceVariants,
Sum::ActivityDistribution,
Sum::TimingProfile,
Sum::ObjectTypeDistribution,
];
fn category(s: Sum) -> &'static str {
match s {
Sum::Counts => "aggregate",
Sum::TraceVariants | Sum::ActivityDistribution => "control-flow",
Sum::TimingProfile => "performance",
Sum::ObjectTypeDistribution => "object-centric",
_ => panic!("unclassified SummaryShape variant: {s:?}"),
}
}
let cats: std::collections::BTreeSet<&str> = all.iter().copied().map(category).collect();
assert_eq!(cats.len(), 4, "four summary projection categories");
let debugs: std::collections::BTreeSet<String> = all.iter().map(|s| format!("{s:?}")).collect();
assert_eq!(debugs.len(), 5, "five distinct pm4py summary shapes");
}