muschema
Version:
Schemas for mudb
95 lines • 3.73 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var test = require("tape");
var constants_1 = require("../constants");
var __1 = require("../");
var mustreams_1 = require("mustreams");
var numSchemaTypes = [
__1.MuInt8, __1.MuInt16, __1.MuInt32,
__1.MuUint8, __1.MuUint16, __1.MuUint32,
__1.MuFloat32, __1.MuFloat64,
];
var intSchemaTypes = [
__1.MuInt8, __1.MuInt16, __1.MuInt32,
__1.MuUint8, __1.MuUint16, __1.MuUint32,
];
var floatSchemaTypes = [
__1.MuFloat32,
__1.MuFloat64,
];
test('alloc() & clone()', function (t) {
numSchemaTypes.forEach(function (Type) {
var defaultValue = 0;
var numSchema = new Type();
t.equals(numSchema.identity, defaultValue);
t.equals(numSchema.alloc(), defaultValue);
t.equals(numSchema.clone(0), 0);
var muType = numSchema.muType;
var min = constants_1.Constants[muType].MIN;
var max = constants_1.Constants[muType].MAX;
numSchema = new Type(min);
t.equals(numSchema.identity, min);
t.equals(numSchema.alloc(), min);
t.equals(numSchema.clone(min), min);
numSchema = new Type(max);
t.equals(numSchema.identity, max);
t.equals(numSchema.alloc(), max);
t.equals(numSchema.clone(max), max);
if (muType.indexOf('int') === 0) {
numSchema = new Type(-1);
t.equals(numSchema.identity, -1);
t.equals(numSchema.alloc(), -1);
t.equals(numSchema.clone(-1), -1);
}
if (constants_1.Constants[muType]['EPSILON']) {
var epsilon = constants_1.Constants[muType]['EPSILON'];
numSchema = new Type(-epsilon);
t.equals(numSchema.identity, -epsilon);
t.equals(numSchema.alloc(), -epsilon);
t.equals(numSchema.clone(-epsilon), -epsilon);
numSchema = new Type(epsilon);
t.equals(numSchema.identity, epsilon);
t.equals(numSchema.alloc(), epsilon);
t.equals(numSchema.clone(epsilon), epsilon);
}
});
t.end();
});
test('diff() & patch()', function (t) {
intSchemaTypes.forEach(function (Type) {
var intSchema = new Type();
var ws = new mustreams_1.MuWriteStream(2);
var smallNum = 1e-8;
t.false(intSchema.diff(0, smallNum, ws));
t.false(intSchema.diff(smallNum, 0, ws));
t.false(intSchema.diff(0, 1 - smallNum, ws));
t.false(intSchema.diff(1 - smallNum, 0, ws));
});
numSchemaTypes.forEach(function (Type) {
var numSchema = new Type();
var ws = new mustreams_1.MuWriteStream(2);
var muType = numSchema.muType;
var min = constants_1.Constants[muType].MIN;
var max = constants_1.Constants[muType].MAX;
t.true(numSchema.diff(1, min, ws));
t.true(numSchema.diff(1, 0, ws));
t.true(numSchema.diff(1, max, ws));
var rs = new mustreams_1.MuReadStream(ws.buffer.uint8);
t.equals(numSchema.patch(123, rs), min);
t.equals(numSchema.patch(123, rs), 0);
t.equals(numSchema.patch(123, rs), max);
});
floatSchemaTypes.forEach(function (Type) {
var floatSchema = new Type();
var ws = new mustreams_1.MuWriteStream(2);
var muType = floatSchema.muType;
var epsilon = constants_1.Constants[muType]['EPSILON'];
t.true(floatSchema.diff(1.0, -epsilon, ws));
t.true(floatSchema.diff(1.0, epsilon, ws));
var rs = new mustreams_1.MuReadStream(ws.buffer.uint8);
t.equals(floatSchema.patch(1.0, rs), -epsilon);
t.equals(floatSchema.patch(1.0, rs), epsilon);
});
t.end();
});
//# sourceMappingURL=numbers.js.map