Пример #1
0
    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'))
Пример #2
0
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