[Checkins] SVN: zope.i18nmessageid/branches/tseaver-no_2to3/ 100% unit test coverage.
Tres Seaver
cvs-admin at zope.org
Fri Apr 6 22:49:11 UTC 2012
Log message for revision 125050:
100% unit test coverage.
Changed:
U zope.i18nmessageid/branches/tseaver-no_2to3/CHANGES.txt
U zope.i18nmessageid/branches/tseaver-no_2to3/src/zope/i18nmessageid/tests.py
-=-
Modified: zope.i18nmessageid/branches/tseaver-no_2to3/CHANGES.txt
===================================================================
--- zope.i18nmessageid/branches/tseaver-no_2to3/CHANGES.txt 2012-04-06 22:49:03 UTC (rev 125049)
+++ zope.i18nmessageid/branches/tseaver-no_2to3/CHANGES.txt 2012-04-06 22:49:07 UTC (rev 125050)
@@ -5,6 +5,8 @@
4.0.0 (unreleased)
------------------
+- 100% unit test coverage.
+
- Move doctest examples into Sphinx documentation.
- Dropped explicit support for Python 2.4 / 2.5 / 3.1.
Modified: zope.i18nmessageid/branches/tseaver-no_2to3/src/zope/i18nmessageid/tests.py
===================================================================
--- zope.i18nmessageid/branches/tseaver-no_2to3/src/zope/i18nmessageid/tests.py 2012-04-06 22:49:03 UTC (rev 125049)
+++ zope.i18nmessageid/branches/tseaver-no_2to3/src/zope/i18nmessageid/tests.py 2012-04-06 22:49:07 UTC (rev 125050)
@@ -90,15 +90,9 @@
message = self._makeOne('testing')
def _try():
message.unknown = 'unknown'
- self.assertRaises(TypeError, _try)
+ # C version raises AttributeError, Python version TypeError
+ self.assertRaises((TypeError, AttributeError), _try)
- def test___getstate__(self):
- mapping = {'key': 'value'}
- source = self._makeOne('testing')
- message = self._makeOne(source, 'domain', 'default', mapping)
- state = message.__getstate__()
- self.assertEqual(state, ('testing', 'domain', 'default', mapping))
-
def test___reduce__(self):
mapping = {'key': 'value'}
source = self._makeOne('testing')
@@ -107,6 +101,7 @@
self.assertTrue(klass is self._getTargetClass())
self.assertEqual(state, ('testing', 'domain', 'default', mapping))
+
class MessageTests(PyMessageTests):
_TEST_REAOONLY = False
@@ -116,99 +111,40 @@
return Message
-class Functional(unittest.TestCase):
+class MessageFactoryTests(unittest.TestCase):
- def test_message_pickling(self):
- from zope.i18nmessageid.message import pyMessage as Message
- robot = Message(u"robot-message", 'futurama', u"${name} is a robot.")
+ def _getTargetClass(self):
+ from zope.i18nmessageid.message import MessageFactory
+ return MessageFactory
- self.assertEqual(robot, u'robot-message')
- self.assertTrue(isinstance(robot, unicode))
- self.assertEqual(robot.default, u'${name} is a robot.')
- self.assertEqual(robot.mapping, None)
+ def _makeOne(self, *args, **kw):
+ return self._getTargetClass()(*args, **kw)
- # Only the python implementation has a _readonly attribute
- self.assertEqual(robot._readonly, True)
- self.assertRaises(
- TypeError,
- robot.__setattr__, 'domain', "planetexpress")
- self.assertRaises(
- TypeError,
- robot.__setattr__, 'default', u"${name} is not a robot.")
- self.assertRaises(
- TypeError,
- robot.__setattr__, 'mapping', {u'name': u'Bender'})
-
- new_robot = Message(robot, mapping={u'name': u'Bender'})
- self.assertEqual(new_robot, u'robot-message')
- self.assertEqual(new_robot.domain, 'futurama')
- self.assertEqual(new_robot.default, u'${name} is a robot.')
- self.assertEqual(new_robot.mapping, {u'name': u'Bender'})
+ def test___call___defaults(self):
+ from zope.i18nmessageid.message import Message
+ factory = self._makeOne('domain')
+ message = factory('testing')
+ self.assertTrue(isinstance(message, Message))
+ self.assertEqual(message, 'testing')
+ self.assertEqual(message.domain, 'domain')
+ self.assertEqual(message.default, None)
+ self.assertEqual(message.mapping, None)
- callable, args = new_robot.__reduce__()
- self.assertTrue(callable is Message)
- self.assertEqual(
- args,
- (u'robot-message', 'futurama', u'${name} is a robot.',
- {u'name': u'Bender'}))
+ def test___call___explicit(self):
+ from zope.i18nmessageid.message import Message
+ mapping = {'key': 'value'}
+ factory = self._makeOne('domain')
+ message = factory('testing', 'default', mapping)
+ self.assertTrue(isinstance(message, Message))
+ self.assertEqual(message, 'testing')
+ self.assertEqual(message.domain, 'domain')
+ self.assertEqual(message.default, 'default')
+ self.assertEqual(message.mapping, mapping)
- fembot = Message(u'fembot')
- callable, args = fembot.__reduce__()
- self.assertTrue(callable is Message)
- self.assertEqual(args, (u'fembot', None, None, None))
- import zope.i18nmessageid.message
- zope.i18nmessageid.message.Message = Message
-
- # First check if pickling and unpickling from pyMessage to
- # pyMessage works
- from pickle import dumps, loads
- pystate = dumps(new_robot)
- pickle_bot = loads(pystate)
- self.assertEqual(pickle_bot, u'robot-message')
- self.assertEqual(pickle_bot.domain, 'futurama')
- self.assertEqual(pickle_bot.default, u'${name} is a robot.')
- self.assertEqual(pickle_bot.mapping, {u'name': u'Bender'})
- self.assertEqual(pickle_bot._readonly, True)
-
- from zope.i18nmessageid.message import pyMessage
- self.assertTrue(pickle_bot.__reduce__()[0] is pyMessage)
- del pickle_bot
-
- # Second check if cMessage is able to load the state of a pyMessage
- try:
- from zope.i18nmessageid._zope_i18nmessageid_message import Message
- except ImportError:
- return
- from zope.i18nmessageid._zope_i18nmessageid_message import (
- Message as cMessage)
- zope.i18nmessageid.message.Message = Message
- c_bot = loads(pystate)
- self.assertEqual(c_bot, u'robot-message')
- self.assertEqual(c_bot.domain, 'futurama')
- self.assertEqual(c_bot.default, u'${name} is a robot.')
- self.assertEqual(c_bot.mapping, {u'name': u'Bender'})
- self.assertFalse(hasattr(c_bot, '_readonly'))
- self.assertTrue(c_bot.__reduce__()[0] is cMessage)
-
- # Last check if pyMessage can load a state of cMessage
- cstate = dumps(c_bot)
- del c_bot
- from zope.i18nmessageid.message import pyMessage as Message
- zope.i18nmessageid.message.Message = Message
- py_bot = loads(cstate)
- self.assertEqual(py_bot, u'robot-message')
- self.assertEqual(py_bot.domain, 'futurama')
- self.assertEqual(py_bot.default, u'${name} is a robot.')
- self.assertEqual(py_bot.mapping, {u'name': u'Bender'})
- self.assertEqual(py_bot._readonly, True)
- self.assertTrue(py_bot.__reduce__()[0] is pyMessage)
-
- # Both pickle states should be equal
- self.assertEqual(pystate, cstate)
-
-
def test_suite():
return unittest.TestSuite((
unittest.makeSuite(PyMessageTests),
+ unittest.makeSuite(MessageTests),
+ unittest.makeSuite(MessageFactoryTests),
))
More information about the checkins
mailing list