NoteVocaleUtilTest.kt 56 lignes · 2021 octets
package fr.ebii.card2vcf.audio

import fr.ebii.card2vcf.ui.audio.genererSujetParDefaut
import java.util.Calendar
import kotlin.test.Test
import kotlin.test.assertEquals
import kotlin.test.assertTrue

class NoteVocaleUtilTest {

    private fun horodatage(annee: Int, mois: Int, jour: Int, heure: Int, minute: Int): Long {
        return Calendar.getInstance().apply {
            set(annee, mois - 1, jour, heure, minute, 0)
            set(Calendar.MILLISECOND, 0)
        }.timeInMillis
    }

    @Test
    fun sujet_formate_date_complete() {
        val ts = horodatage(2026, 9, 5, 9, 7)
        val resultat = genererSujetParDefaut("Notes du %1\$s", maintenant = ts)
        assertEquals("Notes du 05/09/2026 à 09:07", resultat)
    }

    @Test
    fun sujet_formate_date_fin_de_mois() {
        val ts = horodatage(2026, 12, 31, 23, 59)
        val resultat = genererSujetParDefaut("Notes du %1\$s", maintenant = ts)
        assertEquals("Notes du 31/12/2026 à 23:59", resultat)
    }

    @Test
    fun sujet_formate_minuit() {
        val ts = horodatage(2026, 1, 1, 0, 0)
        val resultat = genererSujetParDefaut("Notes du %1\$s", maintenant = ts)
        assertEquals("Notes du 01/01/2026 à 00:00", resultat)
    }

    @Test
    fun sujet_contient_date_formatee() {
        val resultat = genererSujetParDefaut("Notes du %1\$s")
        // Vérifie que le résultat commence par le préfixe et contient le format jj/MM/yyyy à HH:mm
        assertTrue(resultat.startsWith("Notes du "), "Devrait commencer par 'Notes du '")
        assertTrue(
            Regex("""Notes du \d{2}/\d{2}/\d{4} à \d{2}:\d{2}""").matches(resultat),
            "Format attendu : 'Notes du jj/MM/yyyy à HH:mm', obtenu : '$resultat'",
        )
    }

    @Test
    fun sujet_utilise_le_modele_fourni() {
        val ts = horodatage(2026, 6, 15, 14, 30)
        val resultat = genererSujetParDefaut("Enregistrement du %1\$s", maintenant = ts)
        assertEquals("Enregistrement du 15/06/2026 à 14:30", resultat)
    }
}