public void Repl_TernaryTuple_Empty()
        {
            var expected = Enumerable.Empty <Tuple <char, char, char> >();

            char[] iterable = "AB".ToCharArray();

            List <Tuple <char, char, char> > actual = Nitre.CombinationsTernary(iterable).ToList();

            Assert.Equal(expected, actual);
        }
        public void Repl_TernaryTuple_Long()
        {
            var expected = new string[]
            {
                "ABC", "ABD", "ABE", "ABF", "ACD", "ACE", "ACF", "ADE", "ADF", "AEF", "BCD", "BCE", "BCF", "BDE", "BDF", "BEF", "CDE", "CDF", "CEF", "DEF"
            };

            char[] iterable = "ABCDEF".ToCharArray();

            var actual = Nitre.CombinationsTernary(iterable).Select(item => new string(new char[] { item.Item1, item.Item2, item.Item3 })).ToList();

            Assert.Equal(expected, actual);
        }
        public void Repl_TernaryTuple()
        {
            List <Tuple <char, char, char> > expected = new List <Tuple <char, char, char> >
            {
                Tuple.Create('A', 'B', 'C'),
                Tuple.Create('A', 'B', 'D'),
                Tuple.Create('A', 'C', 'D'),
                Tuple.Create('B', 'C', 'D')
            };

            char[] iterable = "ABCD".ToCharArray();

            List <Tuple <char, char, char> > actual = Nitre.CombinationsTernary(iterable).ToList();

            Assert.Equal(expected, actual);
        }
        public void Repl_TernaryTuple_VeryLong()
        {
            var expected = new string[]
            {
                "IJK", "IJL", "IJM", "IJN", "IJO", "IJP", "IKL", "IKM", "IKN", "IKO", "IKP", "ILM", "ILN", "ILO", "ILP", "IMN", "IMO",
                "IMP", "INO", "INP", "IOP", "JKL", "JKM", "JKN", "JKO", "JKP", "JLM", "JLN", "JLO", "JLP", "JMN", "JMO", "JMP", "JNO",
                "JNP", "JOP", "KLM", "KLN", "KLO", "KLP", "KMN", "KMO", "KMP", "KNO", "KNP", "KOP", "LMN", "LMO", "LMP", "LNO", "LNP",
                "LOP", "MNO", "MNP", "MOP", "NOP"
            };

            char[] iterable = "IJKLMNOP".ToCharArray();

            var actual = Nitre.CombinationsTernary(iterable).Select(item => new string(new char[] { item.Item1, item.Item2, item.Item3 })).ToList();

            Assert.Equal(expected, actual);
        }