fast-check
Version:
Property based testing framework for JavaScript (like QuickCheck)
35 lines (34 loc) • 3.04 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ipV6 = exports.ipV4Extended = exports.ipV4 = void 0;
const ArrayArbitrary_1 = require("./ArrayArbitrary");
const ConstantArbitrary_1 = require("./ConstantArbitrary");
const IntegerArbitrary_1 = require("./IntegerArbitrary");
const OneOfArbitrary_1 = require("./OneOfArbitrary");
const StringArbitrary_1 = require("./StringArbitrary");
const TupleArbitrary_1 = require("./TupleArbitrary");
function ipV4() {
return TupleArbitrary_1.tuple(IntegerArbitrary_1.nat(255), IntegerArbitrary_1.nat(255), IntegerArbitrary_1.nat(255), IntegerArbitrary_1.nat(255)).map(([a, b, c, d]) => `${a}.${b}.${c}.${d}`);
}
exports.ipV4 = ipV4;
function ipV4Extended() {
const natRepr = (maxValue) => TupleArbitrary_1.tuple(ConstantArbitrary_1.constantFrom('dec', 'oct', 'hex'), IntegerArbitrary_1.nat(maxValue)).map(([style, v]) => {
switch (style) {
case 'oct':
return `0${Number(v).toString(8)}`;
case 'hex':
return `0x${Number(v).toString(16)}`;
case 'dec':
default:
return `${v}`;
}
});
return OneOfArbitrary_1.oneof(TupleArbitrary_1.tuple(natRepr(255), natRepr(255), natRepr(255), natRepr(255)).map(([a, b, c, d]) => `${a}.${b}.${c}.${d}`), TupleArbitrary_1.tuple(natRepr(255), natRepr(255), natRepr(65535)).map(([a, b, c]) => `${a}.${b}.${c}`), TupleArbitrary_1.tuple(natRepr(255), natRepr(16777215)).map(([a, b]) => `${a}.${b}`), natRepr(4294967295));
}
exports.ipV4Extended = ipV4Extended;
function ipV6() {
const h16Arb = StringArbitrary_1.hexaString(1, 4);
const ls32Arb = OneOfArbitrary_1.oneof(TupleArbitrary_1.tuple(h16Arb, h16Arb).map(([a, b]) => `${a}:${b}`), ipV4());
return OneOfArbitrary_1.oneof(TupleArbitrary_1.tuple(ArrayArbitrary_1.array(h16Arb, 6, 6), ls32Arb).map(([eh, l]) => `${eh.join(':')}:${l}`), TupleArbitrary_1.tuple(ArrayArbitrary_1.array(h16Arb, 5, 5), ls32Arb).map(([eh, l]) => `::${eh.join(':')}:${l}`), TupleArbitrary_1.tuple(ArrayArbitrary_1.array(h16Arb, 0, 1), ArrayArbitrary_1.array(h16Arb, 4, 4), ls32Arb).map(([bh, eh, l]) => `${bh.join(':')}::${eh.join(':')}:${l}`), TupleArbitrary_1.tuple(ArrayArbitrary_1.array(h16Arb, 0, 2), ArrayArbitrary_1.array(h16Arb, 3, 3), ls32Arb).map(([bh, eh, l]) => `${bh.join(':')}::${eh.join(':')}:${l}`), TupleArbitrary_1.tuple(ArrayArbitrary_1.array(h16Arb, 0, 3), ArrayArbitrary_1.array(h16Arb, 2, 2), ls32Arb).map(([bh, eh, l]) => `${bh.join(':')}::${eh.join(':')}:${l}`), TupleArbitrary_1.tuple(ArrayArbitrary_1.array(h16Arb, 0, 4), h16Arb, ls32Arb).map(([bh, eh, l]) => `${bh.join(':')}::${eh}:${l}`), TupleArbitrary_1.tuple(ArrayArbitrary_1.array(h16Arb, 0, 5), ls32Arb).map(([bh, l]) => `${bh.join(':')}::${l}`), TupleArbitrary_1.tuple(ArrayArbitrary_1.array(h16Arb, 0, 6), h16Arb).map(([bh, eh]) => `${bh.join(':')}::${eh}`), TupleArbitrary_1.tuple(ArrayArbitrary_1.array(h16Arb, 0, 7)).map(([bh]) => `${bh.join(':')}::`));
}
exports.ipV6 = ipV6;