Tests
tilttek/advent-calendarLes tests de la bibliothèque
composer install
vendor/bin/phpunit --no-configuration tests
La suite couvre les calendriers et leurs refus, les bornes de chaque jour dans le fuseau horaire du calendrier — la
première et la dernière seconde, les jours de 25 et de 23 heures quand l'heure change, un minuit qu'un changement d'heure
saute —, les trois politiques d'ouverture et la fermeture, les surprises, les ouvertures idempotentes et une requête qui
perd une course, les cases telles qu'un membre les voit, l'effacement, et le magasin en mémoire par
OpeningStoreTestCase, le contrat que réussit tout magasin. tests/Benchmark/BoxesBench.php mesure les cases qu'une
page lit, sur des calendriers de 24 et de 92 cases. Dans le monodépôt, Infection maintient la bibliothèque à 100 % des
mutants couverts.
Tester du code qui ouvre des cases
Construisez AdventCalendar avec le magasin en mémoire, une horloge que vous déplacez —
Symfony\Component\Clock\MockClock — et un répartiteur qui note ses événements :
$clock = new MockClock('2026-12-03 23:59:59', 'Europe/Paris');
$advent = new AdventCalendar(new InMemoryOpeningStore(), $clock, $dispatcher);
self::assertTrue($advent->open($calendar, $member, 3)->first);
$clock->modify('2026-12-04 00:00:00');
self::assertSame(BoxState::Missed, $advent->box($sameDayCalendar, $member, 3)->state);
Réglez l'horloge dans le fuseau horaire du calendrier, ou donnez le décalage du moment, pour tester les bornes d'un jour.