TranscripteurVoskDisponibiliteTest.kt
50 lignes · 1658 octets
package fr.ebii.card2vcf.audio import android.content.Context import androidx.test.core.app.ApplicationProvider import org.junit.Before import org.junit.runner.RunWith import org.robolectric.RobolectricTestRunner import org.robolectric.annotation.Config import java.io.File import kotlin.test.Test import kotlin.test.assertEquals /** * Détection de disponibilité du modèle vocal dans la saveur `fdroid`, qui n'embarque * aucun asset : seul un modèle téléchargé dans `filesDir` peut rendre Vosk disponible. * * Seul [TranscripteurVosk.etat] est sollicité — il ne touche pas la lib native. */ @RunWith(RobolectricTestRunner::class) @Config(sdk = [31]) class TranscripteurVoskDisponibiliteTest { private lateinit var context: Context @Before fun setUp() { context = ApplicationProvider.getApplicationContext() context.filesDir.deleteRecursively() } @Test fun `sans modele telecharge le moteur vocal est indisponible`() { assertEquals(TranscripteurLocal.Etat.INDISPONIBLE, TranscripteurVosk(context).etat) } @Test fun `un modele decompresse dans filesDir rend le moteur disponible`() { File(context.filesDir, "vosk-model-small-fr-0.22/am").mkdirs() File(context.filesDir, "vosk-model-small-fr-0.22/am/final.mdl").writeText("modèle") assertEquals(TranscripteurLocal.Etat.DISPONIBLE, TranscripteurVosk(context).etat) } @Test fun `un dossier de modele vide ne suffit pas`() { File(context.filesDir, "vosk-model-small-fr-0.22").mkdirs() assertEquals(TranscripteurLocal.Etat.INDISPONIBLE, TranscripteurVosk(context).etat) } }
GitRust