Fixed RFE #851183, ircdb.users.numUsers.

This commit is contained in:
Jeremy Fincher 2003-12-01 23:17:26 +00:00
parent 71bd9ed41a
commit e34d9deecd
3 changed files with 27 additions and 1 deletions

View File

@ -47,6 +47,8 @@
* Fixed bug in Gameknot.gkstats when retrieving the stats for
users who haven't yet played a game.
* Added a numUsers() method to ircdb.UsersDB (ircdb.users).
2003-11-18 Jeremy Fincher <jemfinch@users.sf.net>

View File

@ -37,7 +37,7 @@ import os
import sets
import time
import string
from itertools import imap
from itertools import imap, ilen, ifilter
import log
import conf
@ -458,6 +458,9 @@ class UsersDB(object):
except KeyError:
return False
def numUsers(self):
return ilen(ifilter(None, self.users))-1 # -1 is for the bot user.
def setUser(self, id, user):
"""Sets a user (given its id) to the IrcUser given it."""
assert isinstance(id, int), 'setUser takes an integer userId.'

View File

@ -311,6 +311,27 @@ class UsersDBTestCase(unittest.TestCase):
pass
self.users = ircdb.UsersDB(self.filename)
def testNumUsers(self):
self.assertEqual(self.users.numUsers(), 0)
(id, u) = self.users.newUser()
hostmask = 'foo!bar@baz'
banmask = ircutils.banmask(hostmask)
u.addHostmask(banmask)
u.name = 'foo'
self.users.setUser(id, u)
self.assertEqual(self.users.numUsers(), 1)
(id, u) = self.users.newUser()
hostmask = 'biff!fladksfj@blakjdsf'
banmask = ircutils.banmask(hostmask)
u.addHostmask(banmask)
u.name = 'biff'
self.users.setUser(id, u)
self.assertEqual(self.users.numUsers(), 2)
self.users.delUser(2)
self.assertEqual(self.users.numUsers(), 1)
self.users.delUser(1)
self.assertEqual(self.users.numUsers(), 0)
def testGetSetDelUser(self):
self.assertRaises(KeyError, self.users.getUser, 'foo')
self.assertRaises(KeyError, self.users.getUser, 'foo!bar@baz')