UNPKG

fast-check

Version:

Property based testing framework for JavaScript (like QuickCheck)

33 lines (32 loc) 1.15 kB
"use strict"; 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;