""" test_eyes.py — Tests individuals del mòdul eyes.py. Executa des del directori Rasp/: python tests/test_eyes.py Descomenta la funció que vols provar al final del fitxer. Assegura't que el venv està activat i pigpiod en marxa (sudo pigpiod -s 1). """ import sys import os sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..')) import time import pigpio from eyes import ( eyes_setup, eyes_cleanup, eyes_turn_on, eyes_turn_off, eyes_gesture_mode_on, eyes_gesture_mode_off, eyes_listening, EYES_OPEN, EYES_FW, EYES_DOWN, EYES_GESTURE, WHITE, RED, GREEN, BLUE, YELLOW, ORANGE, PURPLE, CYAN, BLACK, ) def _setup(): pi = pigpio.pi() if not pi.connected: print("ERROR: pigpiod no està en marxa. Executa: sudo pigpiod -s 1") sys.exit(1) eyes_setup(pi) return pi def _teardown(pi): eyes_cleanup() pi.stop() # ================== # TEST 1 — Formes i colors bàsics # ================== def test_shapes(): """ Mostra totes les formes existents en colors diferents. Hauries de veure les formes als ulls LED del robot. """ print("=== TEST FORMES I COLORS ===") pi = _setup() print("EYES_OPEN en blanc...") eyes_turn_on(EYES_OPEN, WHITE) time.sleep(2.0) print("EYES_FW en vermell...") eyes_turn_on(EYES_FW, RED) time.sleep(2.0) print("EYES_DOWN en blau...") eyes_turn_on(EYES_DOWN, BLUE) time.sleep(2.0) print("EYES_OPEN en verd...") eyes_turn_on(EYES_OPEN, GREEN) time.sleep(2.0) print("Apagant...") eyes_turn_off() time.sleep(1.0) _teardown(pi) print("Test formes completat.\n") # ================== # TEST 2 — Animació de repeat i direcció # ================== def test_animation(): """ Prova l'animació amb repeat i les dues direccions. Hauries de veure els LEDs encenent-se un per un en ordre normal i invers. """ print("=== TEST ANIMACIÓ ===") pi = _setup() print("EYES_OPEN groc, repeat=2, endavant...") eyes_turn_on(EYES_OPEN, YELLOW, repeat=2, forward=True) time.sleep(1.0) print("EYES_FW taronja, repeat=2, enrere...") eyes_turn_on(EYES_FW, ORANGE, repeat=2, forward=False) time.sleep(1.0) eyes_turn_off() _teardown(pi) print("Test animació completat.\n") # ================== # TEST 3 — Animacions mode gestos (TFG) # ================== def test_gesture_animations(): """ Prova les animacions específiques del mode gestos. Hauries de veure: doble parpelleig cian, tornada a blanc, marc cian. """ print("=== TEST ANIMACIONS MODE GESTOS ===") pi = _setup() print("Activant mode gestos (doble parpelleig cian)...") eyes_gesture_mode_on() time.sleep(2.0) print("Escoltant gest (marc cian)...") eyes_listening() time.sleep(2.0) print("Desactivant mode gestos (torna a blanc)...") eyes_gesture_mode_off() time.sleep(2.0) eyes_turn_off() _teardown(pi) print("Test animacions gestos completat.\n") # ================== # TEST 4 — Parpelleig (breathing) # ================== def test_breathing(): """ Verifica que el thread de parpelleig funciona correctament. Hauries de veure la brillantor dels LEDs pujant i baixant suaument. """ print("=== TEST PARPELLEIG (BREATHING) ===") pi = _setup() print("EYES_OPEN blanc — observa el parpelleig durant 10 segons...") eyes_turn_on(EYES_OPEN, WHITE) time.sleep(10.0) eyes_turn_off() _teardown(pi) print("Test parpelleig completat.\n") # ================== # Execució # ================== if __name__ == "__main__": # Descomenta el test que vols executar: test_shapes() # test_animation() # test_gesture_animations() # test_breathing()