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