mirror of
https://github.com/Mikaela/Limnoria.git
synced 2024-11-23 11:09:23 +01:00
Added __len__, __repr__, and a useful __init__ to IrcMsgQueue.
This commit is contained in:
parent
9a7de79467
commit
429c90ac2a
@ -30,11 +30,11 @@
|
||||
###
|
||||
|
||||
import fix
|
||||
from structures import queue, smallqueue, RingBuffer
|
||||
|
||||
import copy
|
||||
import sets
|
||||
import time
|
||||
from itertools import imap, chain
|
||||
|
||||
import conf
|
||||
import debug
|
||||
@ -43,6 +43,7 @@ import world
|
||||
import ircdb
|
||||
import ircmsgs
|
||||
import ircutils
|
||||
from structures import queue, smallqueue, RingBuffer
|
||||
|
||||
###
|
||||
# The base class for a callback to be registered with an Irc object. Shows
|
||||
@ -132,8 +133,10 @@ class IrcMsgQueue(object):
|
||||
ones.
|
||||
"""
|
||||
__slots__ = ('msgs', 'highpriority', 'normal', 'lowpriority')
|
||||
def __init__(self):
|
||||
def __init__(self, iterable=()):
|
||||
self.reset()
|
||||
for msg in iterable:
|
||||
self.enqueue(msg)
|
||||
|
||||
def reset(self):
|
||||
"""Clears the queue."""
|
||||
@ -175,6 +178,16 @@ class IrcMsgQueue(object):
|
||||
def __nonzero__(self):
|
||||
return bool(self.highpriority or self.normal or self.lowpriority)
|
||||
|
||||
def __len__(self):
|
||||
return sum(imap(len,[self.highpriority,self.lowpriority,self.normal]))
|
||||
|
||||
def __repr__(self):
|
||||
name = self.__class__.__name__
|
||||
return '%s(%r)' % (name, list(chain(self.highpriority,
|
||||
self.normal,
|
||||
self.lowpriority)))
|
||||
__str__ = __repr__
|
||||
|
||||
|
||||
###
|
||||
# Maintains the state of IRC connection -- the most recent messages, the
|
||||
|
@ -51,6 +51,38 @@ class IrcMsgQueueTestCase(unittest.TestCase):
|
||||
join = ircmsgs.join('#foo')
|
||||
who = ircmsgs.who('#foo')
|
||||
|
||||
def testInit(self):
|
||||
q = irclib.IrcMsgQueue([self.msg, self.topic, self.ping])
|
||||
self.assertEqual(len(q), 3)
|
||||
|
||||
def testLen(self):
|
||||
q = irclib.IrcMsgQueue()
|
||||
q.enqueue(self.msg)
|
||||
self.assertEqual(len(q), 1)
|
||||
q.enqueue(self.mode)
|
||||
self.assertEqual(len(q), 2)
|
||||
q.enqueue(self.kick)
|
||||
self.assertEqual(len(q), 3)
|
||||
q.enqueue(self.topic)
|
||||
self.assertEqual(len(q), 4)
|
||||
q.dequeue()
|
||||
self.assertEqual(len(q), 3)
|
||||
q.dequeue()
|
||||
self.assertEqual(len(q), 2)
|
||||
q.dequeue()
|
||||
self.assertEqual(len(q), 1)
|
||||
q.dequeue()
|
||||
self.assertEqual(len(q), 0)
|
||||
|
||||
def testRepr(self):
|
||||
q = irclib.IrcMsgQueue()
|
||||
self.assertEqual(repr(q), 'IrcMsgQueue([])')
|
||||
q.enqueue(self.msg)
|
||||
try:
|
||||
repr(q)
|
||||
except Exception, e:
|
||||
self.fail('repr(q) raised an exception: %s' % debug.exnToString(e))
|
||||
|
||||
def testEmpty(self):
|
||||
q = irclib.IrcMsgQueue()
|
||||
self.failIf(q)
|
||||
|
Loading…
Reference in New Issue
Block a user