fast-check
Version:
Property based testing framework for JavaScript (like QuickCheck)
33 lines (32 loc) • 1.15 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.record = void 0;
const OptionArbitrary_1 = require("./OptionArbitrary");
const TupleArbitrary_1 = require("./TupleArbitrary");
function rawRecord(recordModel) {
const keys = Object.keys(recordModel);
const arbs = keys.map((v) => recordModel[v]);
return TupleArbitrary_1.genericTuple(arbs).map((gs) => {
const obj = {};
for (let idx = 0; idx !== keys.length; ++idx)
obj[keys[idx]] = gs[idx];
return obj;
});
}
function record(recordModel, constraints) {
if (constraints == null || constraints.withDeletedKeys !== true) {
return rawRecord(recordModel);
}
const updatedRecordModel = {};
for (const k of Object.keys(recordModel))
updatedRecordModel[k] = OptionArbitrary_1.option(recordModel[k].map((v) => ({ value: v })));
return rawRecord(updatedRecordModel).map((obj) => {
const nobj = {};
for (const k of Object.keys(obj)) {
if (obj[k] != null)
nobj[k] = obj[k].value;
}
return nobj;
});
}
exports.record = record;