fast-check
Version:
Property based testing framework for JavaScript (like QuickCheck)
64 lines (63 loc) • 2.84 kB
JavaScript
;
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;