namespace Bit.Test.Common.Helpers; public static class TestCaseHelper { public static IEnumerable> GetCombinations(params T[] items) { var count = Math.Pow(2, items.Length); for (var i = 0; i < count; i++) { var str = Convert.ToString(i, 2).PadLeft(items.Length, '0'); List combination = new(); for (var j = 0; j < str.Length; j++) { if (str[j] == '1') { combination.Add(items[j]); } } yield return combination; } } public static IEnumerable> GetCombinationsOfMultipleLists(params IEnumerable[] optionLists) { if (!optionLists.Any()) { yield break; } foreach (var item in optionLists.First()) { var itemArray = new[] { item }; if (optionLists.Length == 1) { yield return itemArray; } foreach (var nextCombination in GetCombinationsOfMultipleLists(optionLists.Skip(1).ToArray())) { yield return itemArray.Concat(nextCombination); } } } }