terça-feira, 13 de março de 2018

Simular algum cenário em DEBUG

Como testar uma determinada situação sem ter que inserir valores através da interface gráfica? Vou mostrar um exemplo.

Como sempre, usarei um exemplo simples para demonstrar o uso de Diretivas de compilação na simplificação de testes, porém existem outras formas de se fazer testes. Vamos lá!

A título de teste, criei uma função chamada "IsNumber", que basicamente verifica se um determinado char recebido como parâmetro é um número, segue a declaração da função:


function IsNumber( loChar: char ): boolean ;

Após isto, no evento "OnClick" de um botão qualquer, faço um teste:


procedure TfrmMain.btnIsNumberClick(Sender: TObject);
begin
     showmessage( ifThen( IsNumber( '1' ), 'É um número', 'Não é um número' ) );
end;

// falei sobre ifThen neste post...

Porém existem situações muito mais complexas, que existem muito mais que um input, neste caso, seria muito trabalhoso ficar preenchendo campos e etc...precisamos testar a função o mais rápido possível dependendo do projeto. Para isso, podemos automatizar o teste, condicionando esta operação ao modo como a aplicação está sendo compilada: DEBUG ou RELEASE.

Veja como é a implementação da função "IsNumber":

function TfrmMain.IsNumber(loChar: char): boolean;
begin
     result := loChar in ['0'..'9'] ;     
end;

Agora, vou incluir o preenchimento do parâmetro "loChar" dentro da própria função, quando a forma de compilação estiver em DEBUG:

function TfrmMain.IsNumber(loChar: char): boolean;
begin
     {$IFDEF DEBUG}
     loChar := 'a' ;
     {$ENDIF}

     result := loChar in ['0'..'9'] ;

     {$IFDEF DEBUG}
     showmessage( ifThen( result, 'É um número', 'Não é um número' ) );
     {$ENDIF}
end;
Veja que coloquei a verificação de "Debug" em dois momentos. Para resumir, quando o projeto estiver em modo "Debug", não será necessário passar nenhum valor como parâmetro para a função "IsNumber", visto que internamente já existe a alimentação deste parâmetro.

Espero que seja útil!

Até+
 

Nenhum comentário:

Postar um comentário

PHP para iniciantes - Vídeo #1