'Implement a list of interfaces during Unit Test using NUnit

I'm currently studying C# and I'm quiet stunned over a simple task. I have this code to test:

    public interface IAppointment
{
    public string PatientName { get; set; }
    public IEnumerable<DateTime> ProposedTimes { get; set; }
    public DateTime? SelectedAppointmentTime { set; }
}

public static class MedicalScheduler
{
    public static Dictionary<DateTime, string> Appointments { get; set; } = new Dictionary<DateTime, string>();
    public static List<DateTime> FreeSlots { get; set; } = new List<DateTime>();

    public static IEnumerable<Tuple<string, bool>> Schedule(IEnumerable<IAppointment> requests)
    {
        bool slotFound = false;
        foreach (var appointment in requests)
        {
            if (slotFound) continue;

            foreach (var times in appointment.ProposedTimes)
            {
                var freeSlot = FreeSlots.Where(s => s.Date == times.Date).FirstOrDefault();

                if (freeSlot != null)
                {
                    slotFound = true;
                    Appointments.Remove(freeSlot);
                    appointment.SelectedAppointmentTime = freeSlot;
                    yield return new Tuple<string, bool>(appointment.PatientName, true);
                }
            }

            yield return new Tuple<string, bool>(appointment.PatientName, false);
        }
    }
}

And I'm required to test "Schedule" with a certain set of parameters. For example, I need to test it with empty Appointments and FreeList but with a single element in "requests". I think I have understood how to compile a Unit Test and to set the Dictionary and List parameters. But I'm not sure how to create the IEnumerable variable. My idea was to create a List of IAppointment(s), but how can I implement the interface in the test unit? I have tried using Moq but I didn't understood how I should use it correctly.

I'm sorry if the request seems quite confusing, but I don't know how to explain better :)

Thanks in advance for the help.



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source