Opa, fiz da seguinte forma:
Classe de teste:
@Test
void testaPedido12() {
double esperado;
Pedido p = new Pedido();
ItemDePedido idp = new ItemDePedido();
ItemDePedido idp2 = new ItemDePedido();
ItemDePedido idp3 = new ItemDePedido();
p.setValorTotalPermitido(2000);
idp.setNome("monitor");
idp.setPreco(153.33);
idp.setQuantidade(2);
idp2.setNome("fonte");
idp2.setPreco(219.02);
idp2.setQuantidade(3);
idp3.setNome("calculadora");
idp3.setPreco(113.00);
idp3.setQuantidade(3);
p.acrescentaItem(idp);
p.acrescentaItem(idp2);
p.acrescentaItem(idp3);
p.retiraItem("fonte");
esperado = p.getTotal();
assertEquals(645.66, esperado, 0.01);
}
Aqui estou adicionando 3 itens com quantidades e preços diferentes, depois removo um deles com a solução no tópico acima, e depois testo o valor esperado pelo método getTotal().
Implementação do método getTotal, no qual usei um for simples pra percorrer, pegando o preço de cada produto e multiplicando pela quantidade:
public double getTotal() {
double vlTotal = 0;
for(int i = 0; i < itemPedido.size(); i++) {
vlTotal = vlTotal + (itemPedido.get(i).getPreco() * itemPedido.get(i).getQuantidade());
}
return vlTotal;
}
Um bônus caso alguém também precise, a implementação do método para remover, retiraItem(), que recebe o nome do item e caso ele não seja encontrado lança uma exceção:
public void retiraItem(String nome) {
boolean exist = false;
int indiceRemovido = 0;
for(int i = 0; i < itemPedido.size(); i++) {
if(itemPedido.get(i).getNome().equals(nome)) {
exist = true;
indiceRemovido = i;
break;
}
}
if(exist) {
itemPedido.remove(indiceRemovido);
} else {
throw new RuntimeException("Item não encontrado no pedido");
}
}
Obs: nesse me bati um pouco para lançar a exceção apenas quando não existisse. Estava tendo o problema pq ele não estava percorrendo o IF, solucionei tirando o método itemPedido.remove() de dentro do FOR e cirei um boolean pra ele cair em outro IF.
Desculpa se ficou um pouco longo, mas espero que possa ajudar alguém também
.
Caso tenham alguma sugestão para melhorar o código, será muito bem vinda.
Valeu!