public void SuffixTreeSimpleCharSet4Text21WithStep()
        {
            // arrange
            int step       = 9879;
            int bufferSize = 1000;
            int textLength = 21;

            char[] alphabet = new char[] { 'a', 'c', 'g', 't' };
            SuffixTreeAccumulator statisticAccumulator = new SuffixTreeAccumulator(new SuffixTreeSaver(), BruteForceStringCompare.AlgorythmName,
                                                                                   textLength, bufferSize, alphabet.Length);

            statisticAccumulator.Delete();
            int  size             = textLength;
            long max              = 1L << (2 * size);
            long sequenceAsNumber = 0;

            int[]  sequence     = new int[size];
            char[] charSequence = new char[size];
            long[] masks        = new long[size];

            long mask = 3;

            for (int i = 0; i < size; i++)
            {
                masks[i] = mask;
                mask   <<= 2;
            }
            // act
            while (sequenceAsNumber < max)
            {
                int shift = 0;
                for (int i = 0; i < size; i++)
                {
                    sequence[i] = (int)((sequenceAsNumber & masks[i]) >> shift);
                    shift      += 2;
                }
                sequenceAsNumber += step;
                charSequence      = sequence.Select(j => alphabet[j]).ToArray();
                string           text             = new string(charSequence);
                SuffixTreeSimple suffixTreeSimple = new SuffixTreeSimple()
                {
                    StatisticAccumulator = statisticAccumulator
                };
                // act
                suffixTreeSimple.Execute(text);
            }
            statisticAccumulator.SaveRemain();

            // assert
        }
        public void SuffixTreeSimpleVariant3()
        {
            // arrange
            string           text         = "aaaca";
            string           expectedTree = "[0-0]([0-0]([5-5](),[1-1]([2-5](),[3-5]()),[3-5]()),[3-5]())";
            SuffixTreeSimple suffixTree   = new SuffixTreeSimple()
            {
                StatisticAccumulator = new FakeSuffixTreeAccumulator()
            };

            // act
            suffixTree.Execute(text);
            // assert
            var result = suffixTree.NodePresentationAsString();

            Assert.AreEqual(result, expectedTree, "Wrong tree.");
        }
            //--------------------------------------------------------------------------------------
            protected override bool MakeAction()
            {
                if (_fCurrentPosition == _fSize - 1 && --_stepCounter == 0)
                {
                    string           text             = new string(_fCurrentSet.Select(i => _charSet[i]).ToArray());
                    SuffixTreeSimple suffixTreeSimple = new SuffixTreeSimple()
                    {
                        StatisticAccumulator = _statisticAccumulator
                    };
                    // act
                    suffixTreeSimple.Execute(text);
                    // assert

                    _stepCounter = _step;
                }

                return(false);
            }