UNPKG

fast-check

Version:

Property based testing framework for JavaScript (like QuickCheck)

64 lines (63 loc) 2.84 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.base64String = exports.hexaString = exports.fullUnicodeString = exports.unicodeString = exports.string16bits = exports.asciiString = exports.string = exports.stringOf = void 0; const ArrayArbitrary_1 = require("./ArrayArbitrary"); const CharacterArbitrary_1 = require("./CharacterArbitrary"); function StringArbitrary(charArb, aLength, bLength) { const arrayArb = aLength != null ? (bLength != null ? ArrayArbitrary_1.array(charArb, aLength, bLength) : ArrayArbitrary_1.array(charArb, aLength)) : ArrayArbitrary_1.array(charArb); return arrayArb.map((tab) => tab.join('')); } function Base64StringArbitrary(minLength, maxLength) { 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'); return StringArbitrary(CharacterArbitrary_1.base64(), minLength, maxLength).map((s) => { switch (s.length % 4) { case 0: return s; case 3: return `${s}=`; case 2: return `${s}==`; default: return s.slice(1); } }); } function stringOf(charArb, aLength, bLength) { return StringArbitrary(charArb, aLength, bLength); } exports.stringOf = stringOf; function string(aLength, bLength) { return StringArbitrary(CharacterArbitrary_1.char(), aLength, bLength); } exports.string = string; function asciiString(aLength, bLength) { return StringArbitrary(CharacterArbitrary_1.ascii(), aLength, bLength); } exports.asciiString = asciiString; function string16bits(aLength, bLength) { return StringArbitrary(CharacterArbitrary_1.char16bits(), aLength, bLength); } exports.string16bits = string16bits; function unicodeString(aLength, bLength) { return StringArbitrary(CharacterArbitrary_1.unicode(), aLength, bLength); } exports.unicodeString = unicodeString; function fullUnicodeString(aLength, bLength) { return StringArbitrary(CharacterArbitrary_1.fullUnicode(), aLength, bLength); } exports.fullUnicodeString = fullUnicodeString; function hexaString(aLength, bLength) { return StringArbitrary(CharacterArbitrary_1.hexa(), aLength, bLength); } exports.hexaString = hexaString; function base64String(aLength, bLength) { const minLength = aLength != null && bLength != null ? aLength : 0; const maxLength = bLength == null ? (aLength == null ? 16 : aLength) : bLength; return Base64StringArbitrary(minLength + 3 - ((minLength + 3) % 4), maxLength - (maxLength % 4)); } exports.base64String = base64String;