def setUp(self): self.ttl_secs = 5 self.dict = EphimeralDict(ttl_secs=self.ttl_secs)
class EphimeralDictTestCase(unittest.TestCase): def setUp(self): self.ttl_secs = 5 self.dict = EphimeralDict(ttl_secs=self.ttl_secs) def tearDown(self): self.dict = None def test_set_and_get(self): """ Tests if setting items into the EphimeralDict, and getting it works as intended. """ self.dict['a'] = 'foo' self.dict['b'] = 'bar' self.dict['c'] = 'baz' self.assertEqual('foo', self.dict['a']) self.assertEqual('bar', self.dict['b']) self.assertEqual('baz', self.dict['c']) def test_singleton(self): first_dict = EphimeralDict(ttl_secs=self.ttl_secs) first_dict['a'] = 'foo' del first_dict second_dict = EphimeralDict(ttl_secs=self.ttl_secs) self.assertEqual('foo', second_dict['a']) def test_set_and_contains(self): """ Tests if setting items into the EphimeralDict and calling the 'in' operator works as intended. """ self.dict['a'] = 'foo' self.dict['b'] = 'bar' self.assertTrue('a' in self.dict) self.assertTrue('b' in self.dict) self.assertTrue('c' not in self.dict) def test_clear(self): """ Tests EphimeralDict.clear. """ self.dict['a'] = 'foo' self.dict['b'] = 'bar' self.dict['c'] = 'baz' self.assertEqual('foo', self.dict['a']) self.assertEqual('bar', self.dict['b']) self.assertEqual('baz', self.dict['c']) self.dict.clear() self.assertTrue('a' not in self.dict) self.assertTrue('b' not in self.dict) self.assertTrue('c' not in self.dict) def test_prune(self): """ Tests EphimeralDict.prune. """ dict = EphimeralDict(ttl_secs=self.ttl_secs) dict['a'] = 'foo' dict['b'] = 'bar' dict['c'] = 'baz' # test that prune is not called before items' ttl was expired time.sleep(2) self.assertTrue('a' in dict) self.assertTrue('b' in dict) self.assertTrue('c' in dict) # test that prune is called after items' ttl has expired time.sleep(4) self.assertTrue('a' not in dict) self.assertTrue('b' not in dict) self.assertTrue('c' not in dict) def test_initialization(self): """ Tests that the EphimeralDict is only configured once. """ a = EphimeralDict(ttl_secs=self.ttl_secs) b = EphimeralDict(ttl_secs=self.ttl_secs * 2) self.assertEqual(a, b) self.assertEqual(a.ttl_secs, 5) self.assertEqual(a.ttl_secs, b.ttl_secs)