Nonlinear Performance Magnification

    test-mixer
    TypeScript icon, indicating that this package has built-in type declarations

    3.0.11 • Public • Published

    test-mixer

    Test helper to generate function opts object variations

    Install

    The latest version is ESM only: Node 12+ is needed to use it and it must be imported instead of required. If your project is not on ESM yet and you want to use require, use an older version of this program, 2.1.0.

    npm i test-mixer

    Quick Take

    import { strict as assert } from "assert";
    
    import { mixer } from "test-mixer";
    
    // check all possible combinations of all boolean opts:
    const defaultOpts = {
      scrapeWindshield: true,
      checkOil: true,
      inflateTires: false,
      extinguishersCount: 1, // as non-boolean will be ignored
    };
    
    // generates 2^3 = 8 combinations all possible bools
    assert.deepEqual(
      mixer(
        {
          // empty first arg object means you want all combinations
        },
        defaultOpts
      ),
      [
        {
          scrapeWindshield: false,
          checkOil: false,
          inflateTires: false,
          extinguishersCount: 1,
        },
        {
          scrapeWindshield: true,
          checkOil: false,
          inflateTires: false,
          extinguishersCount: 1,
        },
        {
          scrapeWindshield: false,
          checkOil: true,
          inflateTires: false,
          extinguishersCount: 1,
        },
        {
          scrapeWindshield: true,
          checkOil: true,
          inflateTires: false,
          extinguishersCount: 1,
        },
        {
          scrapeWindshield: false,
          checkOil: false,
          inflateTires: true,
          extinguishersCount: 1,
        },
        {
          scrapeWindshield: true,
          checkOil: false,
          inflateTires: true,
          extinguishersCount: 1,
        },
        {
          scrapeWindshield: false,
          checkOil: true,
          inflateTires: true,
          extinguishersCount: 1,
        },
        {
          scrapeWindshield: true,
          checkOil: true,
          inflateTires: true,
          extinguishersCount: 1,
        },
      ]
    );
    
    // let's "pin" a value, prepare two sets of options objects,
    // one where scrapeWindshield === true and another with "false"
    
    // you'll get 2 ^ (3-1) = 4 variations:
    const variationsWithScrapeWindshieldOn = mixer(
      {
        scrapeWindshield: true,
      },
      defaultOpts
    );
    assert.deepEqual(variationsWithScrapeWindshieldOn, [
      {
        scrapeWindshield: true, // <--- pinned
        checkOil: false,
        inflateTires: false,
        extinguishersCount: 1,
      },
      {
        scrapeWindshield: true, // <--- pinned
        checkOil: true,
        inflateTires: false,
        extinguishersCount: 1,
      },
      {
        scrapeWindshield: true, // <--- pinned
        checkOil: false,
        inflateTires: true,
        extinguishersCount: 1,
      },
      {
        scrapeWindshield: true, // <--- pinned
        checkOil: true,
        inflateTires: true,
        extinguishersCount: 1,
      },
    ]);
    
    // also 4 variations, similar but with scrapeWindshield === false pinned:
    const variationsWithScrapeWindshieldOff = mixer(
      {
        scrapeWindshield: false,
      },
      defaultOpts
    );
    assert.equal(variationsWithScrapeWindshieldOff.length, 4);

    Documentation

    Please visit codsen.com for a full description of the API.

    Contributing

    To report bugs or request features or assistance, raise an issue on GitHub.

    Licence

    MIT License

    Copyright (c) 2010-2022 Roy Revelt and other contributors

    ok codsen star

    Install

    npm i test-mixer

    DownloadsWeekly Downloads

    3,567

    Version

    3.0.11

    License

    MIT

    Unpacked Size

    32.4 kB

    Total Files

    12

    Last publish

    Collaborators

    • royston