Sobes.tech
Middle

Kako izvršiti proveru granica ne na numeričkom, već na abecednom opsegu?

sobes.tech АИ

Одговор од АИ

Провера граничних вредности на азбучном интервалу подразумева тестирање првог и последњег дозвољеног симбола, као и симбола непосредно пре и после дозвољеног опсега, ако постоје у скупу симбола.

На пример, за поље које прихвата ћирилична слова у малом писму (а-я):

  • Доња граница:
    • 'а' (први дозвољени симбол)
    • Симбол пре 'а' (ако је применљиво и постоји у коришћеној кодирању)
  • Горња граница:
    • 'я' (последњи дозвољени симбол)
    • Симбол после 'я' (ако је применљиво и постоји у коришћеној кодирању)

Додатно се могу проверити:

  • Празан низ: ""
  • Низ од једног симбола: 'б' (било који симбол унутар опсега)
  • Низ симбола ван опсега:
    • Латиница: 'a', 'z'
    • Бројеви: '1', '9'
    • Специјални симболи: '$', '#'
    • ћирилица у великом писму: 'А', 'Я'
  • Низ који садржи симболе и унутар и ван опсега: "абвA1"

Тестирање укључује слање ових вредности у поље за унос и проверу очекиваног понашања система: прихватање дозвољених вредности и одбијање (или исправну обраду) недозвољених.

Пример у Python коду:

# Функционалност за валидацију низа на ћирилицу у малом писму
def validate_cyrillic_lowercase(text):
    import re
    return bool(re.fullmatch('[а-я]+', text))

# Тест случајеви за граничне вредности
test_cases = {
    "Доња граница (први симбол)": ('а', True),
    "Доња граница (пре опсега, недозвољено)": ('`', False), # Пример симбола пре 'а' у неким кодирањима
    "Горња граница (последњи симбол)": ('я', True),
    "Горња граница (после опсега, недозвољено)": ('{', False), # Пример симбола после 'я' у неким кодирањима
    "Унутар опсега": ('абв', True),
    "Празан низ": ('', False),
    "Латиница": ('abc', False),
    "Бројеви": ('123', False),
    "Специјални симболи": ('@#$', False),
    "Ћирилица великим словима": ('АБВ', False),
    "Мешовити низ": ('абвA1', False)
}

# Извршавање тестова
for description, (value, expected) in test_cases.items():
    actual = validate_cyrillic_lowercase(value)
    assert actual == expected, f"Тест: {description}, Вредност: '{value}', Очекује се: {expected}, Добијено: {actual}"
    print(f"Тест '{description}' за вредност '{value}' прошао.")