mirror of
https://github.com/storytold/cadcraft.git
synced 2026-10-24 10:56:51 -06:00
Reject doubled minus sign in parse_distance (#1707)
Found while testing crates/engine/src/units.rs:138-160 Co-authored-by: Claude Haiku 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Haiku 5.5
parent
6ee6e652fd
commit
9a32aa5613
@@ -142,6 +142,9 @@ pub fn parse_distance(s: &str) -> Option<f64> {
|
|||||||
Some(r) => (true, r.trim()),
|
Some(r) => (true, r.trim()),
|
||||||
None => (false, t),
|
None => (false, t),
|
||||||
};
|
};
|
||||||
|
if neg && t.starts_with(['-', '+']) {
|
||||||
|
return None;
|
||||||
|
}
|
||||||
let mut total = 0.0;
|
let mut total = 0.0;
|
||||||
let mut rest = t;
|
let mut rest = t;
|
||||||
let mut parsed = false;
|
let mut parsed = false;
|
||||||
@@ -430,6 +433,14 @@ mod tests {
|
|||||||
assert_eq!(parse_distance(""), None);
|
assert_eq!(parse_distance(""), None);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn parse_distance_rejects_doubled_minus() {
|
||||||
|
assert_eq!(parse_distance("--5"), None);
|
||||||
|
assert_eq!(parse_distance("- -3/4"), None);
|
||||||
|
assert_eq!(parse_distance("-5"), Some(-5.0));
|
||||||
|
assert_eq!(parse_distance("-3/4"), Some(-0.75));
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn parse_distance_needs_a_number() {
|
fn parse_distance_needs_a_number() {
|
||||||
assert_eq!(parse_distance("-"), None);
|
assert_eq!(parse_distance("-"), None);
|
||||||
|
|||||||
Reference in New Issue
Block a user