home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 2011 July / maximum-cd-2011-07.iso / DiscContents / LibO_3.3.2_Win_x86_install_multi.exe / libreoffice1.cab / test_shelve.py < prev    next >
Encoding:
Python Source  |  2011-03-15  |  4.1 KB  |  151 lines

  1. import os
  2. import unittest
  3. import shelve
  4. import glob
  5. from test import test_support
  6.  
  7. class TestCase(unittest.TestCase):
  8.  
  9.     fn = "shelftemp" + os.extsep + "db"
  10.  
  11.     def test_close(self):
  12.         d1 = {}
  13.         s = shelve.Shelf(d1, protocol=2, writeback=False)
  14.         s['key1'] = [1,2,3,4]
  15.         self.assertEqual(s['key1'], [1,2,3,4])
  16.         self.assertEqual(len(s), 1)
  17.         s.close()
  18.         self.assertRaises(ValueError, len, s)
  19.         try:
  20.             s['key1']
  21.         except ValueError:
  22.             pass
  23.         else:
  24.             self.fail('Closed shelf should not find a key')
  25.  
  26.     def test_ascii_file_shelf(self):
  27.         try:
  28.             s = shelve.open(self.fn, protocol=0)
  29.             s['key1'] = (1,2,3,4)
  30.             self.assertEqual(s['key1'], (1,2,3,4))
  31.             s.close()
  32.         finally:
  33.             for f in glob.glob(self.fn+"*"):
  34.                 os.unlink(f)
  35.  
  36.     def test_binary_file_shelf(self):
  37.         try:
  38.             s = shelve.open(self.fn, protocol=1)
  39.             s['key1'] = (1,2,3,4)
  40.             self.assertEqual(s['key1'], (1,2,3,4))
  41.             s.close()
  42.         finally:
  43.             for f in glob.glob(self.fn+"*"):
  44.                 os.unlink(f)
  45.  
  46.     def test_proto2_file_shelf(self):
  47.         try:
  48.             s = shelve.open(self.fn, protocol=2)
  49.             s['key1'] = (1,2,3,4)
  50.             self.assertEqual(s['key1'], (1,2,3,4))
  51.             s.close()
  52.         finally:
  53.             for f in glob.glob(self.fn+"*"):
  54.                 os.unlink(f)
  55.  
  56.     def test_in_memory_shelf(self):
  57.         d1 = {}
  58.         s = shelve.Shelf(d1, protocol=0)
  59.         s['key1'] = (1,2,3,4)
  60.         self.assertEqual(s['key1'], (1,2,3,4))
  61.         s.close()
  62.         d2 = {}
  63.         s = shelve.Shelf(d2, protocol=1)
  64.         s['key1'] = (1,2,3,4)
  65.         self.assertEqual(s['key1'], (1,2,3,4))
  66.         s.close()
  67.  
  68.         self.assertEqual(len(d1), 1)
  69.         self.assertNotEqual(d1, d2)
  70.  
  71.     def test_mutable_entry(self):
  72.         d1 = {}
  73.         s = shelve.Shelf(d1, protocol=2, writeback=False)
  74.         s['key1'] = [1,2,3,4]
  75.         self.assertEqual(s['key1'], [1,2,3,4])
  76.         s['key1'].append(5)
  77.         self.assertEqual(s['key1'], [1,2,3,4])
  78.         s.close()
  79.  
  80.         d2 = {}
  81.         s = shelve.Shelf(d2, protocol=2, writeback=True)
  82.         s['key1'] = [1,2,3,4]
  83.         self.assertEqual(s['key1'], [1,2,3,4])
  84.         s['key1'].append(5)
  85.         self.assertEqual(s['key1'], [1,2,3,4,5])
  86.         s.close()
  87.  
  88.         self.assertEqual(len(d1), 1)
  89.         self.assertEqual(len(d2), 1)
  90.  
  91.  
  92. from test import mapping_tests
  93.  
  94. class TestShelveBase(mapping_tests.BasicTestMappingProtocol):
  95.     fn = "shelftemp.db"
  96.     counter = 0
  97.     def __init__(self, *args, **kw):
  98.         self._db = []
  99.         mapping_tests.BasicTestMappingProtocol.__init__(self, *args, **kw)
  100.     type2test = shelve.Shelf
  101.     def _reference(self):
  102.         return {"key1":"value1", "key2":2, "key3":(1,2,3)}
  103.     def _empty_mapping(self):
  104.         if self._in_mem:
  105.             x= shelve.Shelf({}, **self._args)
  106.         else:
  107.             self.counter+=1
  108.             x= shelve.open(self.fn+str(self.counter), **self._args)
  109.         self._db.append(x)
  110.         return x
  111.     def tearDown(self):
  112.         for db in self._db:
  113.             db.close()
  114.         self._db = []
  115.         if not self._in_mem:
  116.             for f in glob.glob(self.fn+"*"):
  117.                 test_support.unlink(f)
  118.  
  119. class TestAsciiFileShelve(TestShelveBase):
  120.     _args={'protocol':0}
  121.     _in_mem = False
  122. class TestBinaryFileShelve(TestShelveBase):
  123.     _args={'protocol':1}
  124.     _in_mem = False
  125. class TestProto2FileShelve(TestShelveBase):
  126.     _args={'protocol':2}
  127.     _in_mem = False
  128. class TestAsciiMemShelve(TestShelveBase):
  129.     _args={'protocol':0}
  130.     _in_mem = True
  131. class TestBinaryMemShelve(TestShelveBase):
  132.     _args={'protocol':1}
  133.     _in_mem = True
  134. class TestProto2MemShelve(TestShelveBase):
  135.     _args={'protocol':2}
  136.     _in_mem = True
  137.  
  138. def test_main():
  139.     test_support.run_unittest(
  140.         TestAsciiFileShelve,
  141.         TestBinaryFileShelve,
  142.         TestProto2FileShelve,
  143.         TestAsciiMemShelve,
  144.         TestBinaryMemShelve,
  145.         TestProto2MemShelve,
  146.         TestCase
  147.     )
  148.  
  149. if __name__ == "__main__":
  150.     test_main()
  151.