Middle
Kuidas saab teha piirmäärade kontrolli mitte numbrilises, vaid tähestikulises vahemikus?
sobes.tech AI
Vastus AI-lt
Piirangutähti kontroll alfabeeva vahemikus hõlmab lubatud esimese ja viimase märgi ning samuti nende otse enne ja pärast asuvaid märke, kui need on märgistikogus olemas.
Näiteks väljal, mis aktsepteerib kirillitsa väikseid tähti (а-я):
- Alamraja:
- 'а' (esimene lubatud märk)
- Märk enne 'а' (kui see on asjakohane ja olemas kasutatavas kodeeringus)
- Ülemraja:
- 'я' (viimane lubatud märk)
- Märk pärast 'я' (kui see on asjakohane ja olemas kasutatavas kodeeringus)
Lisaks võib kontrollida:
- Tühi string:
"" - Ühe märgiga string: 'б' (mis tahes märk vahemikus)
- String, mis sisaldab märgiseid nii vahemikus kui ka väljaspool seda: "абвA1"
Testimine hõlmab nende väärtuste saatmist sisendvälja ja süsteemi oodatava käitumise kontrolli: lubatud väärtuste vastuvõtmist ja mittevastavate keeldumist (või õiget töötlemist):
Python näide:
# Funktsioon, mis kontrollib stringi vastavust kirillitsa väikestele tähtedele
def validate_cyrillic_lowercase(text):
import re
return bool(re.fullmatch('[а-я]+', text))
# Piirangutega seotud testjuhtumid
test_cases = {
"Alamraja (esimene märk)": ('а', True),
"Alamraja (enne vahemikku, kehtetu)": ('`', False), # Näide märgist enne 'а'
"Ülemraja (viimane märk)": ('я', True),
"Ülemraja (pärast vahemikku, kehtetu)": ('{', False), # Näide märgist pärast 'я'
"Sisemine vahemik": ('абв', True),
"Tühi string": ('', False),
"Ladina tähed": ('abc', False),
"Numbrid": ('123', False),
"Spetsiaalsed märgid": ('@#$', False),
"Kirilitsa suured tähed": ('АБВ', False),
"Segatud string": ('абвA1', False)
}
# Testide käivitamine
for description, (value, expected) in test_cases.items():
actual = validate_cyrillic_lowercase(value)
assert actual == expected, f"Test: {description}, Väärtus: '{value}', Oodatud: {expected}, Saadud: {actual}"
print(f"Test '{description}' edukalt läbitud.")