From 339cdeb42e21870b894da17a8d2297b6a21d49b8 Mon Sep 17 00:00:00 2001 From: sleet01 Date: Tue, 27 Aug 2024 17:31:28 -0700 Subject: [PATCH 1/2] Safety getBay, add unit test, turn down logging in one location --- MekHQ/src/mekhq/campaign/io/CampaignXmlParser.java | 1 + MekHQ/src/mekhq/campaign/parts/TransportBayPart.java | 2 +- .../src/mekhq/campaign/personnel/enums/Profession.java | 2 +- MekHQ/unittests/mekhq/campaign/parts/PartTest.java | 10 ++++++++++ 4 files changed, 13 insertions(+), 2 deletions(-) diff --git a/MekHQ/src/mekhq/campaign/io/CampaignXmlParser.java b/MekHQ/src/mekhq/campaign/io/CampaignXmlParser.java index ab0a97a9ca..a2bc6e24aa 100644 --- a/MekHQ/src/mekhq/campaign/io/CampaignXmlParser.java +++ b/MekHQ/src/mekhq/campaign/io/CampaignXmlParser.java @@ -368,6 +368,7 @@ public Campaign parse() throws CampaignXmlParseException, NullEntityException { timestamp = System.currentTimeMillis(); // Process parts... + // Note: Units must have their Entities set prior to reaching this point! postProcessParts(retVal, version); LogManager.getLogger().info(String.format("[Campaign Load] Parts processed in %dms", diff --git a/MekHQ/src/mekhq/campaign/parts/TransportBayPart.java b/MekHQ/src/mekhq/campaign/parts/TransportBayPart.java index 10c5cface8..19dc9b59f8 100644 --- a/MekHQ/src/mekhq/campaign/parts/TransportBayPart.java +++ b/MekHQ/src/mekhq/campaign/parts/TransportBayPart.java @@ -57,7 +57,7 @@ public int getBayNumber() { } public Bay getBay() { - if (null != unit) { + if (null != unit && null != unit.getEntity()) { return unit.getEntity().getBayById(bayNumber); } return null; diff --git a/MekHQ/src/mekhq/campaign/personnel/enums/Profession.java b/MekHQ/src/mekhq/campaign/personnel/enums/Profession.java index 693253ecb8..653fa8244c 100644 --- a/MekHQ/src/mekhq/campaign/personnel/enums/Profession.java +++ b/MekHQ/src/mekhq/campaign/personnel/enums/Profession.java @@ -226,7 +226,7 @@ public Profession getAlternateProfession(final String name) { case "--CIVILIAN": return CIVILIAN; default: - LogManager.getLogger().error("Cannot get alternate profession for unknown alternative " + LogManager.getLogger().debug("Cannot get alternate profession for unknown alternative " + name + " returning MECHWARRIOR."); return MECHWARRIOR; } diff --git a/MekHQ/unittests/mekhq/campaign/parts/PartTest.java b/MekHQ/unittests/mekhq/campaign/parts/PartTest.java index f88d891cec..fb0ab58648 100644 --- a/MekHQ/unittests/mekhq/campaign/parts/PartTest.java +++ b/MekHQ/unittests/mekhq/campaign/parts/PartTest.java @@ -345,4 +345,14 @@ public void childParts() { assertTrue(part.getChildParts().isEmpty()); verify(childPart0, times(1)).setParentPart(eq(null)); } + + @Test + public void testTransportBayPartNameNoEntity() { + Campaign mockCampaign = mock(Campaign.class); + Unit mockUnit = mock(Unit.class); + int size = 1000; + TransportBayPart tbp = new TransportBayPart(size, 1, size, mockCampaign); + // Should return default name, _not_ throw NPE here + assertNotNull(tbp.getName()); + } } From 2b09f208f9611873cd44c8217a0bcefa70c36921 Mon Sep 17 00:00:00 2001 From: sleet01 Date: Tue, 27 Aug 2024 18:17:14 -0700 Subject: [PATCH 2/2] Clean up unit test --- MekHQ/unittests/mekhq/campaign/parts/PartTest.java | 1 - 1 file changed, 1 deletion(-) diff --git a/MekHQ/unittests/mekhq/campaign/parts/PartTest.java b/MekHQ/unittests/mekhq/campaign/parts/PartTest.java index fb0ab58648..35fa1895f6 100644 --- a/MekHQ/unittests/mekhq/campaign/parts/PartTest.java +++ b/MekHQ/unittests/mekhq/campaign/parts/PartTest.java @@ -349,7 +349,6 @@ public void childParts() { @Test public void testTransportBayPartNameNoEntity() { Campaign mockCampaign = mock(Campaign.class); - Unit mockUnit = mock(Unit.class); int size = 1000; TransportBayPart tbp = new TransportBayPart(size, 1, size, mockCampaign); // Should return default name, _not_ throw NPE here