Add tests for parsing some items and stashes
This commit is contained in:
2
.gitignore
vendored
2
.gitignore
vendored
@@ -2,3 +2,5 @@ __pycache__/
|
||||
*.pyc
|
||||
*.egg-info/
|
||||
/venv/
|
||||
/.coverage
|
||||
/htmlcov
|
||||
|
||||
71
d2warehouse/tests/test_parse_item.py
Normal file
71
d2warehouse/tests/test_parse_item.py
Normal 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)
|
||||
20
d2warehouse/tests/test_parse_stash.py
Normal file
20
d2warehouse/tests/test_parse_stash.py
Normal 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))
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user