Error if assertEqual's epsilon value is invalid (#4329)

Without this, you can get a funny error message, such as:

    assert failed because 42 != 42: number is not 42

I'm assuming an epsilon of zero is never useful because we're dealing
with floating point.
This commit is contained in:
Brian McKenna
2024-10-29 13:51:10 +11:00
committed by GitHub
parent 7103ded32a
commit c147b3bfa2

View File

@ -78,7 +78,12 @@ pub async fn assert_gt(_exec_state: &mut ExecState, args: Args) -> Result<KclVal
name = "assertEqual", name = "assertEqual",
}] }]
async fn inner_assert_equal(left: f64, right: f64, epsilon: f64, message: &str, args: &Args) -> Result<(), KclError> { async fn inner_assert_equal(left: f64, right: f64, epsilon: f64, message: &str, args: &Args) -> Result<(), KclError> {
if (right - left).abs() < epsilon { if epsilon <= 0.0 {
Err(KclError::Type(KclErrorDetails {
message: format!("assertEqual epsilon must be greater than zero"),
source_ranges: vec![args.source_range],
}))
} else if (right - left).abs() < epsilon {
Ok(()) Ok(())
} else { } else {
Err(KclError::Type(KclErrorDetails { Err(KclError::Type(KclErrorDetails {