home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 2010 November / maximum-cd-2010-11.iso / DiscContents / calibre-0.7.13.msi / file_1371 (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2010-08-06  |  5.1 KB  |  122 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.6)
  3.  
  4. __license__ = 'GPL v3'
  5. __copyright__ = '2008, Kovid Goyal kovid@kovidgoyal.net'
  6. __docformat__ = 'restructuredtext en'
  7. import sys
  8. import unittest
  9. import os
  10. import cStringIO
  11. from itertools import repeat
  12. from calibre.ptempfile import PersistentTemporaryDirectory
  13. from calibre.library.database2 import LibraryDatabase2
  14. from calibre.ebooks.metadata import MetaInformation
  15.  
  16. class DBTest(unittest.TestCase):
  17.     img = '\xff\xd8\xff\xe0\x00\x10JFIF\x00\x01\x01\x01\x00d\x00d\x00\x00\xff\xdb\x00C\x00\x05\x03\x04\x04\x04\x03\x05\x04\x04\x04\x05\x05\x05\x06\x07\x0c\x08\x07\x07\x07\x07\x0f\x0b\x0b\t\x0c\x11\x0f\x12\x12\x11\x0f\x11\x11\x13\x16\x1c\x17\x13\x14\x1a\x15\x11\x11\x18!\x18\x1a\x1d\x1d\x1f\x1f\x1f\x13\x17"$"\x1e$\x1c\x1e\x1f\x1e\xff\xdb\x00C\x01\x05\x05\x05\x07\x06\x07\x0e\x08\x08\x0e\x1e\x14\x11\x14\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\xff\xc0\x00\x11\x08\x00\x01\x00\x01\x03\x01\x11\x00\x02\x11\x01\x03\x11\x01\xff\xc4\x00\x14\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\xff\xc4\x00\x14\x10\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xc4\x00\x14\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\xff\xc4\x00\x14\x11\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xda\x00\x0c\x03\x01\x00\x02\x11\x03\x11\x00?\x00p\xf9+\xff\xd9'
  18.     
  19.     def setUp(self):
  20.         self.tdir = PersistentTemporaryDirectory('_calibre_dbtest')
  21.         self.db = LibraryDatabase2(self.tdir)
  22.         f = open(os.path.join(self.tdir, 'test.txt'), 'w+b')
  23.         f.write('test')
  24.         paths = list(repeat(f, 3))
  25.         formats = list(repeat('txt', 3))
  26.         m1 = MetaInformation('Test Ebook 1', [
  27.             'Test Author 1'])
  28.         m1.tags = [
  29.             'tag1',
  30.             'tag2']
  31.         m1.publisher = 'Test Publisher 1'
  32.         m1.rating = 2
  33.         m1.series = 'Test Series 1'
  34.         m1.series_index = 3
  35.         m1.author_sort = 'as1'
  36.         m1.isbn = 'isbn1'
  37.         m1.cover_data = ('jpg', self.img)
  38.         m2 = MetaInformation('Test Ebook 2', [
  39.             'Test Author 2'])
  40.         m2.tags = [
  41.             'tag3',
  42.             'tag4']
  43.         m2.publisher = 'Test Publisher 2'
  44.         m2.rating = 3
  45.         m2.series = 'Test Series 2'
  46.         m2.series_index = 1
  47.         m2.author_sort = 'as1'
  48.         m2.isbn = 'isbn1'
  49.         self.db.add_books(paths, formats, [
  50.             m1,
  51.             m2,
  52.             m2], add_duplicates = True)
  53.         self.m1 = m1
  54.         self.m2 = m2
  55.  
  56.     
  57.     def testAdding(self):
  58.         m1 = self.db.get_metadata(1, True)
  59.         m2 = self.db.get_metadata(2, True)
  60.         for p in ('title', 'authors', 'publisher', 'rating', 'series', 'series_index', 'author_sort', 'isbn', 'tags'):
  61.             
  62.             def ga(mi, p):
  63.                 val = getattr(mi, p)
  64.                 if isinstance(val, list):
  65.                     val = set(val)
  66.                 
  67.                 return val
  68.  
  69.             self.assertEqual(ga(self.m1, p), ga(m1, p))
  70.             self.assertEqual(ga(self.m2, p), ga(m2, p))
  71.         
  72.         self.assertEqual(self.db.format(1, 'txt', index_is_id = True), 'test')
  73.         self.assertEqual(self.db.formats(1, index_is_id = True), 'TXT')
  74.         self.db.add_format(1, 'html', cStringIO.StringIO('<html/>'), index_is_id = True)
  75.         self.assertEqual(self.db.formats(1, index_is_id = True), 'HTML,TXT')
  76.         self.db.remove_format(1, 'html', index_is_id = True)
  77.         self.assertEqual(self.db.formats(1, index_is_id = True), 'TXT')
  78.         self.assertNotEqual(self.db.cover(1, index_is_id = True), None)
  79.         self.assertEqual(self.db.cover(2, index_is_id = True), None)
  80.  
  81.     
  82.     def testMetadata(self):
  83.         self.db.refresh('timestamp', True)
  84.         for x in ('title', 'author_sort', 'series', 'publisher', 'isbn', 'series_index', 'rating'):
  85.             val = None if x in ('rating', 'series_index') else 'dummy'
  86.             getattr(self.db, 'set_' + x)(3, val)
  87.             self.db.refresh_ids([
  88.                 3])
  89.             self.assertEqual(getattr(self.db, x)(2), val)
  90.         
  91.         self.db.set_authors(3, [
  92.             'new auth'])
  93.         self.db.refresh_ids([
  94.             3])
  95.         self.assertEqual('new auth', self.db.authors(2))
  96.         self.assertEqual(self.db.format(3, 'txt', index_is_id = True), 'test')
  97.  
  98.     
  99.     def testSorting(self):
  100.         self.db.sort('authors', True)
  101.         self.assertEqual(self.db.authors(0), 'Test Author 1')
  102.         self.db.sort('rating', False)
  103.         self.assertEqual(self.db.rating(0), 3)
  104.  
  105.  
  106.  
  107. def suite():
  108.     return unittest.TestLoader().loadTestsFromTestCase(DBTest)
  109.  
  110.  
  111. def test():
  112.     unittest.TextTestRunner(verbosity = 2).run(suite())
  113.  
  114.  
  115. def main(args = sys.argv):
  116.     test()
  117.     return 0
  118.  
  119. if __name__ == '__main__':
  120.     sys.exit(main())
  121.  
  122.