mirror of
https://github.com/Threnklyn/dungeon-sheets.git
synced 2026-05-18 20:23:27 +02:00
139 lines
5.0 KiB
Python
139 lines
5.0 KiB
Python
import unittest
|
|
import os
|
|
from pathlib import Path
|
|
|
|
from dungeonsheets import make_sheets, character, monsters
|
|
from dungeonsheets.classes import monk
|
|
|
|
EG_DIR = Path(__file__).parent.parent.resolve() / "examples"
|
|
CHARFILE = EG_DIR / "rogue1.py"
|
|
GMFILE = EG_DIR / "gm.py"
|
|
|
|
|
|
class MakeSheetsTestCase(unittest.TestCase):
|
|
char_pdf = Path(f"{CHARFILE.stem}.pdf")
|
|
gm_pdf = Path(f"{GMFILE.stem}.pdf").resolve()
|
|
|
|
def tearDown(self):
|
|
if self.char_pdf.exists():
|
|
self.char_pdf.unlink()
|
|
if self.gm_pdf.exists():
|
|
self.gm_pdf.unlink()
|
|
|
|
def test_main(self):
|
|
make_sheets.main(args=[str(CHARFILE), "--debug"])
|
|
|
|
def test_make_sheets(self):
|
|
# Character PDF
|
|
make_sheets.make_sheet(sheet_file=CHARFILE)
|
|
# Was the PDF created?
|
|
self.assertTrue(self.char_pdf.exists(),
|
|
f"Character PDF ({self.char_pdf.resolve()}) not created.")
|
|
# GM PDF
|
|
make_sheets.make_sheet(sheet_file=GMFILE)
|
|
self.assertTrue(self.gm_pdf.exists)
|
|
# Was the PDF created?
|
|
self.assertTrue(self.gm_pdf.exists(),
|
|
f"GM PDF ({self.gm_pdf.resolve()}) not created.")
|
|
|
|
def test_make_fancy_sheets(self):
|
|
# Character PDF
|
|
make_sheets.make_sheet(sheet_file=CHARFILE,
|
|
fancy_decorations=True)
|
|
# Was the PDF created?
|
|
self.assertTrue(self.char_pdf.exists(),
|
|
f"Character PDF ({self.char_pdf.resolve()}) not created.")
|
|
# GM PDF
|
|
make_sheets.make_sheet(sheet_file=GMFILE,
|
|
fancy_decorations=True)
|
|
self.assertTrue(self.gm_pdf.exists)
|
|
# Was the PDF created?
|
|
self.assertTrue(self.gm_pdf.exists(),
|
|
f"GM PDF ({self.gm_pdf.resolve()}) not created.")
|
|
|
|
|
|
class PdfOutputTestCase(unittest.TestCase):
|
|
basename = "clara"
|
|
|
|
def tearDown(self):
|
|
temp_files = [f"{self.basename}.pdf"]
|
|
for f in temp_files:
|
|
if os.path.exists(f):
|
|
os.remove(f)
|
|
|
|
def test_file_created(self):
|
|
# Check that a file is created once the function is run
|
|
pdf_name = f"{self.basename}.pdf"
|
|
# self.assertFalse(os.path.exists(pdf_name), f'{pdf_name} already exists.')
|
|
char = character.Character(name="Clara")
|
|
char.saving_throw_proficiencies = ["strength"]
|
|
make_sheets.create_character_pdf_template(
|
|
character=char, basename=self.basename
|
|
)
|
|
self.assertTrue(os.path.exists(pdf_name), f"{pdf_name} not created.")
|
|
|
|
|
|
class TexCreatorTestCase(unittest.TestCase):
|
|
"""Test various helper functions for creating TeX from a character."""
|
|
|
|
def new_character(self):
|
|
char = character.Character(
|
|
name="Dr. Who",
|
|
classes=["Monk", "Druid", "Artificer"],
|
|
levels=[1, 1, 1],
|
|
subclasses=["way of the open hand", None, None],
|
|
magic_items=["cloak of protection"],
|
|
spells=["invisibility"],
|
|
wild_shapes=["crocodile"],
|
|
infusions=["boots of the winding path"]
|
|
)
|
|
return char
|
|
|
|
def test_create_subclasses_tex(self):
|
|
char = self.new_character()
|
|
tex = make_sheets.create_subclasses_tex(character=char)
|
|
self.assertIn(r"\section*{Subclasses}", tex)
|
|
self.assertIn(r"\subsection*{Way of the Open Hand}", tex)
|
|
|
|
def test_create_features_tex(self):
|
|
char = self.new_character()
|
|
tex = make_sheets.create_features_tex(character=char)
|
|
self.assertIn(r"\section*{Features}", tex)
|
|
self.assertIn(r"\subsection*{Martial Arts}", tex)
|
|
|
|
def test_create_magic_items_tex(self):
|
|
char = self.new_character()
|
|
tex = make_sheets.create_magic_items_tex(character=char)
|
|
self.assertIn(r"\section*{Magic Items}", tex)
|
|
self.assertIn(r"\subsection*{Cloak of Protection}", tex)
|
|
|
|
def test_create_spellbook_tex(self):
|
|
char = self.new_character()
|
|
tex = make_sheets.create_spellbook_tex(character=char)
|
|
self.assertIn(r"\section*{Spells}", tex)
|
|
self.assertIn(r"\section*{Invisibility}", tex)
|
|
|
|
def test_create_infusions_tex(self):
|
|
char = self.new_character()
|
|
tex = make_sheets.create_infusions_tex(character=char)
|
|
self.assertIn(r"\section*{Infusions}", tex)
|
|
self.assertIn(r"\subsection*{Boots of the Winding Path}", tex)
|
|
|
|
def test_create_druid_shapes_tex(self):
|
|
char = self.new_character()
|
|
tex = make_sheets.create_druid_shapes_tex(character=char)
|
|
self.assertIn(r"\section*{Known Beasts}", tex)
|
|
self.assertIn(r"\section*{Crocodile}", tex)
|
|
|
|
def test_create_monsters_tex(self):
|
|
monsters_ = [monsters.GiantEagle()]
|
|
tex = make_sheets.create_monsters_tex(monsters=monsters_)
|
|
self.assertIn(r"Giant Eagle", tex)
|
|
|
|
def test_create_party_summary_tex(self):
|
|
char = self.new_character()
|
|
tex = make_sheets.create_party_summary_tex(party=[char])
|
|
self.assertIn(r"\section*{Party}", tex)
|
|
self.assertIn(char.name, tex)
|
|
|