fast-check
Version:
Property based testing framework for JavaScript (like QuickCheck)
33 lines (32 loc) • 1.92 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.base64String = base64String;
const array_1 = require("./array");
const base64_1 = require("./base64");
const MaxLengthFromMinLength_1 = require("./_internals/helpers/MaxLengthFromMinLength");
const CodePointsToString_1 = require("./_internals/mappers/CodePointsToString");
const StringToBase64_1 = require("./_internals/mappers/StringToBase64");
const SlicesForStringBuilder_1 = require("./_internals/helpers/SlicesForStringBuilder");
function base64String(constraints = {}) {
const { minLength: unscaledMinLength = 0, maxLength: unscaledMaxLength = MaxLengthFromMinLength_1.MaxLengthUpperBound, size } = constraints;
const minLength = unscaledMinLength + 3 - ((unscaledMinLength + 3) % 4);
const maxLength = unscaledMaxLength - (unscaledMaxLength % 4);
const requestedSize = constraints.maxLength === undefined && size === undefined ? '=' : size;
if (minLength > maxLength)
throw new Error('Minimal length should be inferior or equal to maximal length');
if (minLength % 4 !== 0)
throw new Error('Minimal length of base64 strings must be a multiple of 4');
if (maxLength % 4 !== 0)
throw new Error('Maximal length of base64 strings must be a multiple of 4');
const charArbitrary = (0, base64_1.base64)();
const experimentalCustomSlices = (0, SlicesForStringBuilder_1.createSlicesForStringLegacy)(charArbitrary, CodePointsToString_1.codePointsToStringUnmapper);
const enrichedConstraints = {
minLength,
maxLength,
size: requestedSize,
experimentalCustomSlices,
};
return (0, array_1.array)(charArbitrary, enrichedConstraints)
.map(CodePointsToString_1.codePointsToStringMapper, CodePointsToString_1.codePointsToStringUnmapper)
.map(StringToBase64_1.stringToBase64Mapper, StringToBase64_1.stringToBase64Unmapper);
}
;