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 -- rekordbox always emits all 20 page-type tables assert int.from_bytes(data[8:12], "little") == 20