Reject surveyor bearing angles outside 0-90 degrees (#2024)

Found while testing crates/engine/src/units.rs:279-294 (bearing, via parse_dms 297-317)

Co-authored-by: Claude Haiku 5.5 <noreply@anthropic.com>
This commit is contained in:
NetterSilver
2026-10-24 01:52:11 -04:00
committed by GitHub
co-authored by Claude Haiku 5.5
parent cff2eb7262
commit 0fc8e5241c
2 changed files with 14 additions and 0 deletions
+3
View File
@@ -302,6 +302,9 @@ fn bearing(t: &str) -> Option<f64> {
None => (rest.strip_suffix('w')?, false),
};
let a = parse_dms(ang_s.trim())?;
if !(0.0..=90.0).contains(&a) {
return None;
}
let deg = match (north, east) {
(true, true) => 90.0 - a,
(true, false) => 90.0 + a,
+11
View File
@@ -0,0 +1,11 @@
use cadcraft_engine::units::parse_angle;
#[test]
fn bearing_rejects_out_of_range_angles() {
for s in ["n100e", "n-45e", "n91e", "s-1w", "n-0.5e"] {
assert_eq!(parse_angle(s), None, "{s}");
}
for s in ["n0e", "n90e", "s45w"] {
assert!(parse_angle(s).is_some(), "{s}");
}
}