Middle
Ako vykonať kontrolu hraníc nie na číselnom rozsahu, ale na abecednom?
sobes.tech AI
Odpoveď od AI
Kontrola hraniacich hodnôt na abecednom intervale zahŕňa testovanie prvého a posledného povoleného znaku, ako aj znakov priamo pred a po povolenom rozsahu, ak sa v súbore znakov nachádzajú.
Napríklad pre pole, ktoré akceptuje cyrilické písmená v malom písmenku (а-я):
- Dolná hranica:
- 'а' (prvý povolený znak)
- Znak pred 'а' (ak je vhodný a existuje v používanom kódovaní)
- Horná hranica:
- 'я' (posledný povolený znak)
- Znak po 'я' (ak je vhodný a existuje v používanom kódovaní)
Okrem toho sa môžu kontrolovať:
- Prázdny reťazec:
"" - Reťazec s jedným znakom: 'б' (ľubovoľný znak v rámci rozsahu)
- Reťazec s znakmi mimo rozsahu:
- Latinka: 'a', 'z'
- Číslice: '1', '9'
- Špeciálne znaky: '$', '#'
- Cyrilica veľkými písmenami: 'А', 'Я'
- Reťazec obsahujúci znaky v rámci aj mimo rozsahu: "абвA1"
Testovanie zahŕňa odoslanie týchto hodnôt do poľa na zadanie a kontrolu očakávaného správania systému: prijatie povolených hodnôt a odmietnutie (alebo správne spracovanie) nepovolených.
Príklad v Pythone:
# Funkcionalita na validáciu reťazca v cyrilike v malom písmenku
def validate_cyrillic_lowercase(text):
import re
return bool(re.fullmatch('[а-я]+', text))
# Testovacie prípady pre hraničné hodnoty
test_cases = {
"Dolná hranica (prvý znak)": ('а', True),
"Dolná hranica (pred rozsahom, neplatné)": ('`', False), # Príklad znaku pred 'а' v niektorých kódovaniach
"Horná hranica (posledný znak)": ('я', True),
"Horná hranica (za rozsahom, neplatné)": ('{', False), # Príklad znaku po 'я' v niektorých kódovaniach
"Vnútri rozsahu": ('абв', True),
"Prázdny reťazec": ('', False),
"Latinka": ('abc', False),
"Číslice": ('123', False),
"Špeciálne znaky": ('@#$', False),
"Cyrilica veľkými písmenami": ('АБВ', False),
"Zmiešaný reťazec": ('абвA1', False)
}
# Spustenie testov
for description, (value, expected) in test_cases.items():
actual = validate_cyrillic_lowercase(value)
assert actual == expected, f"Test: {description}, Hodnota: '{value}', Očakávané: {expected}, Získané: {actual}"
print(f"Test '{description}' pre hodnotu '{value}' prešiel.")