# Copyright 2024 (c) Anna Schumaker. """Tests our ListenBrainz priority queue.""" import emmental.listenbrainz.task import liblistenbrainz import unittest class TestTaskQueue(unittest.TestCase): """Test the ListenBrainz queue.""" def setUp(self): """Set up common variables.""" self.queue = emmental.listenbrainz.task.Queue() def test_init(self): """Test that the queue was set up properly.""" self.assertIsNotNone(self.queue) def test_push_set_token(self): """Test calling push() with the 'set-token' operation.""" self.assertIsNone(self.queue._set_token) self.queue.push("set-token", "abcde") self.assertTupleEqual(self.queue._set_token, ("set-token", "abcde")) self.queue.push("set-token", "fghij") self.assertTupleEqual(self.queue._set_token, ("set-token", "fghij")) self.assertTupleEqual(self.queue.pop(), ("set-token", "fghij")) self.assertIsNone(self.queue._set_token) self.queue.push("set-token", "abcde") self.queue.clear("set-token") self.assertIsNone(self.queue._set_token) def test_push_clear_token(self): """Test calling push() with the 'clear-token' operation.""" self.queue.push("clear-token") self.assertTupleEqual(self.queue._set_token, ("clear-token",)) self.assertTupleEqual(self.queue.pop(), ("clear-token",)) self.assertIsNone(self.queue._set_token) self.queue.push("clear-token") self.queue.clear("clear-token") self.assertIsNone(self.queue._set_token) def test_push_now_playing(self): """Test the push_now_playing() function.""" self.assertIsNone(self.queue._now_playing) listen = liblistenbrainz.Listen("Track Name", "Artist Name") self.queue.push("now-playing", listen) self.assertTupleEqual(self.queue._now_playing, ("now-playing", listen)) self.queue.push("set-token", "abcde") self.assertTupleEqual(self.queue.pop(), ("set-token", "abcde")) self.assertTupleEqual(self.queue.pop(), ("now-playing", listen)) self.assertIsNone(self.queue._now_playing) self.queue.push("now-playing", listen) self.queue.clear("now-playing") self.assertIsNone(self.queue._now_playing)