diff options
Diffstat (limited to 'khashmir/test_kstore.py')
-rw-r--r-- | khashmir/test_kstore.py | 91 |
1 files changed, 91 insertions, 0 deletions
diff --git a/khashmir/test_kstore.py b/khashmir/test_kstore.py new file mode 100644 index 0000000..d2f2b15 --- /dev/null +++ b/khashmir/test_kstore.py @@ -0,0 +1,91 @@ +# The contents of this file are subject to the BitTorrent Open Source License +# Version 1.1 (the License). You may not copy or use this file, in either +# source code or executable form, except in compliance with the License. You +# may obtain a copy of the License at http://www.bittorrent.com/license/. +# +# Software distributed under the License is distributed on an AS IS basis, +# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +# for the specific language governing rights and limitations under the +# License. + +import unittest +from BitTorrent.platform import bttime +from time import sleep + +from kstore import KStore +if __name__ =="__main__": + tests = unittest.defaultTestLoader.loadTestsFromNames(['test_kstore']) + result = unittest.TextTestRunner().run(tests) + + +class BasicTests(unittest.TestCase): + def setUp(self): + self.k = KStore() + + def testNoKeys(self): + self.assertEqual(self.k.keys(), []) + + def testKey(self): + self.k['foo'] = 'bar' + self.assertEqual(self.k.keys(), ['foo']) + + def testKeys(self): + self.k['foo'] = 'bar' + self.k['wing'] = 'wang' + l = self.k.keys() + l.sort() + self.assertEqual(l, ['foo', 'wing']) + + def testInsert(self): + self.k['foo'] = 'bar' + self.assertEqual(self.k['foo'], ['bar']) + + def testInsertTwo(self): + self.k['foo'] = 'bar' + self.k['foo'] = 'bing' + l = self.k['foo'] + l.sort() + self.assertEqual(l, ['bar', 'bing']) + + def testExpire(self): + self.k['foo'] = 'bar' + self.k.expire(bttime() - 1) + l = self.k['foo'] + l.sort() + self.assertEqual(l, ['bar']) + self.k['foo'] = 'bing' + t = bttime() + self.k.expire(bttime() - 1) + l = self.k['foo'] + l.sort() + self.assertEqual(l, ['bar', 'bing']) + self.k['foo'] = 'ding' + self.k['foo'] = 'dang' + l = self.k['foo'] + l.sort() + self.assertEqual(l, ['bar', 'bing', 'dang', 'ding']) + self.k.expire(t) + l = self.k['foo'] + l.sort() + self.assertEqual(l, ['dang', 'ding']) + + def testDup(self): + self.k['foo'] = 'bar' + self.k['foo'] = 'bar' + self.assertEqual(self.k['foo'], ['bar']) + + def testSample(self): + for i in xrange(2): + self.k['foo'] = i + l = self.k.sample('foo', 5) + l.sort() + self.assertEqual(l, [0, 1]) + + for i in xrange(10): + for i in xrange(10): + self.k['bar'] = i + l = self.k.sample('bar', 5) + self.assertEqual(len(l), 5) + for i in xrange(len(l)): + self.assert_(l[i] not in l[i+1:]) + |