0.0.8 • Published 7 months ago

@0bdx/are v0.0.8

Weekly downloads
-
License
MIT
Repository
github
Last release
7 months ago

@0bdx/are

Synchronous utilities for unit testing apps, libraries and websites.

Version: 0.0.8
NPM: https://www.npmjs.com/package/@0bdx/are
Repo: https://github.com/0bdx/are
Homepage: https://0bdx.com/are

TODO add an overview

Examples

Example scripts can be found in the 'examples/' directory.

You can run Example 1, for example, using:
node examples/example-1.js

Example 1

import { isDeeplyLike as isLike } from '@0bdx/are';

// Compare two numbers.
console.log(isLike(0, -0, 'Zero and minus-zero are alike.'));
// PASS: Zero and minus-zero are alike.
//     : `actually` is `0` as expected

// Compare two booleans.
try { isLike(true, false, 'true and false are not alike.');
} catch (err) { console.log(err.message) }
// FAIL: true and false are not alike.
//     : `actually` is `true`
//     : `expected` is `false`

// Compare two plain objects.
console.log(isLike({a:1}, {a:1}, 'Similar objects are alike.'));
// PASS: Similar objects are alike.
//     : `actually` is `{ a:1 }` as expected

Example 2

import { bind1, isDeeplyLike } from '@0bdx/are';

// Create a test suite with a title, and bind one function to it.
const [ isLike, testSuite ] = bind1(isDeeplyLike, 'fact()');

// Or a test suite from a previous test could be passed in instead.
// const [ isLike ] = bind1(isDeeplyLike, testSuite);

// Optionally, begin a new section.
testSuite.addSection('Check that fact() works');

// Run the tests. The third argument, `notes`, is optional.
isLike(fact(0), 1);
isLike(fact(5), 120,
    ['`fact(5)` 5! = 5 * 4 * 3 * 2 * 1']);

// Output a test results summary to the console, as plain text.
console.log(testSuite.render());

// Calculates the factorial of a given integer.
function fact(n) {
    if (n === 0 || n === 1) return 1;
    for (let i=n-1; i>0; i--) n *= i;
    return n;
}

Example 3

import { bind2, isDeeplyLike, throwsError } from '@0bdx/are';

// Create a test suite with a title, and bind two functions to it.
const [ isLike, throws, testSuite ] = bind2(isDeeplyLike, throwsError, 'fact()');

// Or a test suite from a previous test could be passed in instead.
// const [ isLike, throws ] = bind2(isDeeplyLike, throwsError, testSuite);

// Optionally, begin a new section.
testSuite.addSection('Check that fact() works');

// Run the tests. The third argument, `notes`, is optional.
throws(()=>fact(), "`n` is not type 'number'");
throws(()=>fact(NaN), '`n` is NaN!',
    ['`fact(NaN)` cannot factorialise the special `NaN` number']);
isLike(fact(0), 1);
isLike(fact(5), 120,
    ['`fact(5)` 5! = 5 * 4 * 3 * 2 * 1']);

// Output a test results summary to the console, as plain text.
console.log(testSuite.render());

// Calculates the factorial of a given integer.
function fact(n) {
    if (typeof n !== 'number') throw Error("`n` is not type 'number'");
    if (isNaN(n)) throw Error('`n` is NaN!');
    if (n === 0 || n === 1) return 1;
    for (let i=n-1; i>0; i--) n *= i;
    return n;
}
0.0.8

7 months ago

0.0.5

9 months ago

0.0.4

9 months ago

0.0.6

7 months ago

0.0.3

11 months ago

0.0.2

11 months ago