Testing Basics
Tolerance Check
Floating-point tests often compare values within a small tolerance.
Compare with tolerance
tolerance_check.swift
Replay: real traced execution (multi-file project)
let actual = 0.333
let expected = 1.0 / 3.0
let tolerance = 0.01
let difference = abs(actual - expected)
let passed = difference <= tolerance
let message = passed ? "within tolerance" : "outside tolerance"
print(message)
let actual = 0.330
let expected = 1.0 / 3.0
let tolerance = 0.01
let difference = abs(actual - expected)
let passed = difference <= tolerance
let message = passed ? "within tolerance" : "outside tolerance"
print(message)
let actual = 0.350
let expected = 1.0 / 3.0
let tolerance = 0.01
let difference = abs(actual - expected)
let passed = difference <= tolerance
let message = passed ? "within tolerance" : "outside tolerance"
print(message)
actual ← 0.333, expected ← 0.3333333333333333, tolerance ← 0.01
1let actual→ 0.333 = 0.333 //@actual=0.330, 0.3502let expected→ 0.3333333333333333 = 1.0 / 3.03let tolerance→ 0.01 = 0.014let difference→ 0.0003333333333332966 = abs(actual0.333 - expected0.3333333333333333)5let passed→ true = difference0.0003333333333332966 <= tolerance0.016let message→ within tolerance = passedtrue ? "within tolerance" : "outside tolerance"78print(messagewithin tolerance)outputwithin tolerance
actual ← 0.33, expected ← 0.3333333333333333, tolerance ← 0.01
1let actual→ 0.33 = 0.3302let expected→ 0.3333333333333333 = 1.0 / 3.03let tolerance→ 0.01 = 0.014let difference→ 0.0033333333333332993 = abs(actual0.33 - expected0.3333333333333333)5let passed→ true = difference0.0033333333333332993 <= tolerance0.016let message→ within tolerance = passedtrue ? "within tolerance" : "outside tolerance"78print(messagewithin tolerance)outputwithin tolerance
actual ← 0.35, expected ← 0.3333333333333333, tolerance ← 0.01
1let actual→ 0.35 = 0.3502let expected→ 0.3333333333333333 = 1.0 / 3.03let tolerance→ 0.01 = 0.014let difference→ 0.016666666666666663 = abs(actual0.35 - expected0.3333333333333333)5let passed→ false = difference0.016666666666666663 <= tolerance0.016let message→ outside tolerance = passedfalse ? "within tolerance" : "outside tolerance"78print(messageoutside tolerance)outputoutside tolerance
tolerance
A tolerance check allows a tiny difference between the actual and expected values.