Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const mocha = require('mocha')
- const sinon = require('sinon')
- const chai = require('chai')
- const PRECISION_DIGITS = 14
- let floatEqualityComparer = (a, b) => {
- let diff = Math.abs(a - b)
- let c = Math.log10(Math.abs(Math.max(a, b)) || 1)
- let epsilon = Math.pow(10, c - PRECISION_DIGITS)
- return diff < epsilon
- }
- let expect = chai.expect
- describe('Tests', function () {
- it('Test 1', function () {
- let equal = floatEqualityComparer(0, 0)
- expect(equal).to.be.true
- })
- it('Test 2', function () {
- let equal = floatEqualityComparer(0.1 + 0.2, 0.15 + 0.15)
- expect(equal).to.be.true
- })
- it('Test 3', function () {
- let equal = floatEqualityComparer((1 / 3) * 3, 1)
- expect(equal).to.be.true
- })
- it('Test 4', function () {
- let equal = floatEqualityComparer(0, 1 - 1)
- expect(equal).to.be.true
- })
- it('Test 5', function () {
- let equal = floatEqualityComparer(1E10, Math.pow(10, 10))
- expect(equal).to.be.true
- })
- it('Test 6', function () {
- let equal = floatEqualityComparer(1E11, 1.1E11)
- expect(equal).to.be.false
- })
- it('Test 7', function () {
- let equal = floatEqualityComparer(0, 0.1)
- expect(equal).to.be.false
- })
- it('Test 8', function () {
- let equal = floatEqualityComparer(-0.1, 0.1)
- expect(equal).to.be.false
- })
- it('Test 9', function () {
- let equal = floatEqualityComparer(Number.MAX_VALUE, Number.POSITIVE_INFINITY)
- expect(equal).to.be.false
- })
- it('Test 10', function () {
- let equal = floatEqualityComparer(0.9, 1)
- expect(equal).to.be.false
- })
- it('Test 11', function () {
- let equal = floatEqualityComparer(1.999999, 2)
- expect(equal).to.be.false
- })
- it('Test 12', function () {
- let equal = floatEqualityComparer(1E20, 1E21)
- expect(equal).to.be.false
- })
- it('Test 13', function () {
- let equal = floatEqualityComparer(1E200, 1E201)
- expect(equal).to.be.false
- })
- it('Should be equal if difference is too small', function () {
- let equal = floatEqualityComparer(1, 1.0000000000000001)
- expect(equal).to.be.true
- })
- it('Should be equal if difference is too small', function () {
- let equal = floatEqualityComparer(1E200, 1.000000000000001E200)
- expect(equal).to.be.true
- })
- })
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement