Sobes.tech
Middle

Как може да се извърши проверка на граничните стойности не в числов диапазон, а в азбучен?

sobes.tech AI

Отговор от AI

Проверката на граничните стойности в азбучен диапазон включва тестване на първия и последния разрешен символ, както и на символите непосредствено преди и след допустимия диапазон, ако те съществуват в набора от символи.

Например, за поле, което приема малки кирилски букви (а-я):

  • Долна граница:
    • 'а' (първият разрешен символ)
    • Символ преди 'а' (ако е приложимо и съществува в използваната кодировка)
  • Горна граница:
    • 'я' (последният разрешен символ)
    • Символ след 'я' (ако е приложимо и съществува в използваната кодировка)

Освен това могат да се проверяват:

  • Празен низ: ""
  • Низ от един символ: 'б' (всеки символ в диапазона)
  • Низ с символи извън диапазона:
    • Латиница: '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 opis, (stoynost, ozhidano) in test_cases.items():
    rezultat = validate_cyrillic_lowercase(stoynost)
    assert rezultat == ozhidano, f"Тест: {opis}, Стойност: '{stoynost}', Очаквано: {ozhido}, Получено: {rezultat}"
    print(f"'{opis}' тест премина успешно.")