У меня есть следующий алгоритм:
Учитывая список учетных записей , я должен разделить их справедливо между пользователями системы .
Теперь, чтобы облегчитьнагрузка на пользователей, я должен разделить их по дням.
Таким образом, если в учетной записи есть заказов на обслуживание , они должны быть включены в список, который будет распределяться в течение 547 дней (полтора года),Если в учетной записи нет заказов на обслуживание , они должны быть включены в список, который будет распространяться в течение 45 дней (полтора месяца).
Я использую следующее расширение LINQ из aвопрос, который я задавал ранее :
public static IEnumerable<IGrouping<TBucket, TSource>> DistributeBy<TSource, TBucket>(
this IEnumerable<TSource> source, IList<TBucket> buckets)
{
var tagged = source.Select((item,i) => new {item, tag = i % buckets.Count});
var grouped = from t in tagged
group t.item by buckets[t.tag];
return grouped;
}
, и я могу гарантировать, что он работает.
Моя проблема в том, что я не знаю, как выполнить модульное тестирование во всех этих случаях.
Iможет иметь 5 пользователей и 2 учетные записи, которых может быть недостаточно для разделения на полтора года или даже полтора месяца.
У меня может быть ровно 547 учетных записей и 547 системных пользователей, поэтому каждая учетная запись будет обрабатываться каждойсистемный пользователь каждый день.
По сути, я не знаю, какие типы данных мне следует создавать, потому что кажется, что вариантов слишком много, и что я должен утверждать, потому что я понятия не имею, каким будет распределение.