Sobes.tech
Middle

Como pode realizar uma verificação de limites não numéricos, mas alfabéticos?

sobes.tech IA

Resposta da IA

A verificação de valores limite num intervalo alfabético implica testar o primeiro e o último carácter permitido, bem como os caracteres imediatamente antes e depois do intervalo permitido, se existirem no conjunto de caracteres.

Por exemplo, para um campo que aceita letras cirílicas minúsculas (а-я):

  • Limite inferior:
    • 'а' (o primeiro carácter permitido)
    • O carácter antes de 'а' (se aplicável e existir na codificação utilizada)
  • Limite superior:
    • 'я' (o último carácter permitido)
    • O carácter após 'я' (se aplicável e existir na codificação utilizada)

Além disso, podem ser verificadas:

  • String vazia: ""
  • String de um único carácter: 'б' (qualquer carácter dentro do intervalo)
  • String com caracteres fora do intervalo:
    • Latim: 'a', 'z'
    • Dígitos: '1', '9'
    • Caracteres especiais: '$', '#'
    • Cirílico em maiúsculas: 'А', 'Я'
  • String contendo caracteres tanto dentro como fora do intervalo: "абвA1"

O teste envolve enviar esses valores no campo de entrada e verificar o comportamento esperado do sistema: aceitar valores permitidos e rejeitar (ou tratar corretamente) os não permitidos.

Exemplo em código Python:

# Funcionalidade para validar uma string em cirílico minúsculo
def validate_cyrillic_lowercase(text):
    import re
    return bool(re.fullmatch('[а-я]+', text))

# Casos de teste para valores limite
test_cases = {
    "Limite inferior (primeiro carácter)": ('а', True),
    "Limite inferior (antes do intervalo, inválido)": ('`', False), # Exemplo de carácter antes de 'а' em algumas codificações
    "Limite superior (último carácter)": ('я', True),
    "Limite superior (após o intervalo, inválido)": ('{', False), # Exemplo de carácter após 'я' em algumas codificações
    "Dentro do intervalo": ('абв', True),
    "String vazia": ('', False),
    "Latino": ('abc', False),
    "Dígitos": ('123', False),
    "Caracteres especiais": ('@#$', False),
    "Cirílico maiúsculo": ('АБВ', False),
    "String misturada": ('абвA1', False)
}

# Executando testes
for description, (value, expected) in test_cases.items():
    actual = validate_cyrillic_lowercase(value)
    assert actual == expected, f"Teste: {description}, Valor: '{value}', Esperado: {expected}, Obtido: {actual}"
    print(f"Teste '{description}' para o valor '{value}' passado.")