Sobes.tech
Middle

Jak można przeprowadzić sprawdzenie wartości granicznych nie na zakresie numerycznym, lecz na alfabetycznym?

sobes.tech AI

Odpowiedź od AI

Sprawdzanie wartości granicznych w zakresie alfabetycznym polega na przetestowaniu pierwszego i ostatniego dozwolonego znaku, a także znaków bezpośrednio przed i po dozwolonym zakresie, jeśli występują w zestawie znaków.

Na przykład dla pola akceptującego małe litery cyrylicy (а-я):

  • Dolna granica:
    • 'а' (pierwszy dozwolony znak)
    • Znak przed 'а' (jeśli dotyczy i istnieje w używanym kodowaniu)
  • Górna granica:
    • 'я' (ostatni dozwolony znak)
    • Znak po 'я' (jeśli dotyczy i istnieje w używanym kodowaniu)

Dodatkowo można sprawdzić:

  • Pusty ciąg: ""
  • Ciąg jednego znaku: 'б' (dowolny znak w zakresie)
  • Ciąg znaków spoza zakresu:
    • Łacina: 'a', 'z'
    • Cyfry: '1', '9'
    • Znaki specjalne: '$', '#'
    • Cyrylica wielkimi literami: 'А', 'Я'
  • Ciąg zawierający znaki zarówno wewnątrz, jak i na zewnątrz zakresu: "абвA1"

Test polega na wysłaniu tych wartości do pola wejściowego i sprawdzeniu oczekiwanego zachowania systemu: akceptacji dozwolonych wartości i odrzucenia (lub poprawnego obsłużenia) niedozwolonych.

Przykład w Pythonie:

# Funkcjonalność do walidacji ciągu w cyrylicy małymi literami
def validate_cyrillic_lowercase(text):
    import re
    return bool(re.fullmatch('[а-я]+', text))

# Przypadki testowe dla wartości granicznych
test_cases = {
    "Dolna granica (pierwszy znak)": ('а', True),
    "Dolna granica (przed zakresem, nieprawidłowe)": ('`', False), # Przykład znaku przed 'а' w niektórych kodowaniach
    "Górna granica (ostatni znak)": ('я', True),
    "Górna granica (po zakresie, nieprawidłowe)": ('{', False), # Przykład znaku po 'я' w niektórych kodowaniach
    "Wewnątrz zakresu": ('абв', True),
    "Pusty ciąg": ('', False),
    "Łacina": ('abc', False),
    "Cyfry": ('123', False),
    "Znaki specjalne": ('@#$', False),
    "Cyrylica wielkimi literami": ('АБВ', False),
    "Mieszany ciąg": ('абвA1', False)
}

# Uruchomienie testów
for opis, (wartosc, oczekiwane) in test_cases.items():
    wynik = validate_cyrillic_lowercase(wartosc)
    assert wynik == oczekiwane, f"Test: {opis}, Wartość: '{wartosc}', Oczekiwane: {oczekiwane}, Otrzymane: {wynik}"
    print(f"Test '{opis}' zaliczony.")