Sobes.tech
Middle

Hoe kun je grenswaarden controleren niet op een numerieke reeks, maar op een alfabetische?

sobes.tech AI

Antwoord van AI

Het controleren van grenswaarden binnen een alfabetisch bereik omvat het testen van het eerste en het laatste toegestane teken, evenals de tekens direct vóór en na het toegestane bereik, indien aanwezig in de tekenreeks.

Bijvoorbeeld, voor een veld dat kleine Cyrillische letters accepteert (а-я):

  • Ondergrens:
    • 'а' (het eerste toegestane teken)
    • Het teken vóór 'а' (indien van toepassing en aanwezig in de gebruikte codering)
  • Bovengrens:
    • 'я' (het laatste toegestane teken)
    • Het teken na 'я' (indien van toepassing en aanwezig in de gebruikte codering)

Daarnaast kunnen worden gecontroleerd:

  • Lege string: ""
  • String van één teken: 'б' (elke teken binnen het bereik)
  • String met tekens buiten het bereik:
    • Latijn: 'a', 'z'
    • Cijfers: '1', '9'
    • Speciale tekens: '$', '#'
    • Cyrillisch in hoofdletters: 'А', 'Я'
  • String die tekens bevat zowel binnen als buiten het bereik: "абвA1"

De test omvat het verzenden van deze waarden naar het invoerveld en het controleren van het verwachte gedrag van het systeem: accepteren van toegestane waarden en afwijzen (of correct verwerken) van niet-toegestane.

Voorbeeld in Python:

# Functionaliteit om een string in Cyrillisch in kleine letters te valideren
def validate_cyrillic_lowercase(text):
    import re
    return bool(re.fullmatch('[а-я]+', text))

# Testgevallen voor grenswaarden
test_cases = {
    "Ondergrens (eerste teken)": ('а', True),
    "Ondergrens (voor het bereik, ongeldig)": ('`', False), # Voorbeeld teken vóór 'а' in sommige coderingen
    "Bovengrens (laatste teken)": ('я', True),
    "Bovengrens (na het bereik, ongeldig)": ('{', False), # Voorbeeld teken na 'я' in sommige coderingen
    "Binnen bereik": ('абв', True),
    "Lege string": ('', False),
    "Latijn": ('abc', False),
    "Cijfers": ('123', False),
    "Speciale tekens": ('@#$', False),
    "Cyrillisch hoofdletters": ('АБВ', False),
    "Gemengde string": ('абвA1', False)
}

# Testen uitvoeren
for beschrijving, (waarde, verwacht) in test_cases.items():
    resultaat = validate_cyrillic_lowercase(waarde)
    assert resultaat == verwacht, f"Test: {beschrijving}, Waarde: '{waarde}', Verwacht: {verwacht}, Ontvangen: {resultaat}"
    print(f"'{beschrijving}' test succesvol.")