def test_behavior(self): """Test basic behavior.""" h = Hash(1423, 197) h.insert(55, 'fifty five') self.assertEqual((55, 'fifty five'), h.search('fifty five')) self.assertEqual((55, 'fifty five'), h.table[808]) self.assertEqual('A', h.state[808]) h.insert(1234, 'one two three four') self.assertEqual((1234, 'one two three four'), h.search('one two three four'))
class UserDB: def __init__(self): self.list = Hash(USER_HASH_SIZE) self.followRank = [] self.tweetRank = [] self.totalUser = 0 def addUser(self, id, n): if self.list.add(id, n): # If successfully added self.totalUser += 1 return 1 else: return None def deleteUser(self, id): if self.list.delete(id): # If successfully deleted self.totalUser -= 1 else: return None def getUser(self, id): u = self.list.search(id) if u: return u else: return None def plusFollow(self, id): u = self.list.search(id) if u: u.followCount += 1 def plusTweet(self, id): u = self.list.search(id) if u: u.tweetCount += 1 # In construction : need to update leaderboard def updateFollowRank(self): self.followRank.clear() for x in range(len(self.list.hTable)): # Through Hash List n = self.list.hTable[x].start while n: # Through Linked List if n.v: self.followRank.append(n.v) n = n.next self.followRank = sorted(self.followRank, key=self.getFollow, reverse=True) # Sort by FollowCount return self.followRank def updateTweetRank(self): self.tweetRank.clear() for x in range(len(self.list.hTable)): # Through Hash List n = self.list.hTable[x].start while n: # Through Linked List if n.v: self.tweetRank.append(n.v) n = n.next self.tweetRank = sorted(self.tweetRank, key=self.getTweet, reverse=True) # Sort by TweetCount return self.tweetRank def getFollow(self, user): return user.followCount def getTweet(self, user): return user.tweetCount