One-wise combinatorial testing generator
A 1-wise (a.k.a. 1-way) testing generator guarantees that at least one value of each group appears in the generated tests. The produced array has exactly the length of the largest input array.
This is a fast and simple implementation of a 1-wise testing generator. No external dependencies. Uses semantic versioning.
npm install one-wise
oneWise( {
"foo": [ "x", "y" ],
"bar": [ "a", "b", "c", "d" ],
"baz": [ "f", "g" ]
} )
will return
[
{ "foo": "x", "bar": "a", "baz": "f" },
{ "foo": "y", "bar": "b", "baz": "g" },
{ "foo": "x", "bar": "c", "baz": "f" },
{ "foo": "y", "bar": "d", "baz": "g" }
]
Note: the values of foo
and bar
in the last two lines are picked randomly.
It uses JavaScript's Math.random()
, but a predictive pseudo-random generator function (e.g., seedrandom) can be passed as a second argument. Such function must work like Math.random()
and return a number >= 0 and < 1.
oneWise( /* your object */, myPseudoRandomNumberGenerator );
<script crossorigin src="https://unpkg.com/one-wise" ></script>
<script>
console.log(
oneWise( {
"foo": [ "x", "y" ],
"bar": [ 1, 2, 3 ]
} )
);
</script>
Option 2: Using unpkg and ESM:
<script crossorigin src="https://unpkg.com/one-wise/index.esm.js" ></script>
<script>
import oneWise from 'one-wise';
</script>
const oneWise = require('one-wise');
import oneWise from 'one-wise';
obj
{object} - The given object.prngFunc
{function} - Pseudo-random number generator function used to pick array elements to repeat. Defaults toMath.random
.
- shuffle-obj-arrays - Shuffles the arrays of the given object. A custom PRNG can be used.
- seedrandom - Predictive PRNG