From: <zy...@us...> - 2008-12-29 02:22:09
|
Revision: 5803 http://jython.svn.sourceforge.net/jython/?rev=5803&view=rev Author: zyasoft Date: 2008-12-29 01:30:27 +0000 (Mon, 29 Dec 2008) Log Message: ----------- Supports timeit. Ignore NotImplementedError when attempting to disable gc, along with some rudimentary unit tests extracted from the docs of timeit. Modified Paths: -------------- trunk/jython/Lib/timeit.py Added Paths: ----------- trunk/jython/Lib/test/test_timeit.py Added: trunk/jython/Lib/test/test_timeit.py =================================================================== --- trunk/jython/Lib/test/test_timeit.py (rev 0) +++ trunk/jython/Lib/test/test_timeit.py 2008-12-29 01:30:27 UTC (rev 5803) @@ -0,0 +1,37 @@ +import timeit +import unittest +import test.test_support + +# some uninspired unit tests extracted from the docs for timeit; +# changed number=10000 so we don't spend too much time testing this +# module in the regrtest + +class TestTimeit(unittest.TestCase): + + def test_oct(self): + timing = timeit.Timer('for i in xrange(10): oct(i)', 'gc.enable()').timeit(number=10000) + self.assertTrue(timing > 0.) + timing_vector = timeit.Timer('for i in xrange(10): oct(i)').repeat(number=10000) + self.assertEqual(len(timing_vector), 3) + self.assertTrue(min(timing_vector) > 0.) + + def test_str(self): + s = """\ + try: + str.__nonzero__ + except AttributeError: + pass + """ + t = timeit.Timer(stmt=s) + self.assertTrue(t.timeit(number=10000) > 0.) + + timing_vector = t.repeat(number=10000, repeat=10) + self.assertEqual(len(timing_vector), 10) + self.assertTrue(min(timing_vector) > 0.) + + +def test_main(): + test.test_support.run_unittest(TestTimeit) + +if __name__ == "__main__": + test_main() Modified: trunk/jython/Lib/timeit.py =================================================================== --- trunk/jython/Lib/timeit.py 2008-12-29 01:28:24 UTC (rev 5802) +++ trunk/jython/Lib/timeit.py 2008-12-29 01:30:27 UTC (rev 5803) @@ -157,7 +157,10 @@ else: it = [None] * number gcold = gc.isenabled() - gc.disable() + try: + gc.disable() + except NotImplementedError: + pass # ignore on platforms like Jython timing = self.inner(it, self.timer) if gcold: gc.enable() This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |