-3
I have a problem to do a test method in this JAVA program. The method I devised was to verify that the wolf is dead.
@Test
public void verificaSeOLoboMorreAposCompletarAIdade(){
campo = new Campo(4,4);
localizacao = new Localizacao(0,0);
ArrayList<LoboGuara> novosLobos = new ArrayList<>();
loboGuara = new LoboGuara(false,campo,localizacao);
for (int i = 0; i >= 7; i++){
loboGuara.caca(novosLobos);
}
Assert.assertTrue(campo.pegarAnimalNaPosicao(0,0) == null);
}
The methods are private, along with their attributes. (I cannot change them)
private static final int IDADE_PROCRIACAO = 10;
private static final int IDADE_MAXIMA = 150;
private static final double PROBABILIDADE_PROCRIACAO = 0.75;
private static final int TAMANHO_MAXIMO_NINHADA = 5;
private static final int VALOR_FOME_OVELHA = 7;
private static final Random rand = Randomizador.getRandom();
private int idade;
private boolean vivo;
private Localizacao localizacao;
private Campo campo;
private int nivelFome;
public LoboGuara(boolean idadeRandomica, Campo campo, Localizacao localizacao)
{
idade = 0;
vivo = true;
this.campo = campo;
setLocalizacao(localizacao);
if(idadeRandomica) {
idade = rand.nextInt(IDADE_MAXIMA);
nivelFome = rand.nextInt(VALOR_FOME_OVELHA);
}
else {
nivelFome = VALOR_FOME_OVELHA;
}
}
public void caca(List<LoboGuara> novosLobos)
{
this.incrementaIdade();
this.incrementaFome();
if(vivo) {
daALuz(novosLobos);
Localizacao newLocalizacao = procuraComida(localizacao);
if(newLocalizacao == null) {
newLocalizacao = campo.localizacaoAdjacenteLivre(localizacao);
}
if(newLocalizacao != null) {
setLocalizacao(newLocalizacao);
}
else {
setMorte();
}
}
}
public boolean estaVivo()
{
return vivo;
}
public Localizacao getLocalizacao()
{
return localizacao;
}
private void setLocalizacao(Localizacao newLocalizacao)
{
if(localizacao != null) {
campo.limpa(localizacao);
}
localizacao = newLocalizacao;
try {
campo.lugar(this, newLocalizacao);
} catch (ObjetoInvalidoException e) {
e.printStackTrace();
}
}
private void incrementaIdade()
{
idade++;
if(idade >= IDADE_MAXIMA) {
setMorte();
}
}
private void incrementaFome()
{
nivelFome--;
if(nivelFome == 0) {
setMorte();
}
}
private Localizacao procuraComida(Localizacao localizacao)
{
List<Localizacao> adjacente = campo.localizacoesAdjacentes(localizacao);
Iterator<Localizacao> it = adjacente.iterator();
while(it.hasNext()) {
Localizacao onde = it.next();
Object animal = campo.pegarAnimalNaPosicao(onde);
if (animal instanceof Ovelha) {
Ovelha ovelha = (Ovelha) animal;
ovelha.setMorte();
nivelFome = VALOR_FOME_OVELHA;
return onde;
}
}
return null;
}
private void daALuz(List<LoboGuara> novosLobos)
{
List<Localizacao> livre = campo.localizacoesAdjacentesLivres(localizacao);
int nascimentos = procria();
for(int b = 0; b < nascimentos; b++) {
if (livre.size() > 0) {
Localizacao loc = livre.remove(0);
LoboGuara jovem = new LoboGuara(false, campo, loc);
novosLobos.add(jovem);
}
}
}
private int procria()
{
int nascimentos = 0;
if(podeProcriar() && rand.nextDouble() < PROBABILIDADE_PROCRIACAO) {
nascimentos = rand.nextInt(TAMANHO_MAXIMO_NINHADA) + 1;
}
return nascimentos;
}
private boolean podeProcriar()
{
return idade > IDADE_PROCRIACAO;
}
private void setMorte()
{
vivo = false;
if(localizacao != null) {
campo.limpa(localizacao);
localizacao = null;
campo = null;
}
}
}
If anyone can shed some light!
Post the source code itself in no images. This makes it easy for those who answer.
– Zulian
Please read this : https://pt.meta.stackoverflow.com/questions/5483/manual-de-como-n%C3%83o-ask-questions
– Bruno
The chances of someone trying to help you with the codes in images are very low, just as @Zulian quoted, post the code instead of images
– R.Santos
Now, yes. Thank you for your help!
– I. Oliveira
Missed the
public class LoboGuara
and the Imports. The classLoboGuara
has some structural problems, but if you can’t change it, keep it quiet. However, it’s not clear what you want to test exactly. You want to test only if the maned wolf dies or you want to test the behavior of all public methods?– Victor Stafusa
@Victorstafusa Thanks for the answer! I’m wanting to test all the public methods. I want to test if the lobeGuara dies, after reaching the level of hunger.
– I. Oliveira