Volver al índice
src/main/java/ar/com/companeros/horror/HorrorPacingTests.java
package ar.com.companeros.horror;
import ar.com.companeros.Companeros;
import java.util.UUID;
import net.minecraft.gametest.framework.*;
import net.minecraft.nbt.CompoundTag;
import net.minecraftforge.gametest.*;
@GameTestHolder(Companeros.ID)
@PrefixGameTestTemplate(false)
public final class HorrorPacingTests {
@GameTest(template = "empty", timeoutTicks = 20)
public void cavesEscalateButHitsDoNotCancelTheHunt(GameTestHelper helper) {
HorrorPacing pacing = new HorrorPacing(); UUID player = UUID.randomUUID();
pacing.intensity(60); pacing.begin(player, 0);
for (int tick = 0; tick <= 1000; tick += 20) pacing.observe(player, tick, true, false);
helper.assertTrue(pacing.mayAttack(player, 1000, 4), "Una visita prolongada a una cueva debe poder convertirse en cacería");
for (int hit = 0; hit < 8; hit++) pacing.hit(player);
helper.assertTrue(pacing.mayAttack(player, 1000, 4), "No existe un límite de dos golpes ni de ocho golpes");
pacing.killed(player, 1000);
helper.assertTrue(!pacing.available(player, 12999) && pacing.available(player, 13000), "La víctima descansa diez minutos tras morir");
helper.succeed();
}
@GameTest(template = "empty", timeoutTicks = 20)
public void restartKeepsRestAndSoundBudgetAndZeroIsQuiet(GameTestHelper helper) {
HorrorPacing pacing = new HorrorPacing(); UUID a = UUID.randomUUID(), b = UUID.randomUUID();
pacing.begin(a, 0); helper.assertTrue(pacing.reserveSound(a, 20), "El primer sonido puede entregarse");
pacing.release(a, 30);
HorrorPacing copy = HorrorPacing.load(pacing.save(new CompoundTag()));
helper.assertTrue(!copy.available(a, 40) && copy.available(b, 40), "Dar descanso a una persona no excluye a otra");
helper.assertTrue(!copy.reserveSound(a, 40), "El reinicio no reinicia los avisos");
copy.intensity(0);
helper.assertTrue(!copy.available(b, 50) && !copy.mayAttack(b, 50, 4) && !copy.reserveSound(b, 50), "Cero desactiva ataques y avisos");
helper.succeed();
}
@GameTest(template = "empty", timeoutTicks = 20)
public void sleepBuildsTensionWithoutEveryTickSpamming(GameTestHelper helper) {
HorrorPacing pacing = new HorrorPacing(); UUID player = UUID.randomUUID(); pacing.begin(player, 0);
pacing.observe(player, 0, false, true); String first = pacing.describe(player, 0);
for (int index = 0; index < 100; index++) pacing.observe(player, 0, false, true);
helper.assertTrue(first.equals(pacing.describe(player, 0)), "Dormir no suma el mismo acontecimiento cien veces");
helper.assertTrue(pacing.reserveSound(player, 0) && !pacing.reserveSound(player, 20), "El siguiente segundo no repite el aviso");
helper.assertTrue(!pacing.mayAttack(player, 0, 4), "Dormirse una vez no provoca un ataque inmediato");
helper.succeed();
}
}