示例#1
0
        public void GeneratePermutationsForHintDataTest_SimpleShift()
        {
            int[] hintData = new int[] { 2 };
            var   length   = 4;

            /// [true, true, false, false]
            var expected1 = new BitArray(4, false);

            expected1.Set(0, true);
            expected1.Set(1, true);

            /// [false, true, true, false]
            var expected2 = new BitArray(4, false);

            expected2.Set(1, true);
            expected2.Set(2, true);

            /// [false, false, true, true]
            var expected3 = new BitArray(4, false);

            expected3.Set(2, true);
            expected3.Set(3, true);

            var permutations = new List <BitArray>();

            PermutationGenerator.GeneratePermutationsForHintData(hintData, length, permutations.Add);

            Assert.Equal(3, permutations.Count);
            Assert.Contains(expected1, permutations);
            Assert.Contains(expected2, permutations);
            Assert.Contains(expected3, permutations);
        }
示例#2
0
        public void GeneratePermutationsForHintDataTest_Full()
        {
            int[] hintData     = new int[] { 4 };
            var   permutations = new List <BitArray>();

            PermutationGenerator.GeneratePermutationsForHintData(hintData, 4, permutations.Add);

            Assert.Equal(1, permutations.Count);
            Assert.True(permutations[0].Cast <bool>().All(b => b == true));
        }
示例#3
0
        public void GeneratePermutationsForHintDataTest_Full_Gaps()
        {
            // [true, false, true, true]
            int[] hintData     = new int[] { 1, 2 };
            var   length       = 4;
            var   permutations = new List <BitArray>();

            PermutationGenerator.GeneratePermutationsForHintData(hintData, length, permutations.Add);

            Assert.Equal(1, permutations.Count);
            var result = permutations[0];

            Assert.Equal(true, result[0]);
            Assert.Equal(false, result[1]);
            Assert.Equal(true, result[2]);
            Assert.Equal(true, result[3]);
        }