UNPKG

covertable

Version:

Efficient TypeScript library for pairwise testing, generating minimal covering arrays with constraint support.

2 lines (1 loc) 1.66 kB
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});function a(t){if(typeof t=="object"&&t!==null){if("__val"in t)return{value:t.value};if("operator"in t)return{operand:t}}return typeof t=="string"&&t.startsWith("$")?{operand:t.slice(1)}:{value:t}}function l(t,e,r){const n=a(e),u=a(r),i="operand"in n?n.operand:n.value;return"operand"in u?{operator:t,left:i,right:u.operand}:{operator:t,left:i,value:u.value}}function o(t,e,r){const n=a(e),u=a(r),i="operand"in n?n.operand:n.value;return"operand"in u?{operator:t,left:i,right:u.operand}:{operator:t,left:i,value:u.value}}function d(t,e){let r=o(t,e[0],e[1]);for(let n=2;n<e.length;n++){const u=a(e[n]);"operand"in u?r={operator:t,left:r,right:u.operand}:r={operator:t,left:r,value:u.value}}return r}class f{eq(e,r){return l("eq",e,r)}ne(e,r){return l("ne",e,r)}gt(e,r){return l("gt",e,r)}lt(e,r){return l("lt",e,r)}gte(e,r){return l("gte",e,r)}lte(e,r){return l("lte",e,r)}in(e,r){const n=a(e);return{operator:"in",left:"operand"in n?n.operand:n.value,values:r}}and(...e){return{operator:"and",conditions:e}}or(...e){return{operator:"or",conditions:e}}not(e){return{operator:"not",condition:e}}add(e,r){return o("add",e,r)}sub(e,r){return o("sub",e,r)}mul(e,r){return o("mul",e,r)}div(e,r){return o("div",e,r)}mod(e,r){return o("mod",e,r)}pow(e,r){return o("pow",e,r)}sum(...e){if(e.length<2)throw new Error("sum() requires at least 2 arguments");return d("add",e)}product(...e){if(e.length<2)throw new Error("product() requires at least 2 arguments");return d("mul",e)}fn(e,r){return{operator:"fn",requires:e,evaluate:r}}val(e){return{__val:!0,value:e}}}exports.Constraint=f;