TrayTempo v0.2.0 : minuteur Pomodoro Windows en Nim avec interface intuitive
This commit is contained in:
@@ -0,0 +1,55 @@
|
||||
## test_tray_integration.nim
|
||||
## ==========================
|
||||
## Test d'intégration Win32 : crée une vraie fenêtre cachée, puis exerce les
|
||||
## interfaces publiques de `tray.nim` et `notifications.nim` contre les API
|
||||
## réelles (user32/shell32) en vérifiant leurs codes de retour.
|
||||
##
|
||||
## Note : ce test fait brièvement apparaître une icône tray et une notification
|
||||
## sur le bureau, puis nettoie tout à la fin.
|
||||
|
||||
import std/unittest
|
||||
import winim/lean
|
||||
|
||||
import ../src/tray
|
||||
import ../src/notifications
|
||||
import ../src/timer
|
||||
|
||||
proc createTestWindow(): HWND =
|
||||
let hInstance = GetModuleHandleW(nil)
|
||||
var wc: WNDCLASSW
|
||||
wc.lpfnWndProc = cast[WNDPROC](DefWindowProcW)
|
||||
wc.hInstance = hInstance
|
||||
wc.lpszClassName = L"TrayTempoTestClass"
|
||||
discard RegisterClass(&wc)
|
||||
result = CreateWindowExW(0, L"TrayTempoTestClass", L"", WS_OVERLAPPED,
|
||||
0, 0, 0, 0, 0, 0, hInstance, nil)
|
||||
|
||||
suite "tray integration":
|
||||
test "tray icon, dynamic icon, toast and hotkey succeed":
|
||||
let hwnd = createTestWindow()
|
||||
check hwnd != 0
|
||||
|
||||
# Génération des icônes dynamiques (GDI) pour les 5 états.
|
||||
for phase in [phIdle, phWorking, phShortBreak, phLongBreak, phPaused]:
|
||||
check phaseIcon(phase) != 0
|
||||
|
||||
# Ajout de l'icône dans le tray (Shell_NotifyIcon NIM_ADD -> bool).
|
||||
check addTrayIcon(hwnd, phaseIcon(phIdle), "TrayTempo") == true
|
||||
|
||||
# Mise à jour de l'icône et du tooltip.
|
||||
updateTrayIcon(hwnd, phaseIcon(phWorking), "Travail: 25:00")
|
||||
|
||||
# Notification (NIF_INFO).
|
||||
showToast(hwnd, "Test", "Notification d'intégration")
|
||||
|
||||
# Raccourci global (RegisterHotKey / UnregisterHotKey). Clé de test peu
|
||||
# susceptible d'être déjà réservée (Ctrl+Alt+F10).
|
||||
check RegisterHotKey(hwnd, 1'i32, MOD_CONTROL or MOD_ALT, 0x79) != 0
|
||||
check UnregisterHotKey(hwnd, 1'i32) != 0
|
||||
|
||||
# Son de fin de période (alias système valide -> PlaySound retourne true).
|
||||
check playSound("SystemAsterisk") == true
|
||||
|
||||
# Suppression de l'icône et de la fenêtre.
|
||||
removeTrayIcon(hwnd)
|
||||
discard DestroyWindow(hwnd)
|
||||
Reference in New Issue
Block a user