Skip to content

Commit c38ab57

Browse files
committed
Add support for oneOf assertions
1 parent b458cc7 commit c38ab57

File tree

2 files changed

+59
-0
lines changed

2 files changed

+59
-0
lines changed

chai-bignumber.js

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ module.exports = function (BigNumber) {
66
var isGreaterThanOrEqualTo = BigNumber.prototype.isGreaterThanOrEqualTo || BigNumber.prototype.greaterThanOrEqualTo;
77
var isLessThan = BigNumber.prototype.isLessThan || BigNumber.prototype.lessThan;
88
var isLessThanOrEqualTo = BigNumber.prototype.isLessThanOrEqualTo || BigNumber.prototype.lessThanOrEqualTo;
9+
var oneOf = BigNumber.prototype.oneOf
910

1011
return function (chai, utils) {
1112
chai.Assertion.addProperty('bignumber', function () {
@@ -155,5 +156,29 @@ module.exports = function (BigNumber) {
155156
value.toString()
156157
);
157158
});
159+
160+
// BigNumber.oneOf
161+
chai.Assertion.overwriteMethod('oneOf', function (original) {
162+
return function (list) {
163+
if (utils.flag(this, 'bignumber')) {
164+
var value = convert(this._obj);
165+
var found = false
166+
for (var i = 0; i < list.length; i++) {
167+
if (value.isEqualTo(list[i])) {
168+
found = true;
169+
}
170+
}
171+
this.assert(
172+
found,
173+
'expected #{this} to be one of #{exp}',
174+
'expected #{this} to not be one of #{exp}',
175+
list
176+
)
177+
} else {
178+
original.apply(this, arguments);
179+
}
180+
};
181+
});
182+
158183
};
159184
};

test/chai-bignumber.test.js

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -723,4 +723,38 @@ describe('chai-bignumber', function () {
723723
}
724724
});
725725
});
726+
727+
describe('oneOf', function () {
728+
it('should find number in array', function () {
729+
var tests = [
730+
[new BigNumber(0), [new BigNumber(0), null, undefined]],
731+
[1, [1, new BigNumber(2), 5]],
732+
["3", [new BigNumber(3), 6, 7, "8"]],
733+
[new BigNumber(4), [4, "10", new BigNumber(6)]],
734+
[new BigNumber(5), ["5", new BigNumber(10)]],
735+
];
736+
737+
for (var i = 0; i < tests.length; i++) {
738+
var a = tests[i][0];
739+
var l = tests[i][1];
740+
a.should.be.bignumber.oneOf(l);
741+
expect(a).to.be.bignumber.oneOf(l);
742+
}
743+
});
744+
745+
it('should not find number in array', function () {
746+
var tests = [
747+
[new BigNumber(0), []],
748+
[10, [1, new BigNumber(2), 5]],
749+
["3", [new BigNumber(30), null, undefined]],
750+
];
751+
752+
for (var i = 0; i < tests.length; i++) {
753+
var a = tests[i][0];
754+
var l = tests[i][1];
755+
a.should.not.be.bignumber.oneOf(l);
756+
expect(a).to.not.be.bignumber.oneOf(l);
757+
}
758+
});
759+
});
726760
});

0 commit comments

Comments
 (0)