Browse Source

More functionality

pull/44/head
Andrei 8 years ago
parent
commit
277083d07c
  1. 2
      disco/voice/client.py
  2. 23
      disco/voice/queue.py
  3. 38
      tests/tests_voice_queue.py

2
disco/voice/client.py

@ -226,7 +226,7 @@ class VoiceClient(LoggingClass):
if self.token and self.token != data.token:
return
self.log.info('[%s] Recieved VOICE_SERVER_UPDATE (state = %s)', self, self.state)
self.log.info('[%s] Recieved VOICE_SERVER_UPDATE (state = %s / endpoint = %s)', self, self.state, data.endpoint)
self.token = data.token
self.set_state(VoiceState.AUTHENTICATING)

23
disco/voice/queue.py

@ -1,6 +1,7 @@
import abc
import six
import gevent
import random
@six.add_metaclass(abc.ABCMeta)
@ -22,10 +23,28 @@ class PlayableQueue(BaseQueue):
self._event.set()
self._event = None
def get(self):
def _get(self):
if not len(self._data):
if not self._event:
self._event = gevent.event.Event()
self._event.wait()
return self.get()
return self._get()
return self._data.pop(0)
def get(self):
return self._get()
def shuffle(self):
random.shuffle(self._data)
def clear(self):
self._data = []
def __len__(self):
return len(self._data)
def __iter__(self):
return self._data.__iter__()
def __nonzero__(self):
return True

38
tests/tests_voice_queue.py

@ -16,6 +16,22 @@ class TestPlayableQueue(TestCase):
self.assertEqual(q.get(), 2)
self.assertEqual(q.get(), 3)
def test_len(self):
q = PlayableQueue()
for idx in range(1234):
q.append(idx)
self.assertEqual(len(q), 1234)
def test_iter(self):
q = PlayableQueue()
for idx in range(5):
q.append(idx)
self.assertEqual(sum(q), 10)
def test_blocking_get(self):
q = PlayableQueue()
result = gevent.event.AsyncResult()
@ -26,3 +42,25 @@ class TestPlayableQueue(TestCase):
gevent.spawn(get)
q.append(5)
self.assertEqual(result.get(), 5)
def test_shuffle(self):
q = PlayableQueue()
for idx in range(10000):
q.append(idx)
self.assertEqual(q._data[0], 0)
q.shuffle()
self.assertNotEqual(q._data[0], 0)
def test_clear(self):
q = PlayableQueue()
for idx in range(100):
q.append(idx)
self.assertEqual(q._data[0], 0)
self.assertEqual(q._data[-1], 99)
self.assertEqual(len(q), 100)
q.clear()
self.assertEqual(len(q), 0)

Loading…
Cancel
Save