muschema
Version:
Schemas for mudb
216 lines • 9.44 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var test = require("tape");
var equal = require("fast-deep-equal");
var __1 = require("../");
var constants_1 = require("../constants");
var helper_1 = require("./helper");
test('array - identity', function (t) {
var arraySchema = new __1.MuArray(new __1.MuString());
t.same(arraySchema.identity, []);
var id = ['foo', 'bar'];
arraySchema = new __1.MuArray(new __1.MuString(), id);
t.equals(arraySchema.identity, id);
t.end();
});
test('array - alloc()', function (t) {
var arraySchema = new __1.MuArray(new __1.MuFloat64());
t.same(arraySchema.alloc(), []);
arraySchema = new __1.MuArray(new __1.MuUint32(), [233, 666]);
t.same(arraySchema.alloc(), []);
t.end();
});
function randomArray(dimension, muType, length_) {
var length = length_ || Math.random() * 10 | 0;
var result = new Array(length);
if (dimension === 1) {
for (var i = 0; i < length; ++i) {
result[i] = helper_1.randomValue(muType);
}
return result;
}
for (var i = 0; i < length; ++i) {
result[i] = randomArray(dimension - 1, muType, length_);
}
return result;
}
test('array (flat) - clone()', function (t) {
for (var _i = 0, muPrimitiveTypes_1 = constants_1.muPrimitiveTypes; _i < muPrimitiveTypes_1.length; _i++) {
var muType = muPrimitiveTypes_1[_i];
var valueSchema = helper_1.muPrimitiveSchema(muType);
if (valueSchema) {
var arraySchema = new __1.MuArray(valueSchema);
for (var i = 0; i < 200; ++i) {
var arr = randomArray(1, muType);
var copy = arraySchema.clone(arr);
t.notEquals(copy, arr);
t.same(copy, arr);
}
}
}
t.end();
});
test('array (nested) - clone()', function (t) {
for (var _i = 0, muPrimitiveTypes_2 = constants_1.muPrimitiveTypes; _i < muPrimitiveTypes_2.length; _i++) {
var muType = muPrimitiveTypes_2[_i];
var valueSchema = helper_1.muPrimitiveSchema(muType);
if (valueSchema) {
var arraySchema = new __1.MuArray(new __1.MuArray(valueSchema));
for (var i = 0; i < 100; ++i) {
var array2D = randomArray(2, muType);
var copy = arraySchema.clone(array2D);
t.notEquals(copy, array2D);
t.same(copy, array2D);
}
arraySchema = new __1.MuArray(new __1.MuArray(new __1.MuArray(valueSchema)));
for (var i = 0; i < 100; ++i) {
var array3D = randomArray(3, muType);
var copy = arraySchema.clone(array3D);
t.notEquals(copy, array3D);
t.same(copy, array3D);
}
arraySchema = new __1.MuArray(new __1.MuArray(new __1.MuArray(new __1.MuArray(valueSchema))));
for (var i = 0; i < 100; ++i) {
var array4D = randomArray(4, muType);
var copy = arraySchema.clone(array4D);
t.notEquals(copy, array4D);
t.same(copy, array4D);
}
}
}
t.end();
});
test('array - copy()', function (t) {
for (var _i = 0, muPrimitiveTypes_3 = constants_1.muPrimitiveTypes; _i < muPrimitiveTypes_3.length; _i++) {
var muType = muPrimitiveTypes_3[_i];
var valueSchema = helper_1.muPrimitiveSchema(muType);
if (valueSchema) {
var source = void 0;
var target = void 0;
var arraySchema = new __1.MuArray(valueSchema);
for (var i = 0; i < 10; ++i) {
source = randomArray(1, muType);
target = randomArray(1, muType);
arraySchema.copy(source, target);
t.deepEqual(target, source);
}
arraySchema = new __1.MuArray(new __1.MuArray(valueSchema));
for (var i = 0; i < 10; ++i) {
source = randomArray(2, muType);
target = randomArray(2, muType);
arraySchema.copy(source, target);
t.deepEqual(target, source);
}
arraySchema = new __1.MuArray(new __1.MuArray(new __1.MuArray(valueSchema)));
for (var i = 0; i < 10; ++i) {
source = randomArray(3, muType);
target = randomArray(3, muType);
arraySchema.copy(source, target);
t.deepEqual(target, source);
}
}
}
t.end();
});
test('array - equal()', function (t) {
for (var _i = 0, muPrimitiveTypes_4 = constants_1.muPrimitiveTypes; _i < muPrimitiveTypes_4.length; _i++) {
var muType = muPrimitiveTypes_4[_i];
var valueSchema = helper_1.muPrimitiveSchema(muType);
if (valueSchema) {
var arraySchema = new __1.MuArray(valueSchema);
t.ok(arraySchema.equal([], []));
var array = randomArray(1, muType);
t.ok(arraySchema.equal(arraySchema.clone(array), array));
var a = randomArray(1, muType, 5);
var b = randomArray(1, muType, 5);
t.equal(arraySchema.equal(a, b), equal(a, b));
for (var i = 0; i < 10; ++i) {
a = randomArray(1, muType);
b = randomArray(1, muType);
t.equal(arraySchema.equal(a, b), equal(a, b));
}
}
}
for (var _a = 0, muPrimitiveTypes_5 = constants_1.muPrimitiveTypes; _a < muPrimitiveTypes_5.length; _a++) {
var muType = muPrimitiveTypes_5[_a];
var valueSchema = helper_1.muPrimitiveSchema(muType);
if (valueSchema) {
var arraySchema = new __1.MuArray(new __1.MuArray(valueSchema));
t.ok(arraySchema.equal([], []));
var array = randomArray(2, muType);
t.ok(arraySchema.equal(arraySchema.clone(array), array));
var a = randomArray(2, muType, 5);
var b = randomArray(2, muType, 5);
t.equal(arraySchema.equal(a, b), equal(a, b));
for (var i = 0; i < 10; ++i) {
a = randomArray(2, muType);
b = randomArray(2, muType);
t.equal(arraySchema.equal(a, b), equal(a, b));
}
}
}
for (var _b = 0, muPrimitiveTypes_6 = constants_1.muPrimitiveTypes; _b < muPrimitiveTypes_6.length; _b++) {
var muType = muPrimitiveTypes_6[_b];
var valueSchema = helper_1.muPrimitiveSchema(muType);
if (valueSchema) {
var arraySchema = new __1.MuArray(new __1.MuArray(new __1.MuArray(valueSchema)));
t.ok(arraySchema.equal([], []));
var array = randomArray(3, muType);
t.ok(arraySchema.equal(arraySchema.clone(array), array));
var a = randomArray(3, muType, 5);
var b = randomArray(3, muType, 5);
t.equal(arraySchema.equal(a, b), equal(a, b));
for (var i = 0; i < 10; ++i) {
a = randomArray(3, muType);
b = randomArray(3, muType);
t.equal(arraySchema.equal(a, b), equal(a, b));
}
}
}
t.end();
});
test('array (flat) - diff() & patch()', function (t) {
for (var _i = 0, muPrimitiveTypes_7 = constants_1.muPrimitiveTypes; _i < muPrimitiveTypes_7.length; _i++) {
var muType = muPrimitiveTypes_7[_i];
var valueSchema = helper_1.muPrimitiveSchema(muType);
if (valueSchema) {
var arraySchema = new __1.MuArray(valueSchema);
var testPatching = helper_1.testPatchingFactory(t, arraySchema);
var arr = randomArray(1, muType);
testPatching(arr, arr);
var testPatchingPair = helper_1.testPatchingPairFactory(t, arraySchema);
for (var i = 0; i < 200; ++i) {
testPatchingPair(randomArray(1, muType), randomArray(1, muType));
}
}
}
t.end();
});
test('array (nested) - diff() & patch()', function (t) {
for (var _i = 0, muPrimitiveTypes_8 = constants_1.muPrimitiveTypes; _i < muPrimitiveTypes_8.length; _i++) {
var muType = muPrimitiveTypes_8[_i];
var valueSchema = helper_1.muPrimitiveSchema(muType);
if (valueSchema) {
var arraySchema = new __1.MuArray(new __1.MuArray(valueSchema));
var testPatchingPair = helper_1.testPatchingPairFactory(t, arraySchema);
for (var i = 0; i < 200; ++i) {
testPatchingPair(randomArray(2, muType), randomArray(2, muType));
}
arraySchema = new __1.MuArray(new __1.MuArray(new __1.MuArray(valueSchema)));
testPatchingPair = helper_1.testPatchingPairFactory(t, arraySchema);
for (var i = 0; i < 200; ++i) {
testPatchingPair(randomArray(3, muType), randomArray(3, muType));
}
arraySchema = new __1.MuArray(new __1.MuArray(new __1.MuArray(new __1.MuArray(valueSchema))));
testPatchingPair = helper_1.testPatchingPairFactory(t, arraySchema);
for (var i = 0; i < 200; ++i) {
testPatchingPair(randomArray(4, muType), randomArray(4, muType));
}
var testPatching = helper_1.testPatchingFactory(t, arraySchema);
var arr = randomArray(4, muType);
testPatching(arr, arr);
}
}
t.end();
});
//# sourceMappingURL=array.js.map