18 de jan de 2014

Lista de Testes - Completa

Conforme prometido segue a lista de testes completa. Bom, pelo menos acho que está completa.
Procurei atender todas as situações de condicionais do método Relatorio. Todos os esteste estão executando sem erros. Agora, posso iniciar o refactoring, e se algum teste começar a falhar durante o refactoring, é porque algo está errado, e estou inserindo um bug no programa.

unit uTesteLocacao;

interface

uses TestFramework, uCliente, uFilme, uAluguel;

type
  TTestLocacao = class(TTestCase)
  published
    procedure LocacaoFilmeInfantil1Dia;
    procedure LocacaoFilmeInfantil4Dias;
    procedure LocacaoFilmeLancamento1Dia;
    procedure LocacaoFilmeLancamento2Dias;
    procedure LocacaoFilmeRegular1Dia;
    procedure LocacaoFilmeRegular3Dias;
    procedure Locacao3FilmesDistintos5Dias;
  end;

implementation

{ TTestLocacao }

procedure TTestLocacao.Locacao3FilmesDistintos5Dias;
var
  FilmeInfantil: TFilme;
  FilmeRegular: TFilme;
  FilmeLancamento: TFilme;
  Cliente: TCliente;
  Locacao: TLocacao;
  Resultado: String;
  Esperado: String;
begin
  try
    FilmeInfantil := TFilme.Create('Tarzan', TFilme.Infantil);
    FilmeLancamento := TFilme.Create('O Hobbit', TFilme.Lancamento);
    FilmeRegular := TFilme.Create('Máquina Mortífera I', TFilme.Regular);
    Cliente := TCliente.Create('Alice');
    Locacao := TLocacao.Create(FilmeInfantil, 5);
    Cliente.AdicionaLocacao(Locacao);
    Locacao := TLocacao.Create(FilmeRegular, 5);
    Cliente.AdicionaLocacao(Locacao);
    Locacao := TLocacao.Create(FilmeLancamento, 1);
    Cliente.AdicionaLocacao(Locacao);
    Resultado := Cliente.Relatorio();
    Esperado := 'Registro de locação de Alice' + #13 + '|Tarzan|4,5' + #13 + '|Máquina Mortífera I|6,5' + #13 + '|O Hobbit|3' + #13 + 'O total é: 14' + #13 + 'Você ganhou: 3 pontos';
    Check(Resultado = Esperado, 'Falha no teste: Esperado: ' + Esperado + ' Realizado:' + Resultado);
  finally
    FilmeInfantil.Free;
    FilmeRegular.Free;
    FilmeLancamento.Free;
    Cliente.Free;
    Locacao.Free;
  end;
end;

procedure TTestLocacao.LocacaoFilmeInfantil1Dia;
var
  Filme: TFilme;
  Cliente: TCliente;
  Locacao: TLocacao;
  Resultado: String;
  Esperado: String;
begin
  try
    Filme := TFilme.Create('Tarzan', TFilme.Infantil);
    Locacao := TLocacao.Create(Filme, 1);
    Cliente := TCliente.Create('Alice');
    Cliente.AdicionaLocacao(Locacao);
    Resultado := Cliente.Relatorio();
    Esperado := 'Registro de locação de Alice' + #13 + '|Tarzan|1,5' + #13 + 'O total é: 1,5' + #13 + 'Você ganhou: 1 pontos';
    Check(Resultado = Esperado, 'Falha no teste: Esperado: ' + Esperado + ' Realizado:' + Resultado);
  finally
    Filme.Free;
    Cliente.Free;
    Locacao.Free;
  end;
end;

procedure TTestLocacao.LocacaoFilmeInfantil4Dias;
var
  Filme: TFilme;
  Cliente: TCliente;
  Locacao: TLocacao;
  Resultado: String;
  Esperado: String;
begin
  try
    Filme := TFilme.Create('Tarzan', TFilme.Infantil);
    Locacao := TLocacao.Create(Filme, 4);
    Cliente := TCliente.Create('Alice');
    Cliente.AdicionaLocacao(Locacao);
    Resultado := Cliente.Relatorio();
    Esperado := 'Registro de locação de Alice' + #13 + '|Tarzan|3' + #13 + 'O total é: 3' + #13 + 'Você ganhou: 1 pontos';
    Check(Resultado = Esperado, 'Falha no teste: Esperado: ' + Esperado + ' Realizado:' + Resultado);
  finally
    Filme.Free;
    Cliente.Free;
    Locacao.Free;
  end;
end;

procedure TTestLocacao.LocacaoFilmeLancamento1Dia;
var
  Filme: TFilme;
  Cliente: TCliente;
  Locacao: TLocacao;
  Resultado: String;
  Esperado: String;
begin
  try
    Filme := TFilme.Create('O Hobbit', TFilme.Lancamento);
    Locacao := TLocacao.Create(Filme, 1);
    Cliente := TCliente.Create('Alice');
    Cliente.AdicionaLocacao(Locacao);
    Resultado := Cliente.Relatorio();
    Esperado := 'Registro de locação de Alice' + #13 + '|O Hobbit|3' + #13 + 'O total é: 3' + #13 + 'Você ganhou: 1 pontos';
    Check(Resultado = Esperado, 'Falha no teste: Esperado: ' + Esperado + ' Realizado:' + Resultado);
  finally
    Filme.Free;
    Cliente.Free;
    Locacao.Free;
  end;
end;

procedure TTestLocacao.LocacaoFilmeLancamento2Dias;
var
  Filme: TFilme;
  Cliente: TCliente;
  Locacao: TLocacao;
  Resultado: String;
  Esperado: String;
begin
  try
    Filme := TFilme.Create('O Hobbit', TFilme.Lancamento);
    Locacao := TLocacao.Create(Filme, 2);
    Cliente := TCliente.Create('Alice');
    Cliente.AdicionaLocacao(Locacao);
    Resultado := Cliente.Relatorio();
    Esperado := 'Registro de locação de Alice' + #13 + '|O Hobbit|6' + #13 + 'O total é: 6' + #13 + 'Você ganhou: 2 pontos';
    Check(Resultado = Esperado, 'Falha no teste: Esperado: ' + Esperado + ' Realizado:' + Resultado);
  finally
    Filme.Free;
    Cliente.Free;
    Locacao.Free;
  end;
end;

procedure TTestLocacao.LocacaoFilmeRegular1Dia;
var
  Filme: TFilme;
  Cliente: TCliente;
  Locacao: TLocacao;
  Resultado: String;
  Esperado: String;
begin
  try
    Filme := TFilme.Create('Máquina Mortífera I', TFilme.Regular);
    Locacao := TLocacao.Create(Filme, 1);
    Cliente := TCliente.Create('Alice');
    Cliente.AdicionaLocacao(Locacao);
    Resultado := Cliente.Relatorio();
    Esperado := 'Registro de locação de Alice' + #13 + '|Máquina Mortífera I|2' + #13 + 'O total é: 2' + #13 + 'Você ganhou: 1 pontos';
    Check(Resultado = Esperado, 'Falha no teste: Esperado: ' + Esperado + ' Realizado:' + Resultado);
  finally
    Filme.Free;
    Cliente.Free;
    Locacao.Free;
  end;
end;

procedure TTestLocacao.LocacaoFilmeRegular3Dias;
var
  Filme: TFilme;
  Cliente: TCliente;
  Locacao: TLocacao;
  Resultado: String;
  Esperado: String;
begin
  try
    Filme := TFilme.Create('Máquina Mortífera I', TFilme.Regular);
    Locacao := TLocacao.Create(Filme, 3);
    Cliente := TCliente.Create('Alice');
    Cliente.AdicionaLocacao(Locacao);
    Resultado := Cliente.Relatorio();
    Esperado := 'Registro de locação de Alice' + #13 + '|Máquina Mortífera I|3,5' + #13 + 'O total é: 3,5' + #13 + 'Você ganhou: 1 pontos';
    Check(Resultado = Esperado, 'Falha no teste: Esperado: ' + Esperado + ' Realizado:' + Resultado);
  finally
    Filme.Free;
    Cliente.Free;
    Locacao.Free;
  end;
end;

initialization

TestFramework.RegisterTest(TTestLocacao.Suite);

end.

Nenhum comentário:

Postar um comentário