From d07c60400ebe23bf4df5ae6ed14a751744d60482 Mon Sep 17 00:00:00 2001 From: Quaternions <krakow20@gmail.com> Date: Sat, 12 Apr 2025 11:32:25 -0700 Subject: [PATCH] a --- validation/src/check.rs | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/validation/src/check.rs b/validation/src/check.rs index abc2349..bfbb9ad 100644 --- a/validation/src/check.rs +++ b/validation/src/check.rs @@ -554,6 +554,16 @@ impl<'a> std::fmt::Display for MapCheck<'a>{ if let Err(())=&self.spawn1{ writeln!(f,"Model has no Spawn1")?; } + if let SetDifferenceCheck(Err(context))=&self.teleport_counts{ + if !context.extra.is_empty(){ + // TODO: include original names of objects in hashmap value as HashSet<&str> + write!(f,"Extra Teleport with no matching Spawn: ")?; + write_comma_separated(f,context.extra.iter(),|f,(SpawnID(spawn_id),_count)| + write!(f,"Teleport{spawn_id}") + )?; + writeln!(f,"")?; + } + } if let DuplicateCheck(Err(DuplicateCheckContext(context)))=&self.spawn_counts{ write!(f,"Duplicate Spawn: ")?; write_comma_separated(f,context.iter(),|f,(SpawnID(spawn_id),count)| @@ -561,6 +571,24 @@ impl<'a> std::fmt::Display for MapCheck<'a>{ )?; writeln!(f,"")?; } + if let SetDifferenceCheck(Err(context))=&self.wormhole_in_counts{ + if !context.extra.is_empty(){ + write!(f,"WormholeIn with no matching WormholeOut: ")?; + write_comma_separated(f,context.extra.iter(),|f,(WormholeID(wormhole_id),_count)| + write!(f,"WormholeIn{wormhole_id}") + )?; + writeln!(f,"")?; + } + if !context.missing.is_empty(){ + // This counts WormholeIn objects, but + // flipped logic is easier to understand + write!(f,"WormholeOut with no matching WormholeIn: ")?; + write_comma_separated(f,context.missing.iter(),|f,WormholeID(wormhole_id)| + write!(f,"WormholeOut{wormhole_id}") + )?; + writeln!(f,"")?; + } + } if let DuplicateCheck(Err(DuplicateCheckContext(context)))=&self.wormhole_out_counts{ write!(f,"Duplicate WormholeOut: ")?; write_comma_separated(f,context.iter(),|f,(WormholeID(wormhole_id),count)|