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.")