feat(items): add bound role control items

This commit is contained in:
dmg
2026-08-21 21:28:32 -04:00
parent ec7d50c2b5
commit 0b202f588d
24 changed files with 777 additions and 13 deletions
@@ -0,0 +1,41 @@
package games.dmg.spigottyrant;
import static org.junit.jupiter.api.Assertions.assertEquals;
import java.time.Duration;
import java.util.Optional;
import java.util.Set;
import java.util.UUID;
import org.junit.jupiter.api.Test;
final class RoleControlItemPolicyTest {
@Test
void runningRoleHoldersRequireOnlyTheirOwnControlItem() {
UUID tyrantId = UUID.fromString("11111111-1111-1111-1111-111111111111");
UUID vigilanteId = UUID.fromString("22222222-2222-2222-2222-222222222222");
GameState game = new GameState(
GameLifecycle.RUNNING, Optional.of(tyrantId), Optional.of(vigilanteId),
Optional.empty(), Optional.empty(), Optional.empty(), Duration.ZERO,
0, 0, Set.of()
);
assertEquals(Optional.of(RoleControl.TYRANT),
RoleControlItemPolicy.requiredRole(game, tyrantId));
assertEquals(Optional.of(RoleControl.VIGILANTE),
RoleControlItemPolicy.requiredRole(game, vigilanteId));
assertEquals(Optional.empty(), RoleControlItemPolicy.requiredRole(game, UUID.randomUUID()));
}
@Test
void pausedRoleHolderRetainsControlItem() {
UUID tyrantId = UUID.fromString("11111111-1111-1111-1111-111111111111");
GameState game = new GameState(
GameLifecycle.PAUSED, Optional.of(tyrantId), Optional.empty(),
Optional.empty(), Optional.empty(), Optional.of(java.time.Instant.EPOCH),
Duration.ZERO, 0, 0, Set.of()
);
assertEquals(Optional.of(RoleControl.TYRANT),
RoleControlItemPolicy.requiredRole(game, tyrantId));
}
}