def testPurge(self): timedDict = TimedDictionary(TWO_HOURS) timedDict[1] = SomeObject('id1') timedDict[2] = SomeObject('id2') timedDict._now = lambda : time() + ONE_HOUR self.assertEquals([1, 2], timedDict._expirationOrder) timedDict[3] = SomeObject('id3') timedDict.touch(2) timedDict._now = lambda : time() + TWO_HOURS timedDict.purge() self.assertEquals([3, 2], timedDict._expirationOrder) timedDict._now = lambda : time() + TWO_HOURS + TWO_HOURS timedDict.purge() self.assertEquals([], timedDict._expirationOrder)
def testPurge(self): timedDict = TimedDictionary(TWO_HOURS) timedDict[1] = SomeObject('id1') timedDict[2] = SomeObject('id2') timedDict._now = lambda: time() + ONE_HOUR self.assertEqual([1, 2], timedDict._expirationOrder) timedDict[3] = SomeObject('id3') timedDict.touch(2) timedDict._now = lambda: time() + TWO_HOURS timedDict.purge() self.assertEqual([3, 2], timedDict._expirationOrder) timedDict._now = lambda: time() + TWO_HOURS + TWO_HOURS timedDict.purge() self.assertEqual([], timedDict._expirationOrder)
def testDeleteExpiredOnGetItem(self): timedDict = TimedDictionary(TWO_HOURS) timedDict[1] = SomeObject('id1') timedDict._now = lambda : time() + TWO_HOURS self.assertRaises(KeyError, timedDict.__getitem__, 1) self.assertEquals([], timedDict._expirationOrder)
def testPeek(self): timedDict = TimedDictionary(TWO_HOURS) timedDict[1] = "Now you see me, now you don't." timedDict._now = lambda : time() + TWO_HOURS self.assertEquals("Now you see me, now you don't.", timedDict.peek(1)) self.assertRaises(KeyError, timedDict.__getitem__, 1)
def testPurgeOnSetItem(self): timedDict = TimedDictionary(TWO_HOURS) timedDict[1] = SomeObject('id1') timedDict._now = lambda: time() + TWO_HOURS timedDict[2] = SomeObject('id2') self.assertEqual([2], timedDict._expirationOrder)
def testPurgeOnSetItem(self): timedDict = TimedDictionary(TWO_HOURS) timedDict[1] = SomeObject('id1') timedDict._now = lambda : time() + TWO_HOURS timedDict[2] = SomeObject('id2') self.assertEquals([2], timedDict._expirationOrder)
def testPeek(self): timedDict = TimedDictionary(TWO_HOURS) timedDict[1] = "Now you see me, now you don't." timedDict._now = lambda: time() + TWO_HOURS self.assertEqual("Now you see me, now you don't.", timedDict.peek(1)) self.assertRaises(KeyError, timedDict.__getitem__, 1)
def testDeleteExpiredOnGetItem(self): timedDict = TimedDictionary(TWO_HOURS) timedDict[1] = SomeObject('id1') timedDict._now = lambda: time() + TWO_HOURS self.assertRaises(KeyError, timedDict.__getitem__, 1) self.assertEqual([], timedDict._expirationOrder)
def testExpiredOnInShouldReturnDefaultOnGetWithoutAnException(self): timedDict = TimedDictionary(TWO_HOURS) setTime = time() timedDict._now = lambda : setTime timedDict[1] = SomeObject('id1') timedDict._now = lambda : setTime + TWO_HOURS try: 1 in timedDict except KeyError: self.fail("Key shouldn't have expired yet.") except: self.fail("This should not happen.") timedDict._now = lambda : setTime + TWO_HOURS + 0.000001 self.assertEquals(None, timedDict.get(1)) self.assertEquals('a default', timedDict.get(1, 'a default')) self.assertEquals([], timedDict._expirationOrder)
def testExpiredOnInShouldReturnDefaultOnGetWithoutAnException(self): timedDict = TimedDictionary(TWO_HOURS) setTime = time() timedDict._now = lambda: setTime timedDict[1] = SomeObject('id1') timedDict._now = lambda: setTime + TWO_HOURS try: 1 in timedDict except KeyError: self.fail("Key shouldn't have expired yet.") except: self.fail("This should not happen.") timedDict._now = lambda: setTime + TWO_HOURS + 0.000001 self.assertEqual(None, timedDict.get(1)) self.assertEqual('a default', timedDict.get(1, 'a default')) self.assertEqual([], timedDict._expirationOrder)
def testSize(self): timedDict = TimedDictionary(TWO_HOURS) self.assertEqual(0, timedDict.size()) timedDict['key'] = 'five' self.assertEqual(1, timedDict.size()) timedDict['key'] = 'six' self.assertEqual(1, timedDict.size()) timedDict['key2'] = 'six' self.assertEqual(2, timedDict.size()) timedDict._now = lambda : time() + TWO_HOURS self.assertEqual(0, timedDict.size())
def testSize(self): timedDict = TimedDictionary(TWO_HOURS) self.assertEqual(0, timedDict.size()) timedDict['key'] = 'five' self.assertEqual(1, timedDict.size()) timedDict['key'] = 'six' self.assertEqual(1, timedDict.size()) timedDict['key2'] = 'six' self.assertEqual(2, timedDict.size()) timedDict._now = lambda: time() + TWO_HOURS self.assertEqual(0, timedDict.size())
def testPop(self): timedDict = TimedDictionary(TWO_HOURS) setTime = time() timedDict[1] = "Now you see me, now you don't." self.assertEqual("Now you see me, now you don't.", timedDict.pop(1)) self.assertRaises(KeyError, lambda: timedDict.pop(1)) self.assertEqual("default", timedDict.pop(1, 'default')) self.assertEqual(None, timedDict.pop(1, None)) self.assertEqual("default", timedDict.pop(1, default='default')) self.assertEqual(None, timedDict.pop(1, default=None)) timedDict[1] = "Now you see me, now you don't." setTime = time() timedDict._now = lambda : setTime + TWO_HOURS + 0.000001 self.assertRaises(KeyError, lambda: timedDict.pop(1))
def testPop(self): timedDict = TimedDictionary(TWO_HOURS) setTime = time() timedDict[1] = "Now you see me, now you don't." self.assertEqual("Now you see me, now you don't.", timedDict.pop(1)) self.assertRaises(KeyError, lambda: timedDict.pop(1)) self.assertEqual("default", timedDict.pop(1, 'default')) self.assertEqual(None, timedDict.pop(1, None)) self.assertEqual("default", timedDict.pop(1, default='default')) self.assertEqual(None, timedDict.pop(1, default=None)) timedDict[1] = "Now you see me, now you don't." setTime = time() timedDict._now = lambda: setTime + TWO_HOURS + 0.000001 self.assertRaises(KeyError, lambda: timedDict.pop(1))
def testExpiredLeastRecentlyUsedGracefullyDealtWith(self): timedDict = TimedDictionary(TWO_HOURS, lruMaxSize=2) timedDict['key1'] = 'five' timedDict['key2'] = 'six' timedDict['key3'] = 'seven' self.assertEquals(set(['key2', 'key3']), set(timedDict.keys()), set(timedDict.keys())) self.assertEquals(3, len(timedDict._times)) self.assertEquals(3, len(timedDict._expirationOrder)) timedDict.purge() self.assertEquals(2, len(timedDict._times)) self.assertEquals(2, len(timedDict._expirationOrder)) timedDict._now = lambda : time() + TWO_HOURS timedDict.purge() self.assertEquals([], list(timedDict.keys())) self.assertEquals(0, len(timedDict._times)) self.assertEquals(0, len(timedDict._expirationOrder))
def testExpiredLeastRecentlyUsedGracefullyDealtWith(self): timedDict = TimedDictionary(TWO_HOURS, lruMaxSize=2) timedDict['key1'] = 'five' timedDict['key2'] = 'six' timedDict['key3'] = 'seven' self.assertEqual(set(['key2', 'key3']), set(timedDict.keys()), set(timedDict.keys())) self.assertEqual(3, len(timedDict._times)) self.assertEqual(3, len(timedDict._expirationOrder)) timedDict.purge() self.assertEqual(2, len(timedDict._times)) self.assertEqual(2, len(timedDict._expirationOrder)) timedDict._now = lambda: time() + TWO_HOURS timedDict.purge() self.assertEqual([], list(timedDict.keys())) self.assertEqual(0, len(timedDict._times)) self.assertEqual(0, len(timedDict._expirationOrder))
def testUpdateTimeout(self): timedDict = TimedDictionary(TWO_HOURS) timedDict['key'] = 'five' timedDict._now = lambda : time() + TWO_HOURS timedDict.setTimeout(TWO_HOURS + 1) self.assertEquals("five", timedDict["key"])
def testUpdateTimeout(self): timedDict = TimedDictionary(TWO_HOURS) timedDict['key'] = 'five' timedDict._now = lambda: time() + TWO_HOURS timedDict.setTimeout(TWO_HOURS + 1) self.assertEqual("five", timedDict["key"])