TesseractAssetsEmbarquesTest.kt
57 lignes · 1939 octets
package fr.ebii.card2vcf.ocr import android.content.Context import androidx.test.core.app.ApplicationProvider import fr.ebii.card2vcf.modeles.PreferencesModeles 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 import kotlin.test.assertTrue /** * La saveur `direct` doit rester autonome : sur un `filesDir` vierge, les traineddata * embarqués sont recopiés et l'OCR fonctionne sans le moindre téléchargement. */ @RunWith(RobolectricTestRunner::class) @Config(sdk = [31]) class TesseractAssetsEmbarquesTest { private lateinit var context: Context @Before fun setUp() { context = ApplicationProvider.getApplicationContext() context.filesDir.deleteRecursively() } @Test fun `la saveur direct embarque bien les traineddata`() { val assets = context.assets.list("tesseract/tessdata").orEmpty() assertTrue( assets.any { it.endsWith(".traineddata") }, "aucun traineddata embarqué : ${assets.joinToString()}", ) } @Test fun `sur un filesDir vierge les modeles sont recopies depuis les assets`() { val langues = TesseractOcrEngine(context, PreferencesModeles(context)).languesActives() assertEquals(listOf("fra", "eng"), langues) val dossier = File(context.filesDir, "tesseract/tessdata") assertTrue(File(dossier, "fra.traineddata").isFile) assertTrue(File(dossier, "eng.traineddata").isFile) } @Test fun `la recopie depuis les assets marque la variante et non external`() { TesseractOcrEngine(context, PreferencesModeles(context)).languesActives() val stamp = File(context.filesDir, "tesseract/tessdata/.card2vcf-tessdata-variant") assertEquals("fast", stamp.readText().trim()) } }
GitRust