1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85
|
# -*- coding: utf-8 -*-
# Copyright 2012 Jaap Karssenberg <jaap.karssenberg@gmail.com>
import tests
from zim.parsing import url_encode, URL_ENCODE_READABLE
from zim.plugins.attachmentbrowser import *
class TestMimeData(tests.TestCase):
def runTest(self):
dir = Dir('./data/pixmaps')
for filename in dir.list():
file = dir.file(filename)
icon = get_mime_icon(file, THUMB_SIZE_NORMAL)
desc = get_mime_description(file.get_mimetype())
# TODO assert something on icon and text ?
class ThumbnailManagerTest(tests.TestCase):
def testCreateThumbnail(self):
manager = ThumbnailManager(preferences={})
dir = Dir('./data/pixmaps')
# Test API and functions
#~ for file in dir.list_objects(): # TODO
for filename in dir.list():
file = dir.file(filename)
# Remove and assert thumbnail does not exist
manager.remove_thumbnails(file)
for size in (THUMB_SIZE_NORMAL, THUMB_SIZE_LARGE):
thumbfile = manager.get_thumbnail_file(file, size)
self.assertFalse(thumbfile.exists(), msg="File exists: %s" % thumbfile)
# Get thumbnails - twice, first they don't exist, than they do
for (size, pixels) in (
(THUMB_SIZE_NORMAL, 128),
(THUMB_SIZE_LARGE, 256),
(THUMB_SIZE_NORMAL, 128),
(THUMB_SIZE_LARGE, 256),
):
thumb = manager.get_thumbnail(file, size)
self.assertIsInstance(thumb, gtk.gdk.Pixbuf)
self.assertEqual(thumb.get_width(), pixels)
self.assertEqual(thumb.get_height(), pixels)
self.assertTrue(thumb.get_option('tEXt::Thumb::URI').startswith('file:///'))
# Specific requirement of spec to use file:/// and not file://localhost/
self.assertEqual(thumb.get_option('tEXt::Thumb::URI'), url_encode(file.uri, URL_ENCODE_READABLE))
self.assertEqual(thumb.get_option('tEXt::Thumb::MTime'), str( int( file.mtime() ) ))
thumbfile = manager.get_thumbnail_file(file, size)
self.assertTrue(thumbfile.exists(), msg="Missing file: %s" % thumbfile)
basename = hashlib.md5(file.uri).hexdigest() + '.png'
self.assertEqual(thumbfile.basename, basename)
# TODO assert permission on file is 0600 -- stat ?
# TODO test detection of invalid thumbs
# TODO test with utf-8 char in image name
def testAsyncCreateThumbnail(self):
manager = ThumbnailManager(preferences={})
dir = Dir('./data/pixmaps')
seen = set()
def on_thumbnail_ready(o, file, size, pixbuf):
seen.add(file)
manager.connect('thumbnail-ready', on_thumbnail_ready)
# Test API and functions
#~ for file in dir.list_objects(): # TODO
for filename in dir.list():
file = dir.file(filename)
# Remove and assert thumbnail does not exist
manager.remove_thumbnails(file)
for size in (THUMB_SIZE_NORMAL, THUMB_SIZE_LARGE):
manager.get_thumbnail_async(file, size)
manager.async_queue.join()
self.assertTrue(len(seen) > 3)
|