chai-bignumber
Advanced tools
Comparing version 1.0.0 to 2.0.0
@@ -1,155 +0,158 @@ | ||
var BigNumber = require('bignumber.js'); | ||
module.exports = function(BigNumber){ | ||
module.exports = function (chai, utils) { | ||
chai.Assertion.addProperty('bignumber', function() { | ||
utils.flag(this, 'bignumber', true); | ||
}); | ||
BigNumber = BigNumber || require('bignumber.js'); | ||
var convert = function(value, dp, rm) { | ||
var number; | ||
return function (chai, utils) { | ||
chai.Assertion.addProperty('bignumber', function() { | ||
utils.flag(this, 'bignumber', true); | ||
}); | ||
if (typeof value === 'string' || typeof value === 'number') { | ||
number = new BigNumber(value); | ||
} else if (value instanceof BigNumber) { | ||
number = value; | ||
} else { | ||
new chai.Assertion(value).assert(false, | ||
'expected #{act} to be an instance of string, number or BigNumber'); | ||
} | ||
var convert = function(value, dp, rm) { | ||
var number; | ||
if (parseInt(dp) === dp) { | ||
if (rm === undefined) { | ||
rm = BigNumber.ROUND_HALF_UP; | ||
if (typeof value === 'string' || typeof value === 'number') { | ||
number = new BigNumber(value); | ||
} else if (value instanceof BigNumber) { | ||
number = value; | ||
} else { | ||
new chai.Assertion(value).assert(false, | ||
'expected #{act} to be an instance of string, number or BigNumber'); | ||
} | ||
number = number.round(dp, rm); | ||
} | ||
return number; | ||
}; | ||
if (parseInt(dp) === dp) { | ||
if (rm === undefined) { | ||
rm = BigNumber.ROUND_HALF_UP; | ||
} | ||
number = number.round(dp, rm); | ||
} | ||
var override = function(fn) { | ||
return function (_super) { | ||
return function(value, dp, rm) { | ||
if (utils.flag(this, 'bignumber')) { | ||
var expected = convert(value, dp, rm); | ||
var actual = convert(this._obj, dp, rm); | ||
fn.apply(this, [expected, actual]); | ||
} else { | ||
_super.apply(this, arguments); | ||
} | ||
return number; | ||
}; | ||
var override = function(fn) { | ||
return function (_super) { | ||
return function(value, dp, rm) { | ||
if (utils.flag(this, 'bignumber')) { | ||
var expected = convert(value, dp, rm); | ||
var actual = convert(this._obj, dp, rm); | ||
fn.apply(this, [expected, actual]); | ||
} else { | ||
_super.apply(this, arguments); | ||
} | ||
}; | ||
}; | ||
}; | ||
}; | ||
// BigNumber.equals | ||
var equals = override(function(expected, actual) { | ||
this.assert( | ||
expected.equals(actual), | ||
'expected #{act} to equal #{exp}', | ||
'expected #{act} to be different from #{exp}', | ||
expected.toString(), | ||
actual.toString() | ||
); | ||
}); | ||
chai.Assertion.overwriteMethod('equal', equals); | ||
chai.Assertion.overwriteMethod('equals', equals); | ||
chai.Assertion.overwriteMethod('eq', equals); | ||
// BigNumber.equals | ||
var equals = override(function(expected, actual) { | ||
this.assert( | ||
expected.equals(actual), | ||
'expected #{act} to equal #{exp}', | ||
'expected #{act} to be different from #{exp}', | ||
expected.toString(), | ||
actual.toString() | ||
); | ||
}); | ||
chai.Assertion.overwriteMethod('equal', equals); | ||
chai.Assertion.overwriteMethod('equals', equals); | ||
chai.Assertion.overwriteMethod('eq', equals); | ||
// BigNumber.greaterThan | ||
var greaterThan = override(function(expected, actual) { | ||
this.assert( | ||
actual.greaterThan(expected), | ||
'expected #{act} to be greater than #{exp}', | ||
'expected #{act} to be less than or equal to #{exp}', | ||
expected.toString(), | ||
actual.toString() | ||
); | ||
}); | ||
chai.Assertion.overwriteMethod('above', greaterThan); | ||
chai.Assertion.overwriteMethod('gt', greaterThan); | ||
chai.Assertion.overwriteMethod('greaterThan', greaterThan); | ||
// BigNumber.greaterThan | ||
var greaterThan = override(function(expected, actual) { | ||
this.assert( | ||
actual.greaterThan(expected), | ||
'expected #{act} to be greater than #{exp}', | ||
'expected #{act} to be less than or equal to #{exp}', | ||
expected.toString(), | ||
actual.toString() | ||
); | ||
}); | ||
chai.Assertion.overwriteMethod('above', greaterThan); | ||
chai.Assertion.overwriteMethod('gt', greaterThan); | ||
chai.Assertion.overwriteMethod('greaterThan', greaterThan); | ||
// BigNumber.greaterThanOrEqualTo | ||
var greaterThanOrEqualTo = override(function(expected, actual) { | ||
this.assert( | ||
actual.greaterThanOrEqualTo(expected), | ||
'expected #{act} to be greater than or equal to #{exp}', | ||
'expected #{act} to be less than #{exp}', | ||
expected.toString(), | ||
actual.toString() | ||
); | ||
}); | ||
chai.Assertion.overwriteMethod('least', greaterThanOrEqualTo); | ||
chai.Assertion.overwriteMethod('gte', greaterThanOrEqualTo); | ||
// BigNumber.greaterThanOrEqualTo | ||
var greaterThanOrEqualTo = override(function(expected, actual) { | ||
this.assert( | ||
actual.greaterThanOrEqualTo(expected), | ||
'expected #{act} to be greater than or equal to #{exp}', | ||
'expected #{act} to be less than #{exp}', | ||
expected.toString(), | ||
actual.toString() | ||
); | ||
}); | ||
chai.Assertion.overwriteMethod('least', greaterThanOrEqualTo); | ||
chai.Assertion.overwriteMethod('gte', greaterThanOrEqualTo); | ||
// BigNumber.lessThan | ||
var lessThan = override(function(expected, actual) { | ||
this.assert( | ||
actual.lessThan(expected), | ||
'expected #{act} to be less than #{exp}', | ||
'expected #{act} to be greater than or equal to #{exp}', | ||
expected.toString(), | ||
actual.toString() | ||
); | ||
}); | ||
chai.Assertion.overwriteMethod('below', lessThan); | ||
chai.Assertion.overwriteMethod('lt', lessThan); | ||
chai.Assertion.overwriteMethod('lessThan', lessThan); | ||
// BigNumber.lessThan | ||
var lessThan = override(function(expected, actual) { | ||
this.assert( | ||
actual.lessThan(expected), | ||
'expected #{act} to be less than #{exp}', | ||
'expected #{act} to be greater than or equal to #{exp}', | ||
expected.toString(), | ||
actual.toString() | ||
); | ||
}); | ||
chai.Assertion.overwriteMethod('below', lessThan); | ||
chai.Assertion.overwriteMethod('lt', lessThan); | ||
chai.Assertion.overwriteMethod('lessThan', lessThan); | ||
// BigNumber.lessThanOrEqualTo | ||
var lessThanOrEqualTo = override(function(expected, actual) { | ||
this.assert( | ||
actual.lessThanOrEqualTo(expected), | ||
'expected #{act} to be less than or equal to #{exp}', | ||
'expected #{act} to be greater than #{exp}', | ||
expected.toString(), | ||
actual.toString() | ||
); | ||
}); | ||
chai.Assertion.overwriteMethod('most', lessThanOrEqualTo); | ||
chai.Assertion.overwriteMethod('lte', lessThanOrEqualTo); | ||
// BigNumber.lessThanOrEqualTo | ||
var lessThanOrEqualTo = override(function(expected, actual) { | ||
this.assert( | ||
actual.lessThanOrEqualTo(expected), | ||
'expected #{act} to be less than or equal to #{exp}', | ||
'expected #{act} to be greater than #{exp}', | ||
expected.toString(), | ||
actual.toString() | ||
); | ||
}); | ||
chai.Assertion.overwriteMethod('most', lessThanOrEqualTo); | ||
chai.Assertion.overwriteMethod('lte', lessThanOrEqualTo); | ||
// BigNumber.isFinite | ||
chai.Assertion.addProperty('finite', function () { | ||
var value = convert(this._obj); | ||
this.assert( | ||
value.isFinite(), | ||
'expected #{this} to be finite', | ||
'expected #{this} to not be finite', | ||
value.toString() | ||
); | ||
}); | ||
// BigNumber.isFinite | ||
chai.Assertion.addProperty('finite', function () { | ||
var value = convert(this._obj); | ||
this.assert( | ||
value.isFinite(), | ||
'expected #{this} to be finite', | ||
'expected #{this} to not be finite', | ||
value.toString() | ||
); | ||
}); | ||
// BigNumber.isInteger | ||
chai.Assertion.addProperty('integer', function () { | ||
var value = convert(this._obj); | ||
this.assert( | ||
value.isInteger(), | ||
'expected #{this} to be an integer', | ||
'expected #{this} to not be an integer', | ||
value.toString() | ||
); | ||
}); | ||
// BigNumber.isInteger | ||
chai.Assertion.addProperty('integer', function () { | ||
var value = convert(this._obj); | ||
this.assert( | ||
value.isInteger(), | ||
'expected #{this} to be an integer', | ||
'expected #{this} to not be an integer', | ||
value.toString() | ||
); | ||
}); | ||
// BigNumber.isNegative | ||
chai.Assertion.addProperty('negative', function () { | ||
var value = convert(this._obj); | ||
this.assert( | ||
value.isNegative(), | ||
'expected #{this} to be negative', | ||
'expected #{this} to not be negative', | ||
value.toString() | ||
); | ||
}); | ||
// BigNumber.isNegative | ||
chai.Assertion.addProperty('negative', function () { | ||
var value = convert(this._obj); | ||
this.assert( | ||
value.isNegative(), | ||
'expected #{this} to be negative', | ||
'expected #{this} to not be negative', | ||
value.toString() | ||
); | ||
}); | ||
// BigNumber.isZero | ||
chai.Assertion.addProperty('zero', function () { | ||
var value = convert(this._obj); | ||
this.assert( | ||
value.isZero(), | ||
'expected #{this} to be zero', | ||
'expected #{this} to not be zero', | ||
value.toString() | ||
); | ||
}); | ||
// BigNumber.isZero | ||
chai.Assertion.addProperty('zero', function () { | ||
var value = convert(this._obj); | ||
this.assert( | ||
value.isZero(), | ||
'expected #{this} to be zero', | ||
'expected #{this} to not be zero', | ||
value.toString() | ||
); | ||
}); | ||
}; | ||
}; |
{ | ||
"name": "chai-bignumber", | ||
"version": "1.0.0", | ||
"version": "2.0.0", | ||
"description": "Chai assertions for comparing arbitrary-precision decimals using the bignumber.js library", | ||
"main": "chai-bignumber.js", | ||
"scripts": { | ||
"test": "jshint ./*.js && mocha ./test/*.js" | ||
"lint": "jshint *.js", | ||
"test": "mocha test/*.js" | ||
}, | ||
"devDependencies": { | ||
"bignumber.js": "^2.1.0", | ||
"mocha": "^2.3.3", | ||
"chai": "^3.4.0", | ||
"jshint": "^2.8.0" | ||
"bignumber.js": "2.3.0", | ||
"chai": "3.5.0", | ||
"jshint": "2.9.2", | ||
"mocha": "2.5.3" | ||
}, | ||
@@ -15,0 +16,0 @@ "author": "António Marques <me@antoniomarques.eu>", |
@@ -16,3 +16,8 @@ # chai-bignumber | ||
var chai = require('chai'); | ||
chai.use(require('chai-bignumber')); | ||
//use default BigNumber | ||
chai.use(require('chai-bignumber')()); | ||
//use custom BigNumber | ||
chai.use(require('chai-bignumber')(BigNumber)); | ||
``` | ||
@@ -19,0 +24,0 @@ |
@@ -5,3 +5,3 @@ var BigNumber = require('bignumber.js'); | ||
chai.should(); | ||
chai.use(require('../chai-bignumber')); | ||
chai.use(require('../chai-bignumber')(BigNumber)); | ||
chai.config.includeStack = true; | ||
@@ -8,0 +8,0 @@ |
26871
736
84