NuclearDispersionSystem/ant-design-vue-jeecg/node_modules/regression/test/regression.test.js
2023-09-14 14:47:11 +08:00

48 lines
1.6 KiB
JavaScript

/* eslint-env node, mocha */
import { expect } from 'chai';
import * as models from './data';
import regression from '../src/regression';
const { _round } = regression;
describe('round', () => {
it('rounds to the correct precision', () => {
expect(_round(0.33333333333333333333, 9)).to.equal(0.333333333);
});
});
describe('models', () => {
Object.keys(models).forEach((model) => {
describe(model, () => {
Object.keys(models[model]).forEach((name) => {
const example = models[model][name];
describe(name, () => {
it(`correctly predicts ${name}`, () => {
let result = regression[model](example.data, example.config);
delete result.predict;
expect(result).to.deep.equal({
r2: example.r2,
string: example.string,
points: example.points,
equation: example.equation,
});
});
it('should correctly forecast data points', () => {
const result = regression[model](example.data, example.config);
expect(result.predict(example.predicted[0])).to.deep.equal(example.predicted);
});
it('should take precision options', () => {
const notSpecified = regression[model](example.data, example.config);
const specified = regression[model](example.data, { ...example.config, precision: 4 });
expect(specified.equation).to.deep.equal(example.equation.map(v => _round(v, 4)));
expect(notSpecified.equation).to.deep.equal(example.equation.map(v => _round(v, 2)));
});
});
});
});
});
});