mirror of
https://github.com/progval/Limnoria.git
synced 2025-05-04 09:21:07 -05: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
|
import fix
|
||||||
from structures import queue, smallqueue, RingBuffer
|
|
||||||
|
|
||||||
import copy
|
import copy
|
||||||
import sets
|
import sets
|
||||||
import time
|
import time
|
||||||
|
from itertools import imap, chain
|
||||||
|
|
||||||
import conf
|
import conf
|
||||||
import debug
|
import debug
|
||||||
@ -43,6 +43,7 @@ import world
|
|||||||
import ircdb
|
import ircdb
|
||||||
import ircmsgs
|
import ircmsgs
|
||||||
import ircutils
|
import ircutils
|
||||||
|
from structures import queue, smallqueue, RingBuffer
|
||||||
|
|
||||||
###
|
###
|
||||||
# The base class for a callback to be registered with an Irc object. Shows
|
# The base class for a callback to be registered with an Irc object. Shows
|
||||||
@ -132,8 +133,10 @@ class IrcMsgQueue(object):
|
|||||||
ones.
|
ones.
|
||||||
"""
|
"""
|
||||||
__slots__ = ('msgs', 'highpriority', 'normal', 'lowpriority')
|
__slots__ = ('msgs', 'highpriority', 'normal', 'lowpriority')
|
||||||
def __init__(self):
|
def __init__(self, iterable=()):
|
||||||
self.reset()
|
self.reset()
|
||||||
|
for msg in iterable:
|
||||||
|
self.enqueue(msg)
|
||||||
|
|
||||||
def reset(self):
|
def reset(self):
|
||||||
"""Clears the queue."""
|
"""Clears the queue."""
|
||||||
@ -175,6 +178,16 @@ class IrcMsgQueue(object):
|
|||||||
def __nonzero__(self):
|
def __nonzero__(self):
|
||||||
return bool(self.highpriority or self.normal or self.lowpriority)
|
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
|
# Maintains the state of IRC connection -- the most recent messages, the
|
||||||
|
@ -51,6 +51,38 @@ class IrcMsgQueueTestCase(unittest.TestCase):
|
|||||||
join = ircmsgs.join('#foo')
|
join = ircmsgs.join('#foo')
|
||||||
who = ircmsgs.who('#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):
|
def testEmpty(self):
|
||||||
q = irclib.IrcMsgQueue()
|
q = irclib.IrcMsgQueue()
|
||||||
self.failIf(q)
|
self.failIf(q)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user