finlint-vectors
v1.0.0
Published
Financial math test vector validation for JavaScript
Maintainers
Readme
finlint-vectors
Financial math test vectors for JavaScript. Validate that your Decimal arithmetic produces correct, verified results.
Install
npm install finlint-vectorsUsage
import Decimal from 'decimal.js';
import { runSuite } from 'finlint-vectors';
// Implement the operation under test
function allocate({ amount, parts, method }) {
const d = new Decimal(amount);
const base = d.div(parts).toDecimalPlaces(2, Decimal.ROUND_DOWN);
const remainder = d.minus(base.times(parts));
const pennies = remainder.div('0.01').toNumber();
const splits = [];
for (let i = 0; i < parts; i++) {
splits.push(i < pennies ? base.plus('0.01') : base);
}
return { splits, sum: splits.reduce((a, b) => a.plus(b), new Decimal(0)) };
}
// Run all allocation vectors
runSuite('allocation', allocate);API
loadSuite(name)— Load vectors for a named suiterunVector(vector, impl)— Run one vector against an implementationrunSuite(name, impl)— Run all vectors in a suitecompare(id, expected, actual, precision)— Precision-aware deep comparisonparseDecimalValues(obj)— Recursively parse string values to Decimal
Available Suites
allocation, rounding, aggregation, percentage, gain-loss, ratio, weighted-average, serialization
License
Apache-2.0 — github.com/kanso-finance/finlint
