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