mirror of
https://github.com/dcs-liberation/dcs_liberation.git
synced 2025-11-10 14:22:26 +00:00
This reverts commit bd2ec12e0f039c9500ea0dd94e7b2e4f7d168fef. Country is both the data (name, ID, etc) and the container for groups added to the miz, so it can't be used across multiple mission generations. See https://github.com/pydcs/dcs/issues/314 for potential follow up work that would let us do this. Fixes https://github.com/dcs-liberation/dcs_liberation/issues/2864.
109 lines
3.9 KiB
Python
109 lines
3.9 KiB
Python
import json
|
|
import unittest
|
|
from pathlib import Path
|
|
|
|
import pytest
|
|
from dcs.helicopters import AH_64A, UH_1H
|
|
from dcs.planes import (
|
|
AV8BNA,
|
|
A_10A,
|
|
A_10C,
|
|
A_10C_2,
|
|
B_1B,
|
|
B_52H,
|
|
E_2C,
|
|
E_3A,
|
|
FA_18C_hornet,
|
|
F_117A,
|
|
F_14B,
|
|
F_15C,
|
|
F_15E,
|
|
F_16C_50,
|
|
KC130,
|
|
KC_135,
|
|
MQ_9_Reaper,
|
|
)
|
|
from dcs.ships import LHA_Tarawa, Stennis
|
|
from dcs.vehicles import Armor, Artillery, Infantry, Unarmed
|
|
|
|
from game.factions.faction import Faction
|
|
|
|
THIS_DIR = Path(__file__).parent
|
|
RESOURCES_DIR = THIS_DIR / "resources"
|
|
|
|
|
|
class TestFactionLoader(unittest.TestCase):
|
|
def setUp(self) -> None:
|
|
pass
|
|
|
|
@pytest.mark.skip(reason="Faction unit names in the json files are outdated")
|
|
def test_load_valid_faction(self) -> None:
|
|
with (RESOURCES_DIR / "valid_faction.json").open("r") as data:
|
|
faction = Faction.from_dict(json.load(data))
|
|
|
|
self.assertEqual(faction.country, "USA")
|
|
self.assertEqual(faction.name, "USA 2005")
|
|
self.assertEqual(faction.authors, "Khopa")
|
|
self.assertEqual(faction.description, "This is a test description")
|
|
|
|
self.assertIn(F_15C, faction.aircrafts)
|
|
self.assertIn(F_15E, faction.aircrafts)
|
|
self.assertIn(F_14B, faction.aircrafts)
|
|
self.assertIn(FA_18C_hornet, faction.aircrafts)
|
|
self.assertIn(F_16C_50, faction.aircrafts)
|
|
self.assertIn(A_10A, faction.aircrafts)
|
|
self.assertIn(AV8BNA, faction.aircrafts)
|
|
self.assertIn(UH_1H, faction.aircrafts)
|
|
self.assertIn(AH_64A, faction.aircrafts)
|
|
self.assertIn(B_52H, faction.aircrafts)
|
|
self.assertIn(B_1B, faction.aircrafts)
|
|
self.assertIn(F_117A, faction.aircrafts)
|
|
self.assertIn(A_10C, faction.aircrafts)
|
|
self.assertIn(A_10C_2, faction.aircrafts)
|
|
|
|
self.assertEqual(len(faction.awacs), 1)
|
|
self.assertIn(E_3A, faction.awacs)
|
|
self.assertIn(E_2C, faction.awacs)
|
|
|
|
self.assertEqual(len(faction.tankers), 2)
|
|
self.assertIn(KC_135, faction.tankers)
|
|
self.assertIn(KC130, faction.tankers)
|
|
|
|
self.assertTrue(faction.has_jtac)
|
|
self.assertEqual(faction.jtac_unit, MQ_9_Reaper)
|
|
|
|
self.assertIn(Armor.M_1_Abrams, faction.frontline_units)
|
|
self.assertIn(Armor.M1134_Stryker_ATGM, faction.frontline_units)
|
|
self.assertIn(Armor.M1126_Stryker_ICV, faction.frontline_units)
|
|
self.assertIn(Armor.M_2_Bradley, faction.frontline_units)
|
|
self.assertIn(Armor.LAV_25, faction.frontline_units)
|
|
self.assertIn(Armor.M1043_HMMWV_Armament, faction.frontline_units)
|
|
self.assertIn(Armor.M1045_HMMWV_TOW, faction.frontline_units)
|
|
|
|
self.assertIn(Artillery.MLRS, faction.artillery_units)
|
|
self.assertIn(Artillery.M_109, faction.artillery_units)
|
|
|
|
self.assertIn(Unarmed.M_818, faction.logistics_units)
|
|
|
|
self.assertIn(Infantry.Soldier_M4, faction.infantry_units)
|
|
self.assertIn(Infantry.Soldier_M249, faction.infantry_units)
|
|
|
|
self.assertIn(Stennis.name, faction.naval_units)
|
|
self.assertIn(LHA_Tarawa.name, faction.naval_units)
|
|
|
|
self.assertIn("mod", faction.requirements.keys())
|
|
self.assertIn("Some mod is required", faction.requirements.values())
|
|
|
|
self.assertEqual(4, len(faction.carrier_names))
|
|
self.assertEqual(5, len(faction.helicopter_carrier_names))
|
|
|
|
@pytest.mark.skip(reason="Faction unit names in the json files are outdated")
|
|
def test_load_valid_faction_with_invalid_country(self) -> None:
|
|
|
|
with (RESOURCES_DIR / "invalid_faction_country.json").open("r") as data:
|
|
try:
|
|
Faction.from_dict(json.load(data))
|
|
self.fail("Should have thrown assertion error")
|
|
except AssertionError as e:
|
|
pass
|