﻿using AsmodeeDigital.Common.Plugin.Manager.Event;
using System;

namespace AsmodeeDigital.Common.Plugin.Tests.Mocks
{
    /// <summary>
    /// Mock of Event Manager
    /// </summary>
    public class EventManagerTest : IEventManager
    {
        /// <summary>
        /// Execute immediately the action
        /// </summary>
        /// <param name="action">Action to execute</param>
        public void QueueEvent(Action action)
        {
            action();
        }

        /// <summary>
        /// Execute immediately the parameterized action
        /// </summary>
        /// <param name="action">Action to execute</param>
        /// <param name="parameter">Parameter of the action</param>
        public void QueueEvent<T>(Action<T> action, T parameter)
        {
            action(parameter);
        }

        /// <summary>
        /// Execute immediately the parameterized action
        /// </summary>
        /// <param name="action">Action to execute</param>
        /// <param name="parameter">Parameter of the action</param>
        public void QueueEvent<T1, T2>(Action<T1, T2> action, T1 parameter1, T2 parameter2)
        {
            action(parameter1, parameter2);
        }
    }
}
