6a830ed285
- Reduce javadocs to one-liners across config/region/physics/tick/viz/plugin root - Translate residual French comments; no behavioural change - Tests adjusted where assertions referenced French strings
93 lines
3.3 KiB
Java
93 lines
3.3 KiB
Java
package com.mythlane.gravityflip.physics;
|
|
|
|
import com.hypixel.hytale.math.shape.Box;
|
|
import com.hypixel.hytale.math.vector.Vector3d;
|
|
import com.mythlane.gravityflip.region.GravityFlipRegion;
|
|
import org.junit.jupiter.api.Test;
|
|
|
|
import java.util.UUID;
|
|
|
|
import static org.junit.jupiter.api.Assertions.assertFalse;
|
|
import static org.junit.jupiter.api.Assertions.assertTrue;
|
|
|
|
/** Pure-data tests for {@link FallDamageGuard} — entry, in-region, exit, grace-window, re-entry. */
|
|
class FallDamageGuardTest {
|
|
|
|
@Test
|
|
void notInRegionReturnsFalse() {
|
|
FallDamageGuard guard = new FallDamageGuard();
|
|
assertFalse(guard.shouldSuppressFallDamage(UUID.randomUUID(), 1000L));
|
|
}
|
|
|
|
@Test
|
|
void inRegionFallDamageTrueReturnsFalse() {
|
|
FallDamageGuard guard = new FallDamageGuard();
|
|
UUID uuid = UUID.randomUUID();
|
|
GravityFlipRegion region = region(true, 2500);
|
|
guard.markInRegion(uuid, region);
|
|
assertFalse(guard.shouldSuppressFallDamage(uuid, 1000L));
|
|
}
|
|
|
|
@Test
|
|
void inRegionFallDamageFalseReturnsTrue() {
|
|
FallDamageGuard guard = new FallDamageGuard();
|
|
UUID uuid = UUID.randomUUID();
|
|
GravityFlipRegion region = region(false, 2500);
|
|
guard.markInRegion(uuid, region);
|
|
assertTrue(guard.shouldSuppressFallDamage(uuid, 1000L));
|
|
}
|
|
|
|
@Test
|
|
void afterExitWithinGraceReturnsTrue() {
|
|
FallDamageGuard guard = new FallDamageGuard();
|
|
UUID uuid = UUID.randomUUID();
|
|
GravityFlipRegion region = region(false, 2500);
|
|
guard.markInRegion(uuid, region);
|
|
long t0 = 1000L;
|
|
guard.markExit(uuid, region, t0);
|
|
assertTrue(guard.shouldSuppressFallDamage(uuid, t0 + 2499));
|
|
}
|
|
|
|
@Test
|
|
void afterExitBeyondGraceReturnsFalse() {
|
|
FallDamageGuard guard = new FallDamageGuard();
|
|
UUID uuid = UUID.randomUUID();
|
|
GravityFlipRegion region = region(false, 2500);
|
|
guard.markInRegion(uuid, region);
|
|
long t0 = 1000L;
|
|
guard.markExit(uuid, region, t0);
|
|
assertFalse(guard.shouldSuppressFallDamage(uuid, t0 + 2501));
|
|
}
|
|
|
|
@Test
|
|
void reEntryAfterExitResetsTracking() {
|
|
FallDamageGuard guard = new FallDamageGuard();
|
|
UUID uuid = UUID.randomUUID();
|
|
GravityFlipRegion region = region(false, 2500);
|
|
guard.markInRegion(uuid, region);
|
|
guard.markExit(uuid, region, 1000L);
|
|
guard.markInRegion(uuid, region);
|
|
assertTrue(guard.shouldSuppressFallDamage(uuid, 1500L));
|
|
}
|
|
|
|
@Test
|
|
void fallDamageTrueRegionNeverSuppressesEvenDuringGrace() {
|
|
FallDamageGuard guard = new FallDamageGuard();
|
|
UUID uuid = UUID.randomUUID();
|
|
GravityFlipRegion suppressed = region(false, 2500);
|
|
GravityFlipRegion allowed = region(true, 2500);
|
|
guard.markInRegion(uuid, suppressed);
|
|
guard.markExit(uuid, suppressed, 1000L);
|
|
guard.markInRegion(uuid, allowed);
|
|
assertFalse(guard.shouldSuppressFallDamage(uuid, 1500L));
|
|
}
|
|
|
|
private static GravityFlipRegion region(boolean fallDamage, int graceMs) {
|
|
GravityFlipRegion r = new GravityFlipRegion(
|
|
"t", new Box(new Vector3d(0, 0, 0), new Vector3d(1, 1, 1)), true);
|
|
r.setFallDamage(fallDamage);
|
|
r.setGracePeriodMs(graceMs);
|
|
return r;
|
|
}
|
|
}
|