[Zope3-checkins] CVS: Zope3/src/zope/products/content/tests -
__init__.py:1.1.2.1 test_file.py:1.1.2.1
test_image.py:1.1.2.1 testi18nfile.py:1.1.2.1
testi18nimage.py:1.1.2.1
Philipp von Weitershausen
philikon at philikon.de
Sun Feb 8 09:03:49 EST 2004
Update of /cvs-repository/Zope3/src/zope/products/content/tests
In directory cvs.zope.org:/tmp/cvs-serv10229/products/content/tests
Added Files:
Tag: philikon-movecontent-branch
__init__.py test_file.py test_image.py testi18nfile.py
testi18nimage.py
Log Message:
Move zope.app.content,
zope.app.interfaces.content,
and zope.app.browser.content
to zope.products.content and zope.products.codecontent, respectively.
=== Added File Zope3/src/zope/products/content/tests/__init__.py ===
#
# This file is necessary to make this directory a package.
=== Added File Zope3/src/zope/products/content/tests/test_file.py ===
##############################################################################
#
# Copyright (c) 2001, 2002 Zope Corporation and Contributors.
# All Rights Reserved.
#
# This software is subject to the provisions of the Zope Public License,
# Version 2.0 (ZPL). A copy of the ZPL should accompany this distribution.
# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
# FOR A PARTICULAR PURPOSE.
#
##############################################################################
"""
$Id: test_file.py,v 1.1.2.1 2004/02/08 14:03:48 philikon Exp $
"""
import unittest
from zope.interface.verify import verifyClass
from zope.products.content.file import FileChunk, FileReadFile, FileWriteFile
class TestFileAdapters:
def test_ReadFile(self):
file = self._makeFile()
content = "This is some file\ncontent."
file.edit(content, 'text/plain')
self.assertEqual(FileReadFile(file).read(), content)
self.assertEqual(FileReadFile(file).size(), len(content))
def test_WriteFile(self):
file = self._makeFile()
content = "This is some file\ncontent."
FileWriteFile(file).write(content)
self.assertEqual(file.getData(), content)
class Test(unittest.TestCase, TestFileAdapters):
def _makeFile(self, *args, **kw):
""" """
from zope.products.content.file import File
return File(*args, **kw)
def testEmpty(self):
file = self._makeFile()
self.assertEqual(file.getContentType(), '')
self.assertEqual(file.getData(), '')
def testConstructor(self):
file = self._makeFile('Foobar')
self.assertEqual(file.getContentType(), '')
self.assertEqual(file.getData(), 'Foobar')
file = self._makeFile('Foobar', 'text/plain')
self.assertEqual(file.getContentType(), 'text/plain')
self.assertEqual(file.getData(), 'Foobar')
file = self._makeFile(data='Foobar', contentType='text/plain')
self.assertEqual(file.getContentType(), 'text/plain')
self.assertEqual(file.getData(), 'Foobar')
def testMutators(self):
file = self._makeFile()
file.setContentType('text/plain')
self.assertEqual(file.getContentType(), 'text/plain')
file.setData('Foobar')
self.assertEqual(file.getData(), 'Foobar')
file.edit('Blah', 'text/html')
self.assertEqual(file.getContentType(), 'text/html')
self.assertEqual(file.getData(), 'Blah')
def testLargeDataInput(self):
file = self._makeFile()
# Insert as string
file.setData('Foobar'*60000)
self.assertEqual(file.getSize(), 6*60000)
self.assertEqual(file.getData(), 'Foobar'*60000)
# Insert data as FileChunk
fc = FileChunk('Foobar'*4000)
file.setData(fc)
self.assertEqual(file.getSize(), 6*4000)
self.assertEqual(file.getData(), 'Foobar'*4000)
# Insert data from file object
import cStringIO
sio = cStringIO.StringIO()
sio.write('Foobar'*100000)
sio.seek(0)
file.setData(sio)
self.assertEqual(file.getSize(), 6*100000)
self.assertEqual(file.getData(), 'Foobar'*100000)
def testNoneDataInput(self):
file = self._makeFile()
self.assertRaises(TypeError, file.setData, None)
def testInterface(self):
from zope.products.content.file import File, IFile
self.failUnless(IFile.isImplementedByInstancesOf(File))
self.failUnless(verifyClass(IFile, File))
def testEdit(self):
file = self._makeFile()
file.edit('Data', 'text/plain')
self.assertEqual(file.getContentType(), 'text/plain')
self.assertEqual(file.getData(), 'Data')
def test_suite():
return unittest.makeSuite(Test)
if __name__=='__main__':
unittest.main(defaultTest='test_suite')
=== Added File Zope3/src/zope/products/content/tests/test_image.py ===
##############################################################################
#
# Copyright (c) 2001, 2002 Zope Corporation and Contributors.
# All Rights Reserved.
#
# This software is subject to the provisions of the Zope Public License,
# Version 2.0 (ZPL). A copy of the ZPL should accompany this distribution.
# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
# FOR A PARTICULAR PURPOSE.
#
##############################################################################
"""
$Id: test_image.py,v 1.1.2.1 2004/02/08 14:03:48 philikon Exp $
"""
import unittest
from zope.interface.verify import verifyClass
from zope.products.content.image import Image, FileFactory
from zope.products.content.file import File
import test_file
zptlogo = (
'GIF89a\x10\x00\x10\x00\xd5\x00\x00\xff\xff\xff\xff\xff\xfe\xfc\xfd\xfd'
'\xfa\xfb\xfc\xf7\xf9\xfa\xf5\xf8\xf9\xf3\xf6\xf8\xf2\xf5\xf7\xf0\xf4\xf6'
'\xeb\xf1\xf3\xe5\xed\xef\xde\xe8\xeb\xdc\xe6\xea\xd9\xe4\xe8\xd7\xe2\xe6'
'\xd2\xdf\xe3\xd0\xdd\xe3\xcd\xdc\xe1\xcb\xda\xdf\xc9\xd9\xdf\xc8\xd8\xdd'
'\xc6\xd7\xdc\xc4\xd6\xdc\xc3\xd4\xda\xc2\xd3\xd9\xc1\xd3\xd9\xc0\xd2\xd9'
'\xbd\xd1\xd8\xbd\xd0\xd7\xbc\xcf\xd7\xbb\xcf\xd6\xbb\xce\xd5\xb9\xcd\xd4'
'\xb6\xcc\xd4\xb6\xcb\xd3\xb5\xcb\xd2\xb4\xca\xd1\xb2\xc8\xd0\xb1\xc7\xd0'
'\xb0\xc7\xcf\xaf\xc6\xce\xae\xc4\xce\xad\xc4\xcd\xab\xc3\xcc\xa9\xc2\xcb'
'\xa8\xc1\xca\xa6\xc0\xc9\xa4\xbe\xc8\xa2\xbd\xc7\xa0\xbb\xc5\x9e\xba\xc4'
'\x9b\xbf\xcc\x98\xb6\xc1\x8d\xae\xbaFgs\x00\x00\x00\x00\x00\x00\x00\x00'
'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
'\x00,\x00\x00\x00\x00\x10\x00\x10\x00\x00\x06z@\x80pH,\x12k\xc8$\xd2f\x04'
'\xd4\x84\x01\x01\xe1\xf0d\x16\x9f\x80A\x01\x91\xc0ZmL\xb0\xcd\x00V\xd4'
'\xc4a\x87z\xed\xb0-\x1a\xb3\xb8\x95\xbdf8\x1e\x11\xca,MoC$\x15\x18{'
'\x006}m\x13\x16\x1a\x1f\x83\x85}6\x17\x1b $\x83\x00\x86\x19\x1d!%)\x8c'
'\x866#\'+.\x8ca`\x1c`(,/1\x94B5\x19\x1e"&*-024\xacNq\xba\xbb\xb8h\xbeb'
'\x00A\x00;'
)
class TestImage(unittest.TestCase):
def _makeImage(self, *args, **kw):
return Image(*args, **kw)
def testEmpty(self):
file = self._makeImage()
self.assertEqual(file.getContentType(), '')
self.assertEqual(file.getData(), '')
def testConstructor(self):
file = self._makeImage('Data')
self.assertEqual(file.getContentType(), '')
self.assertEqual(file.getData(), 'Data')
def testMutators(self):
# XXX What's the point of this test? Does it test that data
# contents override content-type? Or not? If the former, then
# real image data should be used.
file = self._makeImage()
file.setContentType('text/plain')
self.assertEqual(file.getContentType(), 'text/plain')
file.setData('Foobar')
self.assertEqual(file.getData(), 'Foobar')
file.edit('Blah', 'text/html')
self.assertEqual(file.getContentType(), 'text/html')
self.assertEqual(file.getData(), 'Blah')
def testInterface(self):
from zope.products.content.image import Image, IImage
self.failUnless(IImage.isImplementedByInstancesOf(Image))
self.failUnless(verifyClass(IImage, Image))
class TestFileAdapters(test_file.TestFileAdapters, unittest.TestCase):
def _makeFile(self, *args, **kw):
return Image(*args, **kw)
class DummyImage:
def __init__(self, width, height, bytes):
self.width = width
self.height = height
self.bytes = bytes
def getSize(self):
return self.bytes
def getImageSize(self):
return self.width, self.height
class TestFileFactory(unittest.TestCase):
def test_image(self):
factory = FileFactory(None)
f = factory("spam.txt", "image/foo", "hello world")
self.assert_(isinstance(f, Image), f)
f = factory("spam.txt", "", zptlogo)
self.assert_(isinstance(f, Image), f)
def test_text(self):
factory = FileFactory(None)
f = factory("spam.txt", "", "hello world")
self.assert_(isinstance(f, File), f)
self.assert_(not isinstance(f, Image), f)
f = factory("spam.txt", "", "\0\1\2\3\4")
self.assert_(isinstance(f, File), f)
self.assert_(not isinstance(f, Image), f)
f = factory("spam.txt", "text/splat", zptlogo)
self.assert_(isinstance(f, File), f)
self.assert_(not isinstance(f, Image), f)
f = factory("spam.txt", "application/splat", zptlogo)
self.assert_(isinstance(f, File), f)
self.assert_(not isinstance(f, Image), f)
class TestSized(unittest.TestCase):
def testInterface(self):
from zope.app.interfaces.size import ISized
from zope.products.content.image import ImageSized
self.failUnless(ISized.isImplementedByInstancesOf(ImageSized))
self.failUnless(verifyClass(ISized, ImageSized))
def test_zeroSized(self):
from zope.products.content.image import ImageSized
s = ImageSized(DummyImage(0, 0, 0))
self.assertEqual(s.sizeForSorting(), ('byte', 0))
self.assertEqual(s.sizeForDisplay(), u'0 KB ${width}x${height}')
self.assertEqual(s.sizeForDisplay().mapping['width'], '0')
self.assertEqual(s.sizeForDisplay().mapping['height'], '0')
def test_arbitrarySize(self):
from zope.products.content.image import ImageSized
s = ImageSized(DummyImage(34, 56, 78))
self.assertEqual(s.sizeForSorting(), ('byte', 78))
self.assertEqual(s.sizeForDisplay(), u'1 KB ${width}x${height}')
self.assertEqual(s.sizeForDisplay().mapping['width'], '34')
self.assertEqual(s.sizeForDisplay().mapping['height'], '56')
def test_unknownSize(self):
from zope.products.content.image import ImageSized
s = ImageSized(DummyImage(-1, -1, 23))
self.assertEqual(s.sizeForSorting(), ('byte', 23))
self.assertEqual(s.sizeForDisplay(), u'1 KB ${width}x${height}')
self.assertEqual(s.sizeForDisplay().mapping['width'], '?')
self.assertEqual(s.sizeForDisplay().mapping['height'], '?')
def test_suite():
return unittest.TestSuite((
unittest.makeSuite(TestImage),
unittest.makeSuite(TestFileAdapters),
unittest.makeSuite(TestFileFactory),
unittest.makeSuite(TestSized)
))
if __name__=='__main__':
unittest.TextTestRunner().run(test_suite())
=== Added File Zope3/src/zope/products/content/tests/testi18nfile.py ===
##############################################################################
#
# Copyright (c) 2001, 2002 Zope Corporation and Contributors.
# All Rights Reserved.
#
# This software is subject to the provisions of the Zope Public License,
# Version 2.0 (ZPL). A copy of the ZPL should accompany this distribution.
# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
# FOR A PARTICULAR PURPOSE.
#
##############################################################################
"""
$Id: testi18nfile.py,v 1.1.2.1 2004/02/08 14:03:48 philikon Exp $
"""
import unittest
from zope.interface.verify import verifyClass
from zope.i18n.tests.testii18naware import TestII18nAware
from zope.products.content.file import FileChunk
def sorted(list):
list.sort()
return list
class Test(TestII18nAware):
def _makeFile(self, *args, **kw):
""" """
from zope.products.content.i18nfile import I18nFile
return I18nFile(*args, **kw)
def _createObject(self):
obj = self._makeFile(defaultLanguage='fr')
obj.setData('', 'lt')
obj.setData('', 'en')
return obj
def testEmpty(self):
file = self._makeFile()
self.assertEqual(file.getContentType(), '')
self.assertEqual(file.getData(), '')
self.assertEqual(file.getDefaultLanguage(), 'en')
def testConstructor(self):
file = self._makeFile('Foobar')
self.assertEqual(file.getContentType(), '')
self.assertEqual(file.getData(), 'Foobar')
self.assertEqual(file.getData('en'), 'Foobar')
self.assertEqual(file.getData('nonexistent'), 'Foobar')
self.assertEqual(file.getDefaultLanguage(), 'en')
self.assertEqual(sorted(file.getAvailableLanguages()), ['en'])
file = self._makeFile('Foobar', 'text/plain')
self.assertEqual(file.getContentType(), 'text/plain')
self.assertEqual(file.getData(), 'Foobar')
self.assertEqual(file.getData('en'), 'Foobar')
self.assertEqual(file.getData('nonexistent'), 'Foobar')
self.assertEqual(file.getDefaultLanguage(), 'en')
self.assertEqual(sorted(file.getAvailableLanguages()), ['en'])
file = self._makeFile(data='Foobar', contentType='text/plain')
self.assertEqual(file.getContentType(), 'text/plain')
self.assertEqual(file.getData(), 'Foobar')
self.assertEqual(file.getData('en'), 'Foobar')
self.assertEqual(file.getData('nonexistent'), 'Foobar')
self.assertEqual(file.getDefaultLanguage(), 'en')
self.assertEqual(sorted(file.getAvailableLanguages()), ['en'])
file = self._makeFile(data='Foobar', contentType='text/plain',
defaultLanguage='fr')
self.assertEqual(file.getContentType(), 'text/plain')
self.assertEqual(file.getData(), 'Foobar')
self.assertEqual(file.getData('en'), 'Foobar')
self.assertEqual(file.getData('nonexistent'), 'Foobar')
self.assertEqual(file.getDefaultLanguage(), 'fr')
self.assertEqual(sorted(file.getAvailableLanguages()), ['fr'])
def testMutators(self):
file = self._makeFile()
file.setContentType('text/plain')
self.assertEqual(file.getContentType(), 'text/plain')
self.assertEqual(sorted(file.getAvailableLanguages()), ['en'])
file.setData('Foobar')
self.assertEqual(file.getData(), 'Foobar')
self.assertEqual(sorted(file.getAvailableLanguages()), ['en'])
file.setData('Barbaz', language='fr')
self.assertEqual(file.getData(), 'Foobar')
self.assertEqual(file.getData('fr'), 'Barbaz')
self.assertEqual(sorted(file.getAvailableLanguages()), ['en', 'fr'])
file.edit('Blah', 'text/html')
self.assertEqual(file.getContentType(), 'text/html')
self.assertEqual(file.getData(), 'Blah')
self.assertEqual(file.getData('fr'), 'Barbaz')
self.assertEqual(sorted(file.getAvailableLanguages()), ['en', 'fr'])
file.edit('Quux', 'text/html', 'lt')
self.assertEqual(file.getContentType(), 'text/html')
self.assertEqual(file.getData(), 'Blah')
self.assertEqual(file.getData('fr'), 'Barbaz')
self.assertEqual(file.getData('lt'), 'Quux')
self.assertEqual(file.getSize(), len('Blah'))
self.assertEqual(file.getSize('fr'), len('Barbaz'))
self.assertEqual(file.getSize('lt'), len('Quux'))
self.assertEqual(sorted(file.getAvailableLanguages()), ['en', 'fr', 'lt'])
file.removeLanguage('lt')
self.assertEqual(file.getContentType(), 'text/html')
self.assertEqual(file.getData(), 'Blah')
self.assertEqual(file.getData('fr'), 'Barbaz')
self.assertEqual(file.getSize(), len('Blah'))
self.assertEqual(file.getSize('fr'), len('Barbaz'))
self.assertEqual(sorted(file.getAvailableLanguages()), ['en', 'fr'])
self.assertEqual(file.getData('lt'), 'Blah')
self.assertEqual(file.getSize('lt'), len('Blah'))
file.removeLanguage('nonexistent')
self.assertEqual(file.getContentType(), 'text/html')
self.assertEqual(file.getData(), 'Blah')
self.assertEqual(file.getData('fr'), 'Barbaz')
self.assertEqual(file.getSize(), len('Blah'))
self.assertEqual(file.getSize('fr'), len('Barbaz'))
self.assertEqual(sorted(file.getAvailableLanguages()), ['en', 'fr'])
self.assertEqual(file.getData('lt'), 'Blah')
self.assertEqual(file.getSize('lt'), len('Blah'))
self.assertRaises(ValueError, file.removeLanguage, file.getDefaultLanguage())
self.assertRaises(ValueError, file.setDefaultLanguage, 'nonexistent')
def testLargeDataInput(self):
file = self._makeFile()
# Insert as string
file.setData('Foobar'*60000, 'en')
self.assertEqual(file.getSize('en'), 6*60000)
self.assertEqual(file.getData('en'), 'Foobar'*60000)
# Insert data as FileChunk
fc = FileChunk('Foobar'*4000)
file.setData(fc, 'lt')
self.assertEqual(file.getSize('lt'), 6*4000)
self.assertEqual(file.getData('lt'), 'Foobar'*4000)
# Insert data from file object
import cStringIO
sio = cStringIO.StringIO()
sio.write('Foobar'*100000)
sio.seek(0)
file.setData(sio, 'fr')
self.assertEqual(file.getSize('fr'), 6*100000)
self.assertEqual(file.getData('fr'), 'Foobar'*100000)
def testInterface(self):
from zope.products.content.interfaces.file import IFile
from zope.products.content.interfaces.i18nfile import II18nFile
from zope.products.content.i18nfile import I18nFile
from zope.i18n.interfaces import II18nAware
self.failUnless(IFile.isImplementedByInstancesOf(I18nFile))
self.failUnless(verifyClass(IFile, I18nFile))
self.failUnless(II18nAware.isImplementedByInstancesOf(I18nFile))
self.failUnless(verifyClass(II18nAware, I18nFile))
self.failUnless(II18nFile.isImplementedByInstancesOf(I18nFile))
self.failUnless(verifyClass(II18nFile, I18nFile))
def testSetDefaultLanguage(self):
# getDefaultLanguage and getAvailableLanguages are tested in the
# above tests
file = self._makeFile()
file.setData('', language='lt')
file.setDefaultLanguage('lt')
self.assertEqual(file.getDefaultLanguage(), 'lt')
def test_suite():
loader = unittest.TestLoader()
return loader.loadTestsFromTestCase(Test)
if __name__=='__main__':
unittest.TextTestRunner().run(test_suite())
=== Added File Zope3/src/zope/products/content/tests/testi18nimage.py ===
##############################################################################
#
# Copyright (c) 2001, 2002 Zope Corporation and Contributors.
# All Rights Reserved.
#
# This software is subject to the provisions of the Zope Public License,
# Version 2.0 (ZPL). A copy of the ZPL should accompany this distribution.
# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
# FOR A PARTICULAR PURPOSE.
#
##############################################################################
"""
$Id: testi18nimage.py,v 1.1.2.1 2004/02/08 14:03:48 philikon Exp $
"""
import unittest
from zope.interface.verify import verifyClass
from zope.i18n.tests.testii18naware import TestII18nAware
def sorted(list):
list.sort()
return list
class Test(TestII18nAware):
def _makeImage(self, *args, **kw):
""" """
from zope.products.content.i18nimage import I18nImage
return I18nImage(*args, **kw)
def _createObject(self):
obj = self._makeImage(defaultLanguage='fr')
obj.setData('', 'lt')
obj.setData('', 'en')
return obj
def testEmpty(self):
file = self._makeImage()
self.assertEqual(file.getContentType(), '')
self.assertEqual(file.getData(), '')
self.assertEqual(file.getDefaultLanguage(), 'en')
def testConstructor(self):
file = self._makeImage('Data')
self.assertEqual(file.getContentType(), '')
self.assertEqual(file.getData(), 'Data')
self.assertEqual(file.getData('en'), 'Data')
self.assertEqual(file.getData('nonexistent'), 'Data')
self.assertEqual(file.getDefaultLanguage(), 'en')
self.assertEqual(sorted(file.getAvailableLanguages()), ['en'])
file = self._makeImage('Data', defaultLanguage='fr')
self.assertEqual(file.getContentType(), '')
self.assertEqual(file.getData(), 'Data')
self.assertEqual(file.getData('en'), 'Data')
self.assertEqual(file.getData('nonexistent'), 'Data')
self.assertEqual(file.getDefaultLanguage(), 'fr')
self.assertEqual(sorted(file.getAvailableLanguages()), ['fr'])
def testMutators(self):
# XXX What's the point of this test? Does it test that data
# contents override content-type? Or not? If the former, then
# real image data should be used.
file = self._makeImage()
file.setContentType('text/plain')
self.assertEqual(file.getContentType(), 'text/plain')
self.assertEqual(sorted(file.getAvailableLanguages()), ['en'])
file.setData('Foobar')
self.assertEqual(file.getData(), 'Foobar')
self.assertEqual(sorted(file.getAvailableLanguages()), ['en'])
file.edit('Blah', 'text/html')
self.assertEqual(file.getContentType(), 'text/html')
self.assertEqual(file.getData(), 'Blah')
self.assertEqual(sorted(file.getAvailableLanguages()), ['en'])
file.setData('Foobar in lt', 'lt')
self.assertEqual(file.getData(), 'Blah')
self.assertEqual(file.getData('lt'), 'Foobar in lt')
self.assertEqual(sorted(file.getAvailableLanguages()), ['en', 'lt'])
file.edit('Blah in fr', 'text/html', 'fr')
self.assertEqual(file.getContentType(), 'text/html')
self.assertEqual(file.getData(), 'Blah')
self.assertEqual(file.getData('lt'), 'Foobar in lt')
self.assertEqual(file.getData('fr'), 'Blah in fr')
self.assertEqual(sorted(file.getAvailableLanguages()),
['en', 'fr', 'lt'])
file.removeLanguage('lt')
self.assertEqual(file.getContentType(), 'text/html')
self.assertEqual(file.getData(), 'Blah')
self.assertEqual(file.getData('fr'), 'Blah in fr')
self.assertEqual(file.getSize(), len('Blah'))
self.assertEqual(file.getSize('fr'), len('Blah in fr'))
self.assertEqual(sorted(file.getAvailableLanguages()), ['en', 'fr'])
self.assertEqual(file.getData('lt'), 'Blah')
self.assertEqual(file.getSize('lt'), len('Blah'))
file.removeLanguage('nonexistent')
self.assertEqual(file.getContentType(), 'text/html')
self.assertEqual(file.getData(), 'Blah')
self.assertEqual(file.getData('fr'), 'Blah in fr')
self.assertEqual(file.getSize(), len('Blah'))
self.assertEqual(file.getSize('fr'), len('Blah in fr'))
self.assertEqual(sorted(file.getAvailableLanguages()), ['en', 'fr'])
self.assertEqual(file.getData('lt'), 'Blah')
self.assertEqual(file.getSize('lt'), len('Blah'))
self.assertRaises(ValueError, file.removeLanguage,
file.getDefaultLanguage())
self.assertRaises(ValueError, file.setDefaultLanguage, 'nonexistent')
# Check that setData updates content type only when updating the
# default language. Need some real images or at least headers
# for that.
gifHdr = 'GIF87a\x20\x00\x10\x00'
file.setData(gifHdr)
self.assertEqual(file.getContentType(), 'image/gif')
pngHdr = '\211PNG\r\n\032\n\0\0\0\x20\0\0\0\x10'
file.setData(pngHdr, 'fr')
self.assertEqual(file.getContentType(), 'image/gif')
file.setData(pngHdr, 'en')
self.assertEqual(file.getContentType(), 'image/png')
def testInterface(self):
from zope.products.content.image import IImage
from zope.products.content.i18nimage import I18nImage
from zope.products.content.interfaces.i18nfile import II18nFile
from zope.i18n.interfaces import II18nAware
self.failUnless(IImage.isImplementedByInstancesOf(I18nImage))
self.failUnless(verifyClass(IImage, I18nImage))
self.failUnless(II18nAware.isImplementedByInstancesOf(I18nImage))
self.failUnless(verifyClass(II18nAware, I18nImage))
self.failUnless(II18nFile.isImplementedByInstancesOf(I18nImage))
self.failUnless(verifyClass(II18nFile, I18nImage))
def testSetDefaultLanguage(self):
# getDefaultLanguage and getAvailableLanguages are tested in the
# above tests
file = self._makeImage()
file.setData('', language='lt')
file.setDefaultLanguage('lt')
self.assertEqual(file.getDefaultLanguage(), 'lt')
def test_suite():
loader = unittest.TestLoader()
return loader.loadTestsFromTestCase(Test)
if __name__=='__main__':
unittest.TextTestRunner().run(test_suite())
More information about the Zope3-Checkins
mailing list