add some tests and DistributionTimeIntervalGenerator