Пример #1
0
class LRUCache(object):
    def __init__(self):
        self.hash_table = HashTable(50, hash_djb2)
        self.time_tracker = []
        self.size = 0

    def get(self, key, func):
        result = self.hash_table.get(key)
        if result == 'No item found at key ' + key:
            if self.size == 50:
                key_to_remove = self.time_tracker[49]
                self.hash_table.remove(key_to_remove)
                del (self.time_tracker[-1])
                self.size = self.size - 1
            value = func(key)
            result = self.hash_table.put(key, value)
            self.time_tracker.insert(0, key)
            self.size = self.size + 1
        return result
Пример #2
0
def test_get_returns_value():
    hash_function = hash_djb2
    hash_table = HashTable(10, hash_function)
    hash_table.put('banana', 'strawberry')
    result = hash_table.get('banana')
    assert result == 'strawberry'
Пример #3
0
def test_get_returns_no_item_message_with_no_item():
    hash_function = hash_djb2
    hash_table = HashTable(10, hash_function)
    result = hash_table.get('StarWars')
    assert result == 'No item found at key StarWars'