Sobes.tech
Middle

Cum se poate verifica limitele nu pe un interval numeric, ci pe unul alfabetic?

sobes.tech AI

Răspuns de la AI

Verificarea valorilor limită într-un interval alfabetic implică testarea primului și ultimului caracter permis, precum și a caracterelor imediat înainte și după intervalul permis, dacă acestea există în setul de caractere.

De exemplu, pentru un câmp care acceptă litere cirilice mici (а-я):

  • Limita inferioară:
    • 'а' (primul caracter permis)
    • Caracterul înainte de 'а' (dacă este aplicabil și există în codificarea utilizată)
  • Limita superioară:
    • 'я' (ultimul caracter permis)
    • Caracterul după 'я' (dacă este aplicabil și există în codificarea utilizată)

În plus, pot fi verificate:

  • Șir gol: ""
  • Șir format dintr-un singur caracter: 'б' (orice caracter din interval)
  • Șir cu caractere în afara intervalului:
    • Latin: 'a', 'z'
    • Cifre: '1', '9'
    • Caractere speciale: '$', '#'
    • Cirilic majuscule: 'А', 'Я'
  • Șir care conține caractere atât în, cât și în afara intervalului: "абвA1"

Testarea implică trimiterea acestor valori în câmpul de introducere și verificarea comportamentului așteptat al sistemului: acceptarea valorilor permise și respingerea (sau manipularea corectă) a celor nepermise.

Exemplu în Python:

# Funcție pentru validarea unui șir în cirilică în litere mici
def validate_cyrillic_lowercase(text):
    import re
    return bool(re.fullmatch('[а-я]+', text))

# Cazuri de test pentru valorile limită
test_cases = {
    "Limita inferioară (primul caracter)": ('а', True),
    "Limita inferioară (înainte de interval, invalid)": ('`', False), # Exemplu de caracter înainte de 'а' în unele codificări
    "Limita superioară (ultimul caracter)": ('я', True),
    "Limita superioară (după interval, invalid)": ('{', False), # Exemplu de caracter după 'я' în unele codificări
    "În interiorul intervalului": ('абв', True),
    "Șir gol": ('', False),
    "Latin": ('abc', False),
    "Cifre": ('123', False),
    "Caractere speciale": ('@#$', False),
    "Cirilic majuscule": ('АБВ', False),
    "Șir mixt": ('абвA1', False)
}

# Executarea testelor
for descriere, (valoare, așteptat) in test_cases.items():
    rezultat = validate_cyrillic_lowercase(valoare)
    assert rezultat == așteptat, f"Test: {descriere}, Valoare: '{valoare}', Așteptat: {așteptat}, Obținut: {rezultat}"
    print(f"Test '{descriere}' trecut cu succes.")