trackdb: Give TrackAllocators a len() function

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
Anna Schumaker 2021-06-23 10:34:18 -04:00
parent c5e317b737
commit eb6eb0180b
2 changed files with 6 additions and 0 deletions

View File

@ -28,6 +28,10 @@ class TrackAllocator:
return { "tracks" : self.tracks,
"nextid" : self.nextid }
def __len__(self):
with self.lock:
return len(self.tracks)
def __setstate__(self, state):
self.__dict__.update(state)
self.lock = threading.Lock()

View File

@ -36,6 +36,7 @@ class TestTrackAllocator(unittest.TestCase):
track = alloc.allocate(lib, test_tracks / "01 - Test Track.ogg")
self.assertEqual(alloc.tracks[0], track)
self.assertEqual(alloc[0], track)
self.assertEqual(len(alloc), 1)
self.assertEqual(alloc.nextid, 1)
self.assertEqual(track.trackid, 0)
self.assertEqual(self.added, track)
@ -43,6 +44,7 @@ class TestTrackAllocator(unittest.TestCase):
track2 = alloc.allocate(lib, test_tracks / "02 - Test {Disc 2}.ogg")
self.assertEqual(alloc.tracks[1], track2)
self.assertEqual(alloc[1], track2)
self.assertEqual(len(alloc), 2)
self.assertIsNone(alloc.allocate(lib, test_tracks / "No Such File"))
self.assertEqual(self.added, track2)