25 lines
2.1 KiB
JavaScript
25 lines
2.1 KiB
JavaScript
#!/usr/bin/env node
|
|
// Tests de l'arbitre encadre (tools/arbitrage.mjs, 08/10/2026).
|
|
import { detecterSituation, lireChoix } from '../../tools/arbitrage.mjs';
|
|
let f = 0;
|
|
const ok = (l, c, d = '') => { if (c) console.log(`✅ ${l}`); else { f++; console.log(`❌ ${l} ${d}`); } };
|
|
// Releve reel du 08/10 01:30 : VW bloquee, EDF ferme, session HC.
|
|
const nuit0810 = { fenetre: 'nuit', finFenetre: '07:24', contacteurOn: true, voitureBranchee: true, borneW: 0,
|
|
sourceMode: 'Bloqué', etat: 'night_no_grid_hc_lock', raison: 'Nuit sans autorisation HC réseau | Nuit EVCS: target=38.8%', vehicule: 'VW', modeNuit: 'sans_edf' };
|
|
const s = detecterSituation(nuit0810);
|
|
ok('nuit-0810-question', s && s.cas === 'voiture_bloquee_edf_ferme' && /VW est branchee/.test(s.question) && /Nuit sans autorisation HC réseau/.test(s.question), JSON.stringify(s));
|
|
ok('nuit-0810-choix-ferme', s && s.choix.length === 2 && s.choix[0].ordre.ordre === 'mode_nuit' && s.choix[0].ordre.valeur === 'complete' && s.choix[1].ordre === null);
|
|
const m = detecterSituation({ ...nuit0810, fenetre: 'midi', finFenetre: '14:24' });
|
|
ok('midi-force-grid', m && m.choix[0].ordre.ordre === 'strategie' && m.choix[0].ordre.valeur === 'force_grid_now' && /14:24/.test(m.choix[0].libelle));
|
|
ok('deja-complete-pas-de-question', detecterSituation({ ...nuit0810, modeNuit: 'complete' }) === null);
|
|
ok('hors-hc-rien', detecterSituation({ ...nuit0810, fenetre: null }) === null);
|
|
ok('edf-ouvert-rien', detecterSituation({ ...nuit0810, contacteurOn: false }) === null);
|
|
ok('voiture-pleine-rien', detecterSituation({ ...nuit0810, etat: 'night_recovery_done_idle' }) === null);
|
|
ok('voiture-en-charge-rien', detecterSituation({ ...nuit0810, borneW: 1400, sourceMode: 'Réseau forcé' }) === null);
|
|
ok('pas-de-voiture-rien', detecterSituation({ ...nuit0810, voitureBranchee: false }) === null);
|
|
ok('choix-1', lireChoix('1', s.choix)?.cle === '1');
|
|
ok('choix-texte', lireChoix('je prends le 2', s.choix)?.cle === '2');
|
|
ok('choix-inconnu', lireChoix('5', s.choix) === null && lireChoix('oui', s.choix) === null);
|
|
console.log(f ? `\n${f} ECHEC(S)` : '\nARBITRAGE OK');
|
|
process.exit(f ? 1 : 0);
|