// Copyright 2024 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only

import { assert } from 'chai';

import { generateConfigMatrix } from '../../test-helpers/generateConfigMatrix.std.ts';

describe('generateConfigMatrix', () => {
  it('generates an empty list', () => {
    assert.deepStrictEqual(generateConfigMatrix({}), []);

    assert.deepStrictEqual(
      generateConfigMatrix({
        prop1: [],
        prop2: [],
      }),
      []
    );
  });

  it('generates a single-element list', () => {
    assert.deepStrictEqual(
      generateConfigMatrix({
        prop1: ['a'],
        prop2: ['b'],
      }),
      [
        {
          prop1: 'a',
          prop2: 'b',
        },
      ]
    );
  });

  it('generates multiple permutations', () => {
    assert.deepStrictEqual(
      generateConfigMatrix({
        prop1: ['a', 'b'],
        prop2: ['c', 'd'],
      }),
      [
        { prop1: 'a', prop2: 'c' },
        { prop1: 'b', prop2: 'c' },
        { prop1: 'a', prop2: 'd' },
        { prop1: 'b', prop2: 'd' },
      ]
    );
  });
});
