public void PrepareActorState(ActorId actorId, IDictionary <string, object> stateValues)
        {
            MockedInternalActorState actorState;

            if (_trackedActors.ContainsKey(actorId))
            {
                actorState = _trackedActors[actorId];
            }
            else
            {
                actorState = new MockedInternalActorState();
                _trackedActors.Add(actorId, actorState);
            }

            foreach (var stateValue in stateValues)
            {
                if (actorState.State.ContainsKey(stateValue.Key))
                {
                    actorState.State[stateValue.Key] = stateValue.Value;
                }
                else
                {
                    actorState.State.Add(stateValue.Key, stateValue.Value);
                }
            }
        }
        public Task SaveStateAsync(ActorId actorId, IReadOnlyCollection <ActorStateChange> stateChanges,
                                   CancellationToken cancellationToken = new CancellationToken())
        {
            ActionsPerformed.Add(nameof(SaveStateAsync));
            MockedInternalActorState mockedInternalActorState;

            if (_trackedActors.ContainsKey(actorId))
            {
                mockedInternalActorState = _trackedActors[actorId];
            }
            else
            {
                mockedInternalActorState = new MockedInternalActorState();
                _trackedActors.Add(actorId, mockedInternalActorState);
            }

            foreach (var actorStateChange in stateChanges)
            {
                if (actorStateChange.ChangeKind == StateChangeKind.Add)
                {
                    mockedInternalActorState.State.Add(actorStateChange.StateName, actorStateChange.Value);
                }
                else if (actorStateChange.ChangeKind == StateChangeKind.Update)
                {
                    mockedInternalActorState.State[actorStateChange.StateName] = actorStateChange.Value;
                }
                else if (actorStateChange.ChangeKind == StateChangeKind.Remove)
                {
                    mockedInternalActorState.State.Remove(actorStateChange.StateName);
                }
            }

            return(Task.FromResult(true));
        }
        public Task SaveReminderAsync(ActorId actorId, IActorReminder reminder,
                                      CancellationToken cancellationToken = new CancellationToken())
        {
            ActionsPerformed.Add(nameof(SaveReminderAsync));

            if (_trackedActors.ContainsKey(actorId))
            {
                var actorState = _trackedActors[actorId];
                actorState.Reminders.Add(reminder.Name, reminder);
            }
            else
            {
                var actorState = new MockedInternalActorState();
                actorState.Reminders.Add(reminder.Name, reminder);
                _trackedActors.Add(actorId, actorState);
            }
            return(Task.FromResult(true));
        }