Add tests for parsing some items and stashes

This commit is contained in:
2023-10-24 00:59:27 +02:00
parent 95664502dc
commit 78047a057f
4 changed files with 110 additions and 0 deletions

2
.gitignore vendored
View File

@@ -2,3 +2,5 @@ __pycache__/
*.pyc
*.egg-info/
/venv/
/.coverage
/htmlcov

View File

@@ -0,0 +1,71 @@
import unittest
from d2warehouse.parser import parse_item
from d2warehouse.item import Quality
class ParseItemTest(unittest.TestCase):
def test_gem(self):
# chipped diamond
data = bytes.fromhex("1000a0000524740910")
data, item = parse_item(data)
self.assertEqual(data, b"")
self.assertEqual(item.code, "gcw")
self.assertEqual(item.pos_x, 9)
self.assertEqual(item.pos_y, 0)
self.assertTrue(item.is_simple)
def test_buckler(self):
# white buckler
data = bytes.fromhex("10008000050054a1083f57a9190c01041818fc07")
data, item = parse_item(data)
self.assertEqual(data, b"")
self.assertEqual(item.code, "buc")
self.assertEqual(item.pos_x, 0)
self.assertEqual(item.pos_y, 0)
self.assertEqual(item.quality, Quality.NORMAL)
self.assertFalse(item.is_simple)
self.assertEqual(item.lvl, 12)
def test_rune(self):
# tal rune
data = bytes.fromhex("1000a0000564f67cfb00")
data, item = parse_item(data)
self.assertEqual(data, b"")
self.assertEqual(item.code, "r07")
self.assertEqual(item.pos_x, 9)
self.assertEqual(item.pos_y, 9)
self.assertTrue(item.is_simple)
def test_rare_a(self):
# random rare armor
data = bytes.fromhex(
"10008000050014df17c64083c30b866d534c958c39d15b42c0c1e1c08815cd9c04f80dff01"
)
data, item = parse_item(data)
self.assertEqual(data, b"")
self.assertEqual(item.code, "hla")
self.assertEqual(item.pos_x, 0)
self.assertEqual(item.pos_y, 0)
self.assertEqual(item.quality, Quality.RARE)
self.assertFalse(item.is_simple)
self.assertEqual(item.lvl, 5)
self.assertEqual(len(item.stats), 4)
self.assertEqual(item.defense, 23)
self.assertEqual(item.durability, 28)
self.assertEqual(item.max_durability, 28)
def test_tp_tome(self):
data = bytes.fromhex("100080000500d4a814daf7275a180240e03f")
data, item = parse_item(data)
self.assertEqual(data, b"")
self.assertEqual(item.code, "tbk")
self.assertEqual(item.quantity, 4)
def test_superior_sockets(self):
# superior armor with empty sockets
data = bytes.fromhex("10088000050014df175043b1b90cc38d80e3834070b004f41f")
data, item = parse_item(data)
self.assertEqual(data, b"")
self.assertEqual(item.quality, Quality.HIGH)
self.assertEqual(len(item.stats), 2)
self.assertEqual(item.sockets, 2)

View File

@@ -0,0 +1,20 @@
import unittest
from d2warehouse.parser import parse_stash
class ParseStashTest(unittest.TestCase):
def test_empty(self):
# empty stash with 3 tabs and some gold
data = bytes.fromhex(
"55aa55aa0100000063000000a40100004400000000000000000000000000"
"000000000000000000000000000000000000000000000000000000000000"
"000000004a4d000055aa55aa0100000063000000391b0000440000000000"
"000000000000000000000000000000000000000000000000000000000000"
"0000000000000000000000004a4d000055aa55aa01000000630000003905"
"000044000000000000000000000000000000000000000000000000000000"
"00000000000000000000000000000000000000004a4d0000"
)
stash = parse_stash(data)
self.assertEqual(len(stash.tabs), 3)
gold = tuple(tab.gold for tab in stash.tabs)
self.assertEqual(gold, (420, 6969, 1337))

View File

@@ -32,6 +32,10 @@ dev = [
"black",
]
[tool.setuptools.packages.find]
include = ["d2warehouse*"]
exclude = ["d2warehouse.tests*"]
[project.scripts]
d2dump = "d2warehouse.dump:main"
d2test = "d2warehouse.test:main"
@@ -41,3 +45,16 @@ version = {attr = "d2warehouse.__version__"}
[tool.setuptools.package-data]
d2warehouse = ["data/*.json"]
[tool.pytest.ini_options]
addopts = "--cov --cov-report html --cov-report term"
[tool.coverage.run]
source = ["d2warehouse"]
omit = [
"d2warehouse/tests/*"
]
[tool.coverage.report]
precision = 2
skip_empty = true