@fooloomanzoo/property-mixins
Version:
mixin for custom elements to extends property mixins for data formats
133 lines (115 loc) • 3.67 kB
HTML
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, minimum-scale=1, initial-scale=1, user-scalable=yes">
<title>number-utilities test</title>
<script src="../../../wct-browser-legacy/browser.js"></script>
</head>
<body>
<script type="module">
import { decimalPrecision, isNegative0, safeAdd, safeMult } from '../number-utilities.js';
suite('decimal precision', () => {
test('basic', done => {
let a = 1.22;
assert.equal(decimalPrecision(a), 2, 'should deliver precission');
done();
});
test('int number', done => {
let a = 5e+30;
assert.equal(decimalPrecision(a), 0, 'should give no precission');
done();
});
test('notation with no decimal part', done => {
let a = 1e-25;
assert.equal(+decimalPrecision(a), 25, 'should use only exponential part');
done();
});
test('notation with decimal part', done => {
let a = 1.33e-35;
assert.equal(decimalPrecision(a), 37, 'should add decimal part precision');
done();
});
});
suite('safe-add', () => {
test('basic', done => {
let a = -1.12;
const b = 2.22;
a = safeAdd(a, b);
assert.equal(a, 1.1, 'basic add');
done();
});
test('big queue', done => {
let a = -1000;
const b = 1e-3;
for (let i = 1; i <= 1e6; i++) {
a = safeAdd(a, b);
}
assert.equal(a, 0, 'a is integer');
done();
});
});
suite('safe-mult', () => {
test('basic', done => {
let a = 1;
const b = 0.1;
a = safeMult(a, b);
assert.equal(a, 0.1, 'basic multiplication');
done();
});
test('negative first factor', done => {
let a = -1;
const b = 0.1;
a = safeMult(a, b);
assert.equal(a, -0.1, 'basic multiplication');
done();
});
test('negative second factor', done => {
let a = 1;
const b = -0.1;
a = safeMult(a, b);
assert.equal(a, -0.1, 'basic multiplication');
done();
});
test('negative factors', done => {
let a = -1;
const b = -0.1;
a = safeMult(a, b);
assert.equal(a, 0.1, 'basic multiplication');
done();
});
test('fractional factors', done => {
let a = -1.5;
const b = 0.1;
a = safeMult(a, b);
assert.equal(a, -0.15, 'basic multiplication');
done();
});
test('exponential notation', done => {
let a = 1.5e-10;
const b = 1e-9;
a = safeMult(a, b);
assert.equal(a, 1.5e-19, 'basic multiplication');
done();
});
test('big queue', done => {
let a = 1;
const b = 0.1;
const c = 10;
const start = performance.now();
for (let i = 1; i < 5e4; i++) {
let s = performance.now();
for (let j = 1; j < 15; j++) {
a = safeMult(a, b);
}
for (let k = 1; k < 15; k++) {
a = safeMult(a, c);
}
}
assert.equal(a, 1, 'a is integer');
done();
});
});
</script>
</body>
</html>