public void FilterCombinations_WithEmptyFilterLists_ReturnsAllCombinations()
        {
            var s = new PossibilitiesPossibilitiesSquareGroup(new[] { 1 }, 2);

            var allCombinations = s.AllCombinations();
            var filteredCombinations = s.FilterCombinations(new PartiallyCompleteGroup(new BitGroup(31), new BitGroup(31)));

            Assert.That(allCombinations.HasExactBitSets(filteredCombinations));
        }
        [TestCase(6, new[] { 1, 1 }, 5, "00100", "10000", new[] { "00101" })] // zeroth cell is 0 and 2nd cell is 1 
        public void FilterCombinations(int testCaseId, int[] inputSequences, int listLength, string blackKnownSquares, string whiteKnownSquares, string[] expectedBitSets)
        {
            var s = new PossibilitiesPossibilitiesSquareGroup(inputSequences, listLength);

            var filteredCombinations = s.FilterCombinations(new PartiallyCompleteGroup(new BitGroup(31, blackKnownSquares), new BitGroup(31, whiteKnownSquares)));

            Assert.That(filteredCombinations.HasExactBitSets(expectedBitSets), Is.True);
        }