public void AdddingCharacterToCombatSequence_CharacterIsOrderedByPhasesAndDex()
        {
            CombatSequence sequence = Factory.SequenceWithFastMediumAndSlowCharacters;

            sequence.StartCombat();

            //segment 12
            Segment             currentSegment   = sequence.ActiveSegment;
            List <Phase>        phases           = currentSegment.CombatPhases;
            HeroSystemCharacter currentCharacter = phases.First().Character;

            Assert.AreEqual("Fast Character", currentCharacter.Name);

            currentCharacter = phases.ElementAt(1).Character;
            Assert.AreEqual("Medium Character", currentCharacter.Name);

            currentCharacter = phases.ElementAt(2).Character;
            Assert.AreEqual("Slow Character", currentCharacter.Name);


            //segment 2
            currentSegment   = sequence.SegmentAfter(currentSegment);
            currentSegment   = sequence.SegmentAfter(currentSegment);
            phases           = currentSegment.CombatPhases;
            currentCharacter = phases.ElementAt(0).Character;
            Assert.AreEqual("Fast Character", currentCharacter.Name);

            //segment 3
            currentSegment   = sequence.SegmentAfter(currentSegment);
            phases           = currentSegment.CombatPhases;
            currentCharacter = phases.ElementAt(0).Character;
            Assert.AreEqual("Medium Character", currentCharacter.Name);

            //segment 4
            currentSegment   = sequence.SegmentAfter(currentSegment);
            phases           = currentSegment.CombatPhases;
            currentCharacter = phases.First().Character;
            Assert.AreEqual("Fast Character", currentCharacter.Name);

            //segment 6
            currentSegment   = sequence.SegmentAfter(currentSegment);
            currentSegment   = sequence.SegmentAfter(currentSegment);
            phases           = currentSegment.CombatPhases;
            currentCharacter = phases.First().Character;
            Assert.AreEqual("Fast Character", currentCharacter.Name);

            currentCharacter = phases.ElementAt(1).Character;
            Assert.AreEqual("Medium Character", currentCharacter.Name);

            currentCharacter = phases.ElementAt(2).Character;
            Assert.AreEqual("Slow Character", currentCharacter.Name);
        }