Skip to content

Commit 91c9a2e

Browse files
Rework tests in terms of eqAbsolute
1 parent 119cf59 commit 91c9a2e

File tree

1 file changed

+36
-40
lines changed

1 file changed

+36
-40
lines changed

test/Test/Main.purs

Lines changed: 36 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,9 @@ module Test.Main where
33
import Prelude
44

55
import Data.Maybe (Maybe(..), fromMaybe)
6-
import Data.Number ((%), abs, acos, asin, atan, atan2, ceil, cos, exp, floor,
7-
fromString, infinity, isFinite, isNaN, ln10, ln2, log10e, log2e, nan, pi, pow,
8-
round, sign, sin, sqrt, sqrt1_2, sqrt2, tan, tau, trunc)
6+
import Data.Number ((%), abs, acos, asin, atan, atan2, ceil, cos, exp, floor, fromString, infinity, isFinite, isNaN, ln10, ln2, log10e, log2e, nan, pi, pow, round, sign, sin, sqrt, sqrt1_2, sqrt2, tan, tau, trunc)
97
import Data.Number (log) as Num
10-
import Data.Number.Approximate (Fraction(..), Tolerance(..), eqRelative, eqAbsolute, (≅), (≇))
8+
import Data.Number.Approximate (Fraction(..), Tolerance(..), eqAbsolute, eqRelative, (≅), (≇))
119
import Data.Number.Format (precision, fixed, exponential, toStringWith, toString)
1210
import Effect (Effect)
1311
import Effect.Console (log)
@@ -291,102 +289,103 @@ numbersTestCode = do
291289

292290
numericsTestCode :: Effect Unit
293291
numericsTestCode = do
292+
let assertApproxEqual = \x y -> assert (eqAbsolute (Tolerance 1e-12) x y)
294293
let pi_4 = pi / 4.0
295294
let pi_2 = pi / 2.0
296295
let neg_pi = -pi
297296

298297
log "Data.Number.sin"
299298
log " sin 0.0 = 0.0"
300-
sin 0.0 `assertNearlyEqual` 0.0
299+
sin 0.0 `assertApproxEqual` 0.0
301300

302301
log " sin (pi / 4.0) = sqrt1_2"
303-
sin pi_4 `assertNearlyEqual` sqrt1_2
302+
sin pi_4 `assertApproxEqual` sqrt1_2
304303

305304
log " sin (pi / 2.0) = 1.0"
306-
sin pi_2 `assertNearlyEqual` 1.0
305+
sin pi_2 `assertApproxEqual` 1.0
307306

308307
log " sin pi = 0.0"
309-
sin pi `assertNearlyEqual` 0.0
308+
sin pi `assertApproxEqual` 0.0
310309

311310
log " sin tau = 0.0"
312-
sin tau `assertNearlyEqual` 0.0
311+
sin tau `assertApproxEqual` 0.0
313312

314313
log "Data.Number.cos"
315314
log " cos 0.0 = 1.0"
316-
cos 0.0 `assertNearlyEqual` 1.0
315+
cos 0.0 `assertApproxEqual` 1.0
317316

318317
log " cos (pi / 4.0) = sqrt1_2"
319-
cos pi_4 `assertNearlyEqual` sqrt1_2
318+
cos pi_4 `assertApproxEqual` sqrt1_2
320319

321320
log " cos (pi / 2.0) = 0.0"
322-
cos pi_2 `assertNearlyEqual` 0.0
321+
cos pi_2 `assertApproxEqual` 0.0
323322

324323
log " cos pi = -1.0"
325-
cos pi `assertNearlyEqual` -1.0
324+
cos pi `assertApproxEqual` -1.0
326325

327326
log " cos tau = 1.0"
328-
cos tau `assertNearlyEqual` 1.0
327+
cos tau `assertApproxEqual` 1.0
329328

330329
log "Data.Number.tan"
331330
log " tan 0.0 = 0.0"
332-
tan 0.0 `assertNearlyEqual` 0.0
331+
tan 0.0 `assertApproxEqual` 0.0
333332

334333
log " tan (pi / 4.0) = 1.0"
335-
tan pi_4 `assertNearlyEqual` 1.0
334+
tan pi_4 `assertApproxEqual` 1.0
336335

337336
log " tan pi = 0.0"
338-
tan pi `assertNearlyEqual` 0.0
337+
tan pi `assertApproxEqual` 0.0
339338

340339
log " tan tau = 0.0"
341-
tan tau `assertNearlyEqual` 0.0
340+
tan tau `assertApproxEqual` 0.0
342341

343342
log "Data.Number.asin"
344343
log " asin (sin 0.0) = 0.0"
345-
asin (sin 0.0) `assertNearlyEqual` 0.0
344+
asin (sin 0.0) `assertApproxEqual` 0.0
346345

347346
log " asin (sin pi / 4.0) = pi / 4.0"
348-
asin (sin pi_4) `assertNearlyEqual` pi_4
347+
asin (sin pi_4) `assertApproxEqual` pi_4
349348

350349
log " asin (sin pi / 2.0) = pi / 2.0"
351-
asin (sin pi_2) `assertNearlyEqual` pi_2
350+
asin (sin pi_2) `assertApproxEqual` pi_2
352351

353352
log "Data.Number.acos"
354353
log " acos (cos 0.0) = 0.0"
355-
acos (cos 0.0) `assertNearlyEqual` 0.0
354+
acos (cos 0.0) `assertApproxEqual` 0.0
356355

357356
log " acos (cos pi / 4.0) = pi / 4.0"
358-
acos (cos pi_4) `assertNearlyEqual` pi_4
357+
acos (cos pi_4) `assertApproxEqual` pi_4
359358

360359
log " acos (cos pi / 2.0) = pi / 2.0"
361-
acos (cos pi_2) `assertNearlyEqual` pi_2
360+
acos (cos pi_2) `assertApproxEqual` pi_2
362361

363362
log "Data.Number.atan"
364363
log " atan (tan 0.0) = 0.0"
365-
atan (tan 0.0) `assertNearlyEqual` 0.0
364+
atan (tan 0.0) `assertApproxEqual` 0.0
366365

367366
log " atan (tan pi / 4.0) = pi / 4.0"
368-
atan (tan pi_4) `assertNearlyEqual` pi_4
367+
atan (tan pi_4) `assertApproxEqual` pi_4
369368

370369
log " atan (tan pi / 2.0) = pi / 2.0"
371-
atan (tan pi_2) `assertNearlyEqual` pi_2
370+
atan (tan pi_2) `assertApproxEqual` pi_2
372371

373372
log "Data.Number.atan2"
374373
log " atan2 1.0 2.0 = atan (1.0 / 2.0)"
375-
atan2 1.0 2.0 `assertNearlyEqual` atan (1.0 / 2.0)
374+
atan2 1.0 2.0 `assertApproxEqual` atan (1.0 / 2.0)
376375

377376
log "Data.Number.log"
378377
log " log 2.0 = ln2"
379-
Num.log 2.0 `assertNearlyEqual` ln2
378+
Num.log 2.0 `assertApproxEqual` ln2
380379

381380
log " log 10.0 = ln10"
382-
Num.log 10.0 `assertNearlyEqual` ln10
381+
Num.log 10.0 `assertApproxEqual` ln10
383382

384383
log "Data.Number.exp"
385384
log " exp ln2 = 2.0"
386-
exp ln2 `assertNearlyEqual` 2.0
385+
exp ln2 `assertApproxEqual` 2.0
387386

388387
log " exp ln10 = 10.0"
389-
exp ln10 `assertNearlyEqual` 10.0
388+
exp ln10 `assertApproxEqual` 10.0
390389

391390
log "Data.Number.abs"
392391
log " abs pi = pi"
@@ -404,14 +403,14 @@ numericsTestCode = do
404403

405404
log "Data.Number.sqrt"
406405
log " sqrt 2.0 = sqrt2"
407-
sqrt 2.0 `assertNearlyEqual` sqrt2
406+
sqrt 2.0 `assertApproxEqual` sqrt2
408407

409408
log " sqrt (1.0 / 2.0) = sqrt1_2"
410-
sqrt (1.0 / 2.0) `assertNearlyEqual` sqrt1_2
409+
sqrt (1.0 / 2.0) `assertApproxEqual` sqrt1_2
411410

412411
log "Data.Number.pow"
413412
log " 2.0 `pow` (1.0 / 2.0) = sqrt2"
414-
(2.0 `pow` (1.0 / 2.0)) `assertNearlyEqual` sqrt2
413+
(2.0 `pow` (1.0 / 2.0)) `assertApproxEqual` sqrt2
415414

416415
log "Data.Number.min"
417416
log " min 0.0 1.0 = 0.0"
@@ -479,10 +478,7 @@ numericsTestCode = do
479478

480479
log "Data.Number constants"
481480
log " log10e = 1.0 / ln10"
482-
log10e `assertNearlyEqual` (1.0 / ln10)
481+
log10e `assertApproxEqual` (1.0 / ln10)
483482

484483
log " log2e = 1.0 / ln2"
485-
log2e `assertNearlyEqual` (1.0 / ln2)
486-
487-
assertNearlyEqual :: Number -> Number -> Effect Unit
488-
assertNearlyEqual x y = assert ((abs (x - y)) < 1e-12)
484+
log2e `assertApproxEqual` (1.0 / ln2)

0 commit comments

Comments
 (0)