2012-08-31 13:23:37 +00:00
|
|
|
import unittest2
|
2013-12-02 07:33:13 +00:00
|
|
|
|
2014-02-09 00:37:45 +00:00
|
|
|
from openerp.tools import misc
|
2012-08-31 13:23:37 +00:00
|
|
|
|
2012-09-19 11:40:47 +00:00
|
|
|
|
|
|
|
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)
|
2012-08-31 13:23:37 +00:00
|
|
|
|
|
|
|
if __name__ == '__main__':
|
2012-09-19 11:40:47 +00:00
|
|
|
unittest2.main()
|