Я думаю, что вы тестируете три различных аспекта этой проблемы.
Первый: мой алгоритм правильный? То есть при наличии правильно функционирующего генератора случайных чисел он будет генерировать даты, которые случайным образом распределены по диапазону?
Второй: алгоритм правильно обрабатывает крайние случаи? То есть, когда генератор случайных чисел выдает самые высокие или самые низкие допустимые значения, что-нибудь ломается?
Третий: моя реализация алгоритма работает? То есть, учитывая известный список псевдослучайных входных данных, генерирует ли он ожидаемый список псевдослучайных дат?
Первые две вещи - это не то, что я бы встроил в пакет модульного тестирования. Это то, что я докажу при разработке системы. Я, вероятно, сделал бы это, написав тестовый набор, который сгенерировал бы миллионы дат и выполнил тест хи-квадрат, как предложил daniel.rikowski. Я бы также позаботился о том, чтобы этот тестовый жгут не заканчивался до тех пор, пока он не обработал оба крайних случая (предполагая, что мой диапазон случайных чисел достаточно мал, чтобы я мог сойти с рук). И я задокументирую это, чтобы любой, кто придет и попытается улучшить алгоритм, знал, что это серьезное изменение.
Последний - это , для которого я бы сделал юнит-тест. Мне нужно знать, что ничто не проникло в код, который нарушает реализацию этого алгоритма. Первый признак, который я получу, когда это произойдет, состоит в том, что тест не пройден. Затем я вернусь к коду и выясню, что кто-то еще подумал, что что-то исправляет, и вместо этого сломал. Если бы кто-то сделал исправил алгоритм, он бы тоже исправил этот тест.