class WithinMatcher
defm match(expected, actual) [delta, num] = expected self.result = abs(num - actual) return self.result <= delta end defm failure_message_for_match(expected, actual) [actual_str, delta_str, num_str, result_str] = self.numeric_string_values(expected, actual) return "expected “#{actual_str}” to be within +/- “#{delta_str}” of “#{num_str}”, delta was “#{result_str}”" end defm failure_message_for_mismatch(expected, actual) [actual_str, delta_str, num_str, result_str] = self.numeric_string_values(expected, actual) return "expected “#{actual_str}” to not be within +/- “#{delta_str}” of “#{num_str}”, delta was “#{result_str}”" end def numeric_string_values(expected, actual) [delta, num] = expected actual_str = printf("%f", actual) delta_str = printf("%f", delta) num_str = printf("%f", num) result_str = printf('%f', self.result) return [actual_str, delta_str, num_str, result_str] end
end