88 lines
2.7 KiB
C#
88 lines
2.7 KiB
C#
using Omika.App.Local.Models;
|
|
|
|
namespace Omika.Tests.Mobile;
|
|
|
|
/// <summary>
|
|
/// Tests des conventions de génération lues dans <c>config.json</c>.
|
|
///
|
|
/// <para>
|
|
/// Les valeurs reproduisent deux modèles réels : <c>opus-mt-es-fr</c>
|
|
/// (départ 74821, fin 0) et <c>opus-mt-tc-big-itc-itc</c> (départ 35282, fin
|
|
/// 29158). Aucune ne correspond aux identifiants du fichier <c>.spm</c>, que le
|
|
/// moteur utilisait jusqu'ici.
|
|
/// </para>
|
|
/// </summary>
|
|
public class ConfigurationModeleTests
|
|
{
|
|
[Fact]
|
|
public void DepuisJson_LitLesIdentifiantsDuModele()
|
|
{
|
|
const string json = """
|
|
{
|
|
"decoder_start_token_id": 35282,
|
|
"eos_token_id": 29158,
|
|
"pad_token_id": 35282,
|
|
"model_type": "marian"
|
|
}
|
|
""";
|
|
|
|
ConfigurationModele? configuration = ConfigurationModele.DepuisJson(json);
|
|
|
|
Assert.NotNull(configuration);
|
|
Assert.Equal(35282, configuration.IdDebutDecodeur);
|
|
Assert.Equal(29158, configuration.IdFin);
|
|
Assert.Equal(35282, configuration.IdRemplissage);
|
|
}
|
|
|
|
[Fact]
|
|
public void DepuisJson_FinAZero_EstUneValeurValide()
|
|
{
|
|
// 0 est un identifiant parfaitement légitime : sur opus-mt-es-fr, c'est
|
|
// </s>. Le confondre avec « absent » ferait générer jusqu'à la limite.
|
|
const string json = """{ "decoder_start_token_id": 74821, "eos_token_id": 0 }""";
|
|
|
|
ConfigurationModele? configuration = ConfigurationModele.DepuisJson(json);
|
|
|
|
Assert.NotNull(configuration);
|
|
Assert.Equal(0, configuration.IdFin);
|
|
}
|
|
|
|
[Fact]
|
|
public void DepuisJson_CleAbsente_ResteNulle()
|
|
{
|
|
ConfigurationModele? configuration = ConfigurationModele.DepuisJson("""{ "eos_token_id": 29158 }""");
|
|
|
|
Assert.NotNull(configuration);
|
|
Assert.Null(configuration.IdDebutDecodeur);
|
|
Assert.Equal(29158, configuration.IdFin);
|
|
}
|
|
|
|
[Theory]
|
|
[InlineData(null)]
|
|
[InlineData("")]
|
|
[InlineData("[]")]
|
|
[InlineData("null")]
|
|
public void DepuisJson_ContenuSansObjet_EstTraiteCommeAbsent(string? json)
|
|
{
|
|
Assert.Null(ConfigurationModele.DepuisJson(json));
|
|
}
|
|
|
|
[Fact]
|
|
public void DepuisJson_ValeurNonNumerique_EstIgnoree()
|
|
{
|
|
const string json = """{ "eos_token_id": "29158", "pad_token_id": -5 }""";
|
|
|
|
ConfigurationModele? configuration = ConfigurationModele.DepuisJson(json);
|
|
|
|
Assert.NotNull(configuration);
|
|
Assert.Null(configuration.IdFin);
|
|
Assert.Null(configuration.IdRemplissage);
|
|
}
|
|
|
|
[Fact]
|
|
public void DepuisJson_JsonInvalide_EstRefuse()
|
|
{
|
|
Assert.Throws<FormatException>(() => ConfigurationModele.DepuisJson("{ pas du json"));
|
|
}
|
|
}
|