RandomSec/lib/jython-2.5.1/test/test_jy_generators.py

165 lines
4.8 KiB
Python
Raw Normal View History

from __future__ import generators
import unittest
#tests for deeply nested try/except/finally's
class FinallyTests(unittest.TestCase):
def gen1(self):
try:
pass
finally:
yield 1
def genContinue(self):
for i in range(3):
try:
continue
finally:
yield i
def genPass(self):
for i in range(3):
try:
pass
finally:
yield i
def genLocal(self):
x = 1
try:
pass
finally:
yield x
def genConditional(self):
for i in range(3):
x = 0
try:
if i == 2:
continue
x = 1
finally:
for j in range(x, x + 2):
yield j
def genTryExceptAroundFinally(self):
try:
for i in range(1):
try:
for i in range(3):
try:
try:
1//0
finally:
yield i
except:
pass
1//0
except:
yield 3
except:
pass
def genNested(self):
for i in range(2):
try:
continue
finally:
for j in range(2):
try:
pass
finally:
yield (i, j)
def genNestedReversed(self):
for i in range(2):
try:
pass
finally:
for j in range(2):
try:
continue
finally:
yield (i, j)
def genNestedDeeply(self):
for i in range(4):
try:
continue
finally:
for j in range(i):
try:
pass
finally:
for k in range(j):
try:
try:
1//0
finally:
yield (i, j, k)
except:
pass
def genNestedTryExcept(self):
for j in range(3):
try:
try:
1//0
finally:
for k in range(3):
try:
1//0
finally:
yield (j, k)
except:
pass
def genNestedDeeplyTryExcept(self):
for i in range(3):
try:
try:
1//0
finally:
for j in range(3):
try:
1//0
finally:
for k in range(3):
try:
1//0
finally:
yield (i, j, k)
except:
pass
def testFinally(self):
self.assertEquals([1], list(self.gen1()))
self.assertEquals([0, 1, 2], list(self.genContinue()))
self.assertEquals([0, 1, 2], list(self.genPass()))
self.assertEquals([1], list(self.genLocal()))
self.assertEquals(
[1, 2, 1, 2, 0, 1],
list(self.genConditional()))
self.assertEquals([0, 1, 2, 3], list(self.genTryExceptAroundFinally()))
self.assertEquals(
[(0, 0), (0, 1), (1, 0), (1, 1)],
list(self.genNested()))
self.assertEquals(
[(0, 0), (0, 1), (1, 0), (1, 1)],
list(self.genNestedReversed()))
self.assertEquals(
[(2, 1, 0), (3, 1, 0), (3, 2, 0), (3, 2, 1)],
list(self.genNestedDeeply()))
self.assertEquals(
[(0, 0), (1, 0), (2, 0)],
list(self.genNestedTryExcept()))
self.assertEquals(
[(0, 0, 0), (1, 0, 0), (2, 0, 0)],
list(self.genNestedDeeplyTryExcept()))
class TryExceptTests(unittest.TestCase):
def genNestedExcept(self):
for j in range(3):
try:
try:
1//0
except ZeroDivisionError, e:
yield 1
raise e
except ZeroDivisionError:
pass
def testExcept(self):
self.assertEquals([1, 1, 1], list(self.genNestedExcept()))
if __name__ == "__main__":
unittest.main()