'buildbot-syncer.js' should be able to determine force build argument from a list...
[WebKit-https.git] / Websites / perf.webkit.org / unit-tests / resources / almost-equal.js
1 var assert = require('assert');
2
3 function almostEqual(actual, expected, precision, message)
4 {
5     var suffiedMessage = (message ? message + ' ' : '');
6     if (isNaN(expected)) {
7         assert(isNaN(actual), `${suffiedMessage}expected NaN but got ${actual}`);
8         return;
9     }
10
11     if (expected == 0) {
12         assert.equal(actual, expected, message);
13         return;
14     }
15
16     if (!precision)
17         precision = 6;
18     var tolerance = 1 / Math.pow(10, precision);
19     var relativeDifference = Math.abs((actual - expected) / expected);
20     var percentDifference = (relativeDifference * 100).toFixed(2);
21     assert(relativeDifference < tolerance,
22         `${suffiedMessage}expected ${expected} but got ${actual} (${percentDifference}% difference)`);
23 }
24
25 if (typeof module != 'undefined')
26     module.exports = almostEqual;