30 lines
1.1 KiB
Python
30 lines
1.1 KiB
Python
from pathlib import Path
|
|
|
|
from maple.model import Album, Artist, Database, PlaylistEntry, PlaylistNode, Track
|
|
from maple.pdb.writer import write_pdb
|
|
|
|
|
|
def test_smoke(tmp_path: Path):
|
|
db = Database()
|
|
db.artists.append(Artist(id=1, name="AceMo"))
|
|
db.albums.append(Album(id=1, name="All My Life", artist_id=1))
|
|
db.tracks.append(Track(
|
|
id=1, title="Where They At", artist_id=1, album_id=1,
|
|
filename="ace.mp3", file_path="/Contents/AceMo/All My Life/ace.mp3",
|
|
file_size=14547692, sample_rate=44100, sample_depth=16, bitrate=320,
|
|
duration=436, track_number=7, year=2019, date_added="2025-01-04",
|
|
))
|
|
db.playlist_nodes.append(PlaylistNode(id=1, parent_id=0, sort_order=1, name="MyList"))
|
|
db.playlist_entries.append(PlaylistEntry(playlist_id=1, track_id=1, entry_index=1))
|
|
|
|
out = tmp_path / "export.pdb"
|
|
write_pdb(db, out)
|
|
assert out.exists()
|
|
data = out.read_bytes()
|
|
assert len(data) % 4096 == 0
|
|
assert data[:4] == b"\x00\x00\x00\x00"
|
|
# page_size at offset 4
|
|
assert int.from_bytes(data[4:8], "little") == 4096
|
|
# num_tables at offset 8
|
|
assert int.from_bytes(data[8:12], "little") == 5
|