Il sottotitolo "N partite giocate" per il criterio MVP usava totaliEventiGiocatore(), che conta anche gli allenamenti: un numero fuorviante perché l'MVP si vota solo alle partite del calendario interno (eventi_app), non a quelle del sito CSI. Aggiunge contaPartiteGiocate() (presenze.ts) e Giocatore.partiteGiocate. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
60 lines
1.7 KiB
TypeScript
60 lines
1.7 KiB
TypeScript
/** Check della classifica della rosa: `bun test/unit/rosa.test.ts`. */
|
|
import assert from "node:assert/strict";
|
|
import { classificaRank, dettaglioClassifica } from "@/lib/rosa";
|
|
|
|
// --- classificaRank: dense rank, a parità di valore stessa posizione -----------
|
|
|
|
assert.deepEqual(
|
|
classificaRank([4, 4, 3]),
|
|
[1, 1, 2],
|
|
"due giocatori a pari merito condividono la posizione, il numero successivo non salta",
|
|
);
|
|
|
|
assert.deepEqual(
|
|
classificaRank([5, 4, 3, 2]),
|
|
[1, 2, 3, 4],
|
|
"nessun pareggio: posizione progressiva normale",
|
|
);
|
|
|
|
assert.deepEqual(
|
|
classificaRank([3, 3, 3, 1]),
|
|
[1, 1, 1, 2],
|
|
"tre giocatori a pari merito in testa condividono tutti la posizione #1",
|
|
);
|
|
|
|
assert.deepEqual(classificaRank([]), [], "rosa vuota: nessuna posizione");
|
|
|
|
assert.deepEqual(classificaRank([0, 0]), [1, 1], "parità anche a valore zero");
|
|
|
|
// --- dettaglioClassifica: il sottotitolo segue il criterio selezionato -------
|
|
|
|
const g = { streak: 12, votiPagella: 18, partiteGiocate: 15, cacche: 3, seriePalloni: 4 };
|
|
|
|
assert.equal(
|
|
dettaglioClassifica(g, "presenze"),
|
|
"12 presenze consecutive",
|
|
"presenze: mostra la serie di presenze consecutive",
|
|
);
|
|
assert.equal(
|
|
dettaglioClassifica(g, "palloni"),
|
|
"4 volte consecutive",
|
|
"palloni: mostra le volte consecutive in cui ha portato i palloni, non le presenze",
|
|
);
|
|
assert.equal(
|
|
dettaglioClassifica(g, "mediaVoto"),
|
|
"18 voti pagella",
|
|
"media voto: mostra quanti voti compongono la media",
|
|
);
|
|
assert.equal(
|
|
dettaglioClassifica(g, "mvp"),
|
|
"15 partite giocate",
|
|
"mvp: mostra le partite giocate (non gli eventi totali, che includerebbero gli allenamenti)",
|
|
);
|
|
assert.equal(
|
|
dettaglioClassifica(g, "cacchePartita"),
|
|
"3 giornate top",
|
|
"cacche: mostra le giornate da primo classificato",
|
|
);
|
|
|
|
console.log("rosa: ok");
|