Middle
Jak lze provést kontrolu hranic nikoli na číselném rozsahu, ale na abecedním?
sobes.tech AI
Odpověď od AI
Kontrola hranic hodnot v abecedním rozsahu zahrnuje testování prvního a posledního povoleného znaku, stejně jako znaků přímo před a po povoleném rozsahu, pokud jsou v sadě znaků.
Například pro pole, které přijímá malá písmena cyrilice (а-я):
- Dolní hranice:
- 'а' (první povolený znak)
- Znak před 'а' (pokud je použitelný a existuje v používaném kódování)
- Horní hranice:
- 'я' (poslední povolený znak)
- Znak po 'я' (pokud je použitelný a existuje v používaném kódování)
Dále lze ověřit:
- Prázdný řetězec:
"" - Řetězec o jednom znaku: 'б' (libovolný znak v rozsahu)
- Řetězec se znaky mimo rozsah:
- Latinka: 'a', 'z'
- Číslice: '1', '9'
- Speciální znaky: '$', '#'
- Cyrilice velkými písmeny: 'А', 'Я'
- Řetězec obsahující znaky jak uvnitř, tak mimo rozsah: "абвA1"
Testování zahrnuje odeslání těchto hodnot do vstupního pole a kontrolu očekávaného chování systému: přijetí povolených hodnot a odmítnutí (nebo správné zpracování) nepovolených.
Příklad v Pythonu:
# Funkce pro validaci řetězce v cyrilici malými písmeny
def validate_cyrillic_lowercase(text):
import re
return bool(re.fullmatch('[а-я]+', text))
# Testovací případy pro hranicové hodnoty
test_cases = {
"Dolní hranice (první znak)": ('а', True),
"Dolní hranice (před rozsahem, neplatné)": ('`', False), # Příklad znaku před 'а' v některých kódováních
"Horní hranice (poslední znak)": ('я', True),
"Horní hranice (po rozsahu, neplatné)": ('{', False), # Příklad znaku po 'я' v některých kódováních
"Uvnitř rozsahu": ('абв', True),
"Prázdný řetězec": ('', False),
"Latinka": ('abc', False),
"Číslice": ('123', False),
"Speciální znaky": ('@#$', False),
"Cyrilice velkými písmeny": ('АБВ', False),
"Smíšený řetězec": ('абвA1', False)
}
# Spuštění testů
for popis, (hodnota, očekávané) in test_cases.items():
výsledek = validate_cyrillic_lowercase(hodnota)
assert výsledek == očekávané, f"Test: {popis}, Hodnota: '{hodnota}', Očekávané: {očekávané}, Získané: {výsledek}"
print(f"'{popis}' test úspěšně prošel.")