"""Attente d'une condition avant le collage. Bug du 2026-08-21 : deux dictees transcrites correctement n'ont jamais atteint la zone de saisie. Aucune exception — les touches AVAIENT ete envoyees. Cause : la hotkey Cmd+Ctrl+D etait encore enfoncee quand Zonza a simule Cmd+V ; le systeme a recu Cmd+Ctrl+V, que l'application cible ignore. D'ou une attente du relachement des modificateurs avant de coller. Bornee : si une touche reste enfoncee (clavier bloque), on colle quand meme plutot que de perdre le texte. """ from core import attendre def test_condition_deja_vraie_ne_dort_pas(): sommeils = [] assert attendre(lambda: True, 1.0, 0.05, dormir=sommeils.append, horloge=lambda: 0.0) is True assert sommeils == [] def test_condition_devient_vraie_apres_quelques_tours(): tours = {"n": 0} def cond(): tours["n"] += 1 return tours["n"] >= 3 t = {"v": 0.0} def horloge(): return t["v"] def dormir(s): t["v"] += s assert attendre(cond, 1.0, 0.05, dormir=dormir, horloge=horloge) is True assert tours["n"] == 3 def test_rend_False_au_bout_du_temps_imparti(): t = {"v": 0.0} def horloge(): return t["v"] def dormir(s): t["v"] += s assert attendre(lambda: False, 0.2, 0.05, dormir=dormir, horloge=horloge) is False def test_le_temps_imparti_est_respecte(): t = {"v": 0.0} dormis = [] def horloge(): return t["v"] def dormir(s): t["v"] += s; dormis.append(s) attendre(lambda: False, 0.2, 0.05, dormir=dormir, horloge=horloge) assert sum(dormis) <= 0.25, "l'attente ne doit pas deborder" def test_un_delai_nul_tente_quand_meme_une_fois(): essais = {"n": 0} def cond(): essais["n"] += 1 return False attendre(cond, 0.0, 0.05, dormir=lambda s: None, horloge=lambda: 0.0) assert essais["n"] >= 1