# Библиотека формирующая список свободных временных интервалов в графике сотрудника для формирования оптимального графика работы сотрудников (ДЭ22) ## Разработка библиотеки Разработайте библиотеку, которая позволит вернуть список свободных временных интервалов (заданного размера) в графике сотрудника для формирования оптимального графика работы сотрудников. Необходимо обязательно следовать правилам именования библиотек, классов и методов в них. В случае ошибок в рамках именования ваша работа не может быть проверена и ваш результат не будет зачтен. Классы и методы должны содержать модификатор **public** (если это реализуемо в рамках платформы), чтобы внешние приложения могли получить к ним доступ. Вход: * список занятых промежутков времени (в двух массивах: _startTimes_ - начало, _durations_ - длительность), * минимальное необходимое время для работы менеджера (consultationTime), * рабочий день сотрудника (начало - _beginWorkingTime_ и завершение - _endWorkingTime_) Выход: * список подходящих свободных временных промежутков (в массив строк формата HH:mm-HH:mm) Требования к именованиям и форматам:   | C# | Java | Python -------|----|------|-------- Библиотека классов | SF2022User{NN}Lib.dll | SF2022User{NN}Lib.jar | SF2022User{NN}Lib Название класса | Calculations | Calculations | Calculations Название метода | AvailablePeriods() | availablePeriods() | available_periods() Входящие обязательные параметры | TimeSpan[] startTimes,
int[] durations,
TimeSpan beginWorkingTime,
TimeSpan endWorkingTime,
int consultationTime |LocalTime[] startTimes,
int[] durations,
LocalTime beginWorkingTime,
LocalTime endWorkingTime,
int consultationTime | time[] start_times,
int[] durations,
time begin_working_time,
time end_working_time,
int consultation_time Возвращаемые параметры | string[] | string[] | string[] Пример: Вход | Выход -----|------ startTimes [10:00, 11:00, 15:00, 15:30, 16:50],
durations [60, 30, 10, 10, 40],
beginWorkingTime 08:00,
endWorkingTime 18:00,
consultationTime 30 |["08:00-08:30",
"08:30-09:00",
"09:00-09:30",
"09:30-10:00",
"11:30-12:00",
"12:00-12:30",
"12:30-13:00",
"13:00-13:30",
"13:30-14:00",
"14:00-14:30",
"14:30-15:00",
"15:40-16:10",
"16:10-16:40",
"17:30-18:00"] ## Тестирование программных решений ### Тестовые сценарии Опишите 10 тестовых сценариев для библиотеки, функционал которой описан ранее. Важно, чтобы тестовые сценарии предусматривали различные ситуации. Например, недостаточное время в промежутках между ранее созданными консультациями, либо в начале рабочего дня, либо в конце рабочего дня; различная длительность консультация и т.д. ### Модульные тесты Реализуйте unit-тесты по описанным тестовым сценариям