elite-engineering/tests/test_materials.py
Correl Roush 4b9537c9b9 Fix tests expecting Maybe return types
Tests were not updated when the "returns" dependency was removed.
2022-01-22 01:30:09 -05:00

93 lines
3.1 KiB
Python

import fractions
import typing
import unittest
from elite_engineering import materials
class TradeCalculationTests(unittest.TestCase):
def format_ratio(self, ratio: typing.Optional[fractions.Fraction]) -> str:
if not ratio:
return "-"
return "{}{}".format(ratio.numerator, ratio.denominator)
def test_same_category_exchange(self) -> None:
expected = [
["1 → 1", "1 → 3", "1 → 9", "1 → 27", "1 → 81"],
["6 → 1", "1 → 1", "1 → 3", "1 → 9", "1 → 27"],
["36 → 1", "6 → 1", "1 → 1", "1 → 3", "1 → 9"],
["216 → 1", "36 → 1", "6 → 1", "1 → 1", "1 → 3"],
["-", "216 → 1", "36 → 1", "6 → 1", "1 → 1"],
]
actual = [
[
self.format_ratio(
materials.Material(
"name", materials.MaterialType.raw, "category", grade_in
).trade_ratio(
materials.Material(
"name", materials.MaterialType.raw, "category", grade_out
)
)
)
for grade_in in [1, 2, 3, 4, 5]
]
for grade_out in [1, 2, 3, 4, 5]
]
self.assertEqual(expected, actual)
def test_different_category_exchange(self) -> None:
expected = [
["6 → 1", "2 → 1", "2 → 3", "2 → 9", "2 → 27"],
["36 → 1", "6 → 1", "2 → 1", "2 → 3", "2 → 9"],
["216 → 1", "36 → 1", "6 → 1", "2 → 1", "2 → 3"],
["-", "216 → 1", "36 → 1", "6 → 1", "2 → 1"],
["-", "-", "216 → 1", "36 → 1", "6 → 1"],
]
actual = [
[
self.format_ratio(
materials.Material(
"name", materials.MaterialType.raw, "category", grade_in
).trade_ratio(
materials.Material(
"name", materials.MaterialType.raw, "other", grade_out
)
)
)
for grade_in in [1, 2, 3, 4, 5]
]
for grade_out in [1, 2, 3, 4, 5]
]
self.assertEqual(expected, actual)
def test_different_type_exchange(self) -> None:
expected = [
["-", "-", "-", "-", "-"],
["-", "-", "-", "-", "-"],
["-", "-", "-", "-", "-"],
["-", "-", "-", "-", "-"],
["-", "-", "-", "-", "-"],
]
actual = [
[
self.format_ratio(
materials.Material(
"name", materials.MaterialType.raw, "category", grade_in
).trade_ratio(
materials.Material(
"name", materials.MaterialType.encoded, "other", grade_out
)
)
)
for grade_in in [1, 2, 3, 4, 5]
]
for grade_out in [1, 2, 3, 4, 5]
]
self.assertEqual(expected, actual)