GithubHelp home page GithubHelp logo

openzeppelin / chai-bn Goto Github PK

View Code? Open in Web Editor NEW

This project forked from asmarques/chai-bignumber

14.0 4.0 21.0 137 KB

Chai assertions for comparing arbitrary-precision integers using the bn.js library

License: MIT License

JavaScript 100.00%
chai plugin chai-plugin bignum bignumber test testing

chai-bn's Introduction

chai-bn

NPM Package Build Status

Chai assertions for comparing arbitrary-precision integers using the bn.js library. Forked from chai-bignumber, which uses the bignumber.js library.

Installation

npm install --save-dev chai-bn

Usage

const chai = require('chai');
const BN = require('bn.js');

// Enable and inject BN dependency
chai.use(require('chai-bn')(BN));

Assertions

The following assertion methods are provided and will override the existing builtin assertions if the bignumber property is set as part of the assertion chain:

  • equal/equals/eq
  • above/gt/greaterThan
  • least/gte
  • below/lt/lessThan
  • most/lte
  • closeTo

A set of additional assertion properties is also provided:

  • negative
  • zero

Both actual values (the values being asserted) and expected values (the values the actual value is expected to match) can be either instances of BN, or strings which can be converted into a valid number. This is a key difference with chai-bignumber, which automatically converts JavaScript numbers to BigNumber instances for both actual and expected values.

Only BDD style (expect or should) assertions are supported.

Examples

Methods:

const actual = new BN('100000000000000000').plus(new BN('1'));
const expected = '100000000000000001';

actual.should.be.a.bignumber.that.equals(expected);
expect(actual).to.be.a.bignumber.that.is.at.most(expected);
(new BN('1000')).should.be.a.bignumber.that.is.lessThan('2000');

Properties:

(new BN('-100')).should.be.a.bignumber.that.is.negative;
expect(new BN('1').sub(new BN('1'))).to.be.a.bignumber.that.is.zero;

Some Chai properties (e.g. the that.is chain) have no effect other than increasing readability, and can be dropped if less verbosity is desired.

License

MIT

chai-bn's People

Contributors

aakilfernandes avatar asmarques avatar danielzlotin avatar forshtat avatar frangio avatar hsheth2 avatar logvinovleon avatar morrislaptop avatar nventuro avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

chai-bn's Issues

Add override for closeTo

We should provide a way to test for almost-equality: this is very useful when dealing with time, where some sort of tolerance is required.

See chai.closeTo.

Testing arrays of big numbers

Chai's members can be used to test that an array contains certain values, as determined by strict equality or optionally deep equality.

Neither of those is appropriate to test arrays of big numbers (although deep equality works, it isn't ideal). We could maybe make the bignumber property modify members to compare values using bignumber equality?

On the other hand, this same issue shows up with many other Chai assertions, like oneOf...

Types for this package

$ npm i --save-dev @types/chai-bn
npm ERR! code E404
npm ERR! 404 Not Found - GET https://registry.npmjs.org/@types%2fchai-bn - Not found

Are there any plans to add types?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.