84 lines
2.4 KiB
Python
84 lines
2.4 KiB
Python
# This test can be run stand-alone with something like:
|
|
# > PYTHONPATH=. python2 openerp/tests/test_misc.py
|
|
import datetime
|
|
import locale
|
|
import unittest2
|
|
|
|
import babel
|
|
import babel.dates
|
|
|
|
from ..tools import misc
|
|
|
|
|
|
class test_countingstream(unittest2.TestCase):
|
|
def test_empty_stream(self):
|
|
s = misc.CountingStream(iter([]))
|
|
self.assertEqual(s.index, -1)
|
|
self.assertIsNone(next(s, None))
|
|
self.assertEqual(s.index, 0)
|
|
|
|
def test_single(self):
|
|
s = misc.CountingStream(xrange(1))
|
|
self.assertEqual(s.index, -1)
|
|
self.assertEqual(next(s, None), 0)
|
|
self.assertIsNone(next(s, None))
|
|
self.assertEqual(s.index, 1)
|
|
|
|
def test_full(self):
|
|
s = misc.CountingStream(xrange(42))
|
|
for _ in s:
|
|
pass
|
|
self.assertEqual(s.index, 42)
|
|
|
|
def test_repeated(self):
|
|
""" Once the CountingStream has stopped iterating, the index should not
|
|
increase anymore (the internal state should not be allowed to change)
|
|
"""
|
|
s = misc.CountingStream(iter([]))
|
|
self.assertIsNone(next(s, None))
|
|
self.assertEqual(s.index, 0)
|
|
self.assertIsNone(next(s, None))
|
|
self.assertEqual(s.index, 0)
|
|
|
|
lname, _ = locale.getdefaultlocale()
|
|
class TestPosixToBabel(unittest2.TestCase):
|
|
def setUp(self):
|
|
super(TestPosixToBabel, self).setUp()
|
|
self.d = datetime.datetime(2007, 9, 8, 4, 5, 1)
|
|
|
|
def assert_eq(self, fmt, d=None):
|
|
if d is None: d = self.d
|
|
|
|
ldml_format = misc.posix_to_ldml(fmt, locale=babel.Locale.parse(lname))
|
|
self.assertEqual(
|
|
d.strftime(fmt),
|
|
babel.dates.format_datetime(d, format=ldml_format),
|
|
"%r resulted in a different result than %r for %s" % (
|
|
ldml_format, fmt, d))
|
|
|
|
def test_empty(self):
|
|
self.assert_eq("")
|
|
|
|
def test_literal(self):
|
|
self.assert_eq("Raw test string")
|
|
|
|
def test_mixed(self):
|
|
self.assert_eq("m:%m d:%d y:%y")
|
|
self.assert_eq("m:%m d:%d y:%y H:%H M:%M S:%S")
|
|
|
|
def test_escape(self):
|
|
self.assert_eq("%%m:%m %%d:%d %%y:%y")
|
|
|
|
def test_xX(self):
|
|
self.assert_eq('%x %X')
|
|
|
|
def test_various_examples(self):
|
|
self.assert_eq("%x - %I:%M%p")
|
|
self.assert_eq('%Y-%m-%dT%H:%M:%S')
|
|
self.assert_eq("%Y-%j")
|
|
self.assert_eq("%a, %d %b %Y %H:%M:%S")
|
|
self.assert_eq("%a, %b %d %I:%M.%S")
|
|
|
|
if __name__ == '__main__':
|
|
unittest2.main()
|