Establish OA/SA prototype baseline and first-release work

This commit is contained in:
2026-09-05 17:04:16 +03:00
commit 93ba83d321
109 changed files with 56512 additions and 0 deletions
@@ -0,0 +1,37 @@
use oa_core::{
validation::{Severity, validate},
*,
};
#[test]
fn sequence_gaps_name_occurrences_exchanges_and_endpoints() {
let mut p = Project::demo();
let first = p
.relations
.values()
.find(|r| r.kind() == RelationKind::Interaction)
.unwrap()
.clone();
let process = p
.elements
.values()
.find(|e| e.kind() == Kind::Process)
.unwrap()
.id;
let other = p.add(Kind::Activity, "Unrelated work", 0., 0.);
let reply = p.relate(
RelationKind::Interaction,
"Unrelated message",
other,
first.source(),
);
let p = execute_batch(&p, &[Command::AddStep(process, reply)]).unwrap();
let issue = validate(&p)
.into_iter()
.find(|i| i.code == "sequence_gap")
.unwrap();
assert_eq!(issue.severity, Severity::Warning);
assert_eq!(issue.element, Some(process));
assert!(issue.message.contains("steps 1 and 2"));
assert!(issue.message.contains("Distress signal"));
assert!(issue.message.contains("Unrelated message"));
}