Sobes.tech
Middle

Comment effectuer une vérification des limites non pas sur un intervalle numérique, mais sur un intervalle alphabétique?

sobes.tech IA

Réponse de l'IA

La vérification des valeurs limites dans un intervalle alphabétique consiste à tester le premier et le dernier caractère autorisé, ainsi que les caractères juste avant et après la plage autorisée, s'ils existent dans l'ensemble de caractères.

Par exemple, pour un champ acceptant des lettres cyrilliques en minuscules (а-я):

  • Limite inférieure :
    • 'а' (le premier caractère autorisé)
    • Le caractère avant 'а' (si applicable et existant dans la codification utilisée)
  • Limite supérieure :
    • 'я' (le dernier caractère autorisé)
    • Le caractère après 'я' (si applicable et existant dans la codification utilisée)

De plus, il est possible de vérifier :

  • Chaîne vide : ""
  • Chaîne d'un seul caractère : 'б' (tout caractère dans la plage)
  • Chaîne avec des caractères hors de la plage :
    • Latin : 'a', 'z'
    • Chiffres : '1', '9'
    • Caractères spéciaux : '$', '#'
    • Cyrillique en majuscule : 'А', 'Я'
  • Chaîne contenant des caractères à la fois dans et hors de la plage : "абвA1"

Le test consiste à envoyer ces valeurs dans le champ de saisie et à vérifier le comportement attendu du système : accepter les valeurs autorisées et rejeter (ou gérer correctement) les non autorisées.

Exemple en code Python :

# Fonction pour valider une chaîne en cyrillique en minuscules
def validate_cyrillic_lowercase(text):
    import re
    return bool(re.fullmatch('[а-я]+', text))

# Cas de test pour les valeurs limites
test_cases = {
    "Limite inférieure (premier caractère)": ('а', True),
    "Limite inférieure (avant la plage, non valide)": ('`', False), # Exemple de caractère avant 'а' dans certaines codifications
    "Limite supérieure (dernier caractère)": ('я', True),
    "Limite supérieure (après la plage, non valide)": ('{', False), # Exemple de caractère après 'я' dans certaines codifications
    "Dans la plage": ('абв', True),
    "Chaîne vide": ('', False),
    "Latin": ('abc', False),
    "Chiffres": ('123', False),
    "Caractères spéciaux": ('@#$', False),
    "Cyrillique en majuscule": ('АБВ', False),
    "Chaîne mixte": ('абвA1', False)
}

# Exécution des tests
for description, (value, expected) in test_cases.items():
    actual = validate_cyrillic_lowercase(value)
    assert actual == expected, f"Test : {description}, Valeur : '{value}', Attendu : {expected}, Obtenu : {actual}"
    print(f"Test '{description}' pour la valeur '{value}' réussi.")