public void ApplyShouldInsertStringInDifferentPositions(int position)
        {
            state.CurrentPosition = position;
            command = new InsertStringCommand("1");

            var result = command.Apply(state);

            result.Should().BeTrue();
            state.Text[position].Should().Be('1');
            state.CurrentPosition.Should().Be(position + 1);
        }
        public void ApplyShouldInsertStringWithDifferentLength(string insertString)
        {
            var insertPosition = 3;

            state.CurrentPosition = insertPosition;
            command = new InsertStringCommand(insertString);

            var result = command.Apply(state);

            result.Should().BeTrue();
            state.Text.ToString().Substring(insertPosition, insertString.Length).Should().BeEquivalentTo(insertString);
            state.CurrentPosition.Should().Be(insertPosition + insertString.Length);
        }
        public void RevertShouldRestoreStateInDifferentPositions(int position)
        {
            state.CurrentPosition = position;
            command = new InsertStringCommand("1");
            var oldState    = new ControllerState(state);
            var applyResult = command.Apply(state);

            applyResult.Should().BeTrue();

            var result = command.Revert(state);

            result.Should().BeTrue();
            state.Should().Be(oldState);
        }
        public void RevertShouldRestoreStateWithDifferentLength(string insertString)
        {
            var insertPosition = 3;

            state.CurrentPosition = insertPosition;
            command = new InsertStringCommand(insertString);
            var oldState    = new ControllerState(state);
            var applyResult = command.Apply(state);

            applyResult.Should().BeTrue();

            var result = command.Revert(state);

            result.Should().BeTrue();
            state.Should().Be(oldState);
        }