diff --git a/nautilus_core/common/src/testing.rs b/nautilus_core/common/src/testing.rs index 048a8c6834ad..dc108d1f0528 100644 --- a/nautilus_core/common/src/testing.rs +++ b/nautilus_core/common/src/testing.rs @@ -20,8 +20,6 @@ use std::{ /// Repeatedly evaluates a condition with a delay until it becomes true or a timeout occurs. /// -/// # Arguments -/// /// * `condition` - A closure that represents the condition to be met. This closure should return `true` /// when the condition is met and `false` otherwise. /// * `timeout` - The maximum amount of time to wait for the condition to be met. If this duration is diff --git a/nautilus_core/indicators/src/testing.rs b/nautilus_core/indicators/src/testing.rs new file mode 100644 index 000000000000..aee9ab4cf33c --- /dev/null +++ b/nautilus_core/indicators/src/testing.rs @@ -0,0 +1,36 @@ +// ------------------------------------------------------------------------------------------------- +// Copyright (C) 2015-2024 Nautech Systems Pty Ltd. All rights reserved. +// https://nautechsystems.io +// +// Licensed under the GNU Lesser General Public License Version 3.0 (the "License"); +// You may not use this file except in compliance with the License. +// You may obtain a copy of the License at https://www.gnu.org/licenses/lgpl-3.0.en.html +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// ------------------------------------------------------------------------------------------------- + +/// Checks if two floating-point numbers are approximately equal within the +/// margin of floating-point precision. +/// +/// * `a` - The first floating-point number. +/// * `b` - The second floating-point number. +/// +/// # Returns +/// +/// Returns `true` if the absolute difference between `a` and `b` is less than +/// `f64::EPSILON`, indicating that they are approximately equal. +/// +/// # Example +/// +/// ``` +/// let a = 0.1 + 0.2; +/// let b = 0.3; +/// assert!(approx_equal(a, b)); +/// ``` +#[must_use] pub fn approx_equal(a: f64, b: f64) -> bool { + (a - b).abs() < f64::EPSILON +}