56 lines
1.9 KiB
Python
56 lines
1.9 KiB
Python
import os
|
|
import tempfile
|
|
import unittest
|
|
|
|
from d2warehouse.db import close_db, create_db, get_db, set_db_path
|
|
from d2warehouse.item import Item
|
|
from d2warehouse.parser import parse_item
|
|
|
|
|
|
class DbTest(unittest.TestCase):
|
|
@classmethod
|
|
def setUpClass(cls) -> None:
|
|
cls._fd, cls._path = tempfile.mkstemp()
|
|
set_db_path(cls._path)
|
|
create_db()
|
|
|
|
@classmethod
|
|
def tearDownClass(cls):
|
|
close_db()
|
|
os.close(cls._fd)
|
|
os.unlink(cls._path)
|
|
|
|
def test_runeword_lore(self):
|
|
data = bytes.fromhex(
|
|
"10088004050054c637f1073af4558697412981070881506049e87f005516fb134582ff1000a0003500e07cbb001000a0003504e07c9800"
|
|
)
|
|
_, item = parse_item(data)
|
|
|
|
db = get_db()
|
|
db_id = item.write_to_db(db=db)
|
|
loaded_item = Item.load_from_db(db_id, db=db)
|
|
self.assertEqual(item, loaded_item)
|
|
|
|
# Check that requirement was written properly
|
|
reqs = db.execute(
|
|
"SELECT req_lvl, req_str, req_dex, req_class FROM item JOIN item_extra ON id = item_id WHERE id = ?",
|
|
(db_id,),
|
|
).fetchone()
|
|
expected_reqs = item.requirements()
|
|
self.assertEqual(reqs["req_lvl"], expected_reqs["lvl"])
|
|
self.assertEqual(reqs["req_str"], expected_reqs["str"])
|
|
self.assertEqual(reqs["req_dex"], expected_reqs["dex"])
|
|
self.assertEqual(reqs["req_class"], expected_reqs["class"])
|
|
|
|
def test_empty_sockets(self):
|
|
# superior armor with empty sockets
|
|
data = bytes.fromhex("10088000050014df175043b1b90cc38d80e3834070b004f41f")
|
|
_, item = parse_item(data)
|
|
|
|
db = get_db()
|
|
db_id = item.write_to_db(db=db)
|
|
loaded_item = Item.load_from_db(db_id, db=db)
|
|
self.assertEqual(loaded_item.sockets, 2)
|
|
self.assertEqual(len(loaded_item.socketed_items), 0)
|
|
self.assertEqual(item, loaded_item)
|