From f5083a88b50ccba1c5737c5319d06b8fab1f17c6 Mon Sep 17 00:00:00 2001 From: algebro Date: Thu, 5 Sep 2024 21:41:44 -0400 Subject: [PATCH] fix untreated personnel nag for prisoners and add unit tests --- .../UntreatedPersonnelNagDialog.java | 4 +- .../UntreatedPersonnelNagDialogTest.java | 78 +++++++++++++++++++ 2 files changed, 80 insertions(+), 2 deletions(-) create mode 100644 MekHQ/unittests/mekhq/gui/dialog/nagDialogs/UntreatedPersonnelNagDialogTest.java diff --git a/MekHQ/src/mekhq/gui/dialog/nagDialogs/UntreatedPersonnelNagDialog.java b/MekHQ/src/mekhq/gui/dialog/nagDialogs/UntreatedPersonnelNagDialog.java index db50bef3f4..d79e9a6d08 100644 --- a/MekHQ/src/mekhq/gui/dialog/nagDialogs/UntreatedPersonnelNagDialog.java +++ b/MekHQ/src/mekhq/gui/dialog/nagDialogs/UntreatedPersonnelNagDialog.java @@ -26,10 +26,10 @@ import javax.swing.*; public class UntreatedPersonnelNagDialog extends AbstractMHQNagDialog { - private static boolean isUntreatedInjury (Campaign campaign) { + static boolean isUntreatedInjury(Campaign campaign) { return campaign.getActivePersonnel().stream() .filter(p -> (p.needsFixing()) && (p.getDoctorId() == null)) - .anyMatch(p -> !p.getPrisonerStatus().isPrisoner()); + .anyMatch(p -> !p.getPrisonerStatus().isCurrentPrisoner()); } //region Constructors diff --git a/MekHQ/unittests/mekhq/gui/dialog/nagDialogs/UntreatedPersonnelNagDialogTest.java b/MekHQ/unittests/mekhq/gui/dialog/nagDialogs/UntreatedPersonnelNagDialogTest.java new file mode 100644 index 0000000000..8a3fe38305 --- /dev/null +++ b/MekHQ/unittests/mekhq/gui/dialog/nagDialogs/UntreatedPersonnelNagDialogTest.java @@ -0,0 +1,78 @@ +package mekhq.gui.dialog.nagDialogs; + +import megamek.common.EquipmentType; +import mekhq.campaign.Campaign; +import mekhq.campaign.personnel.Person; +import mekhq.campaign.personnel.SkillType; +import mekhq.campaign.personnel.enums.PersonnelRole; +import mekhq.campaign.personnel.enums.PersonnelStatus; +import mekhq.campaign.personnel.enums.PrisonerStatus; +import mekhq.campaign.personnel.ranks.Ranks; +import mekhq.campaign.universe.Systems; +import org.apache.logging.log4j.LogManager; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + + +import static mekhq.gui.dialog.nagDialogs.UntreatedPersonnelNagDialog.isUntreatedInjury; +import static org.junit.jupiter.api.Assertions.*; + +class UntreatedPersonnelNagDialogTest { + Campaign campaign; + Person person; + + @BeforeAll + public static void setup() { + EquipmentType.initializeTypes(); + SkillType.initializeTypes(); + Ranks.initializeRankSystems(); + try { + Systems.setInstance(Systems.loadDefault()); + } catch (Exception ex) { + LogManager.getLogger().error("", ex); + } + } + + @BeforeEach + public void init() { + campaign = new Campaign(); + person = campaign.newPerson(PersonnelRole.MECHWARRIOR); + person.setHits(1); + } + + @Test + public void isUntreatedInjuryIncludesNonPrisonersTest() { + person.setPrisonerStatus(campaign, PrisonerStatus.FREE, false); + campaign.importPerson(person); + assertTrue(isUntreatedInjury(campaign)); + } + + @Test + public void isUntreatedInjuryExcludesPrisonersTest() { + person.setPrisonerStatus(campaign, PrisonerStatus.PRISONER, false); + campaign.importPerson(person); + assertFalse(isUntreatedInjury(campaign)); + } + + @Test + public void isUntreatedInjuryExcludesPrisonerDefectorsTest() { + person.setPrisonerStatus(campaign, PrisonerStatus.PRISONER_DEFECTOR, false); + campaign.importPerson(person); + assertFalse(isUntreatedInjury(campaign)); + } + + @Test + public void isUntreatedInjuryExcludesBondsmenTest() { + person.setPrisonerStatus(campaign, PrisonerStatus.BONDSMAN, false); + campaign.importPerson(person); + assertTrue(isUntreatedInjury(campaign)); + } + + @Test + public void isUntreatedInjuryExcludesInactivePersonnelTest() { + person.setStatus(PersonnelStatus.AWOL); + campaign.importPerson(person); + assertFalse(isUntreatedInjury(campaign)); + } +} \ No newline at end of file