mirror of
https://github.com/dcs-liberation/dcs_liberation.git
synced 2025-11-10 14:22:26 +00:00
This PR refactors the Doctrine class to load from YAML files in the resources folder instead of being hardcoded as a step towards making doctrines moddable (Issue #829). I haven't added anything to the changelog as a couple of things should get cleaned up first: - As far as I can tell, the flags in the Doctrine class (cap, cas, sead etc.) aren't used anywhere. Need to test further, and if they're truly not used, will remove them. - Probably need to update the Wiki
44 lines
1.5 KiB
Python
44 lines
1.5 KiB
Python
import pytest
|
|
|
|
from game.data.doctrine import Doctrine, GroundUnitProcurementRatios
|
|
from game.data.units import UnitClass
|
|
|
|
|
|
def test_ground_unit_procurement_ratios_empty() -> None:
|
|
r = GroundUnitProcurementRatios({})
|
|
for unit_class in UnitClass:
|
|
assert r.for_unit_class(unit_class) == 0.0
|
|
|
|
|
|
def test_ground_unit_procurement_ratios_single_item() -> None:
|
|
r = GroundUnitProcurementRatios({UnitClass.TANK: 1})
|
|
for unit_class in UnitClass:
|
|
if unit_class == UnitClass.TANK:
|
|
assert r.for_unit_class(unit_class) == 1.0
|
|
else:
|
|
assert r.for_unit_class(unit_class) == 0.0
|
|
|
|
|
|
def test_ground_unit_procurement_ratios_multiple_items() -> None:
|
|
r = GroundUnitProcurementRatios({UnitClass.TANK: 1, UnitClass.ATGM: 1})
|
|
for unit_class in UnitClass:
|
|
if unit_class in [UnitClass.TANK, UnitClass.ATGM]:
|
|
assert r.for_unit_class(unit_class) == 0.5
|
|
else:
|
|
assert r.for_unit_class(unit_class) == 0.0
|
|
|
|
|
|
def test_ground_unit_procurement_ratios_from_dict() -> None:
|
|
r = GroundUnitProcurementRatios.from_dict({"Tank": 1, "ATGM": 1})
|
|
for unit_class in UnitClass:
|
|
if unit_class in [UnitClass.TANK, UnitClass.ATGM]:
|
|
assert r.for_unit_class(unit_class) == 0.5
|
|
else:
|
|
assert r.for_unit_class(unit_class) == 0.0
|
|
|
|
|
|
def test_doctrine() -> None:
|
|
# This test checks for the presence of a doctrine named "modern" as this doctrine is used as a default
|
|
modern_doctrine = Doctrine.named("modern")
|
|
assert modern_doctrine.name == "modern"
|