diff options
| author | Georg Brandl <georg@python.org> | 2006-10-28 13:56:58 (GMT) | 
|---|---|---|
| committer | Georg Brandl <georg@python.org> | 2006-10-28 13:56:58 (GMT) | 
| commit | 0b679629c6e3ef3d1f0107ed1fd8c09158dfa917 (patch) | |
| tree | fe869563fc018f3b7ebde2fed9e90e38c2677d92 /Lib/test/test_opcodes.py | |
| parent | 2f03760a9836916a453719f37f070bd6b2aed86b (diff) | |
| download | cpython-0b679629c6e3ef3d1f0107ed1fd8c09158dfa917.zip cpython-0b679629c6e3ef3d1f0107ed1fd8c09158dfa917.tar.gz cpython-0b679629c6e3ef3d1f0107ed1fd8c09158dfa917.tar.bz2  | |
Convert test_opcodes to unittest.
Diffstat (limited to 'Lib/test/test_opcodes.py')
| -rw-r--r-- | Lib/test/test_opcodes.py | 207 | 
1 files changed, 108 insertions, 99 deletions
diff --git a/Lib/test/test_opcodes.py b/Lib/test/test_opcodes.py index c192963..88ec1f5 100644 --- a/Lib/test/test_opcodes.py +++ b/Lib/test/test_opcodes.py @@ -1,101 +1,110 @@  # Python test set -- part 2, opcodes -from test.test_support import TestFailed - - -print '2. Opcodes' -print 'XXX Not yet fully implemented' - -print '2.1 try inside for loop' -n = 0 -for i in range(10): -    n = n+i -    try: 1/0 -    except NameError: pass -    except ZeroDivisionError: pass -    except TypeError: pass -    try: pass -    except: pass -    try: pass -    finally: pass -    n = n+i -if n != 90: -    raise TestFailed, 'try inside for' - - -print '2.2 raise class exceptions' - -class AClass: pass -class BClass(AClass): pass -class CClass: pass -class DClass(AClass): -    def __init__(self, ignore): -        pass - -try: raise AClass() -except: pass - -try: raise AClass() -except AClass: pass - -try: raise BClass() -except AClass: pass - -try: raise BClass() -except CClass: raise TestFailed -except: pass - -a = AClass() -b = BClass() - -try: raise AClass, b -except BClass, v: -    if v != b: raise TestFailed, "v!=b" -else: raise TestFailed, "no exception" - -try: raise b -except AClass, v: -    if v != b: raise TestFailed, "v!=b AClass" - -# not enough arguments -try:  raise BClass, a -except TypeError: pass - -try:  raise DClass, a -except DClass, v: -    if not isinstance(v, DClass): -        raise TestFailed, "v not DClass" - -print '2.3 comparing function objects' - -f = eval('lambda: None') -g = eval('lambda: None') -if f == g: raise TestFailed, "functions should not be same" - -f = eval('lambda a: a') -g = eval('lambda a: a') -if f == g: raise TestFailed, "functions should not be same" - -f = eval('lambda a=1: a') -g = eval('lambda a=1: a') -if f == g: raise TestFailed, "functions should not be same" - -f = eval('lambda: 0') -g = eval('lambda: 1') -if f == g: raise TestFailed - -f = eval('lambda: None') -g = eval('lambda a: None') -if f == g: raise TestFailed - -f = eval('lambda a: None') -g = eval('lambda b: None') -if f == g: raise TestFailed - -f = eval('lambda a: None') -g = eval('lambda a=None: None') -if f == g: raise TestFailed - -f = eval('lambda a=0: None') -g = eval('lambda a=1: None') -if f == g: raise TestFailed +from test.test_support import run_unittest +import unittest + +class OpcodeTest(unittest.TestCase): + +    def test_try_inside_for_loop(self): +        n = 0 +        for i in range(10): +            n = n+i +            try: 1/0 +            except NameError: pass +            except ZeroDivisionError: pass +            except TypeError: pass +            try: pass +            except: pass +            try: pass +            finally: pass +            n = n+i +        if n != 90: +            self.fail('try inside for') + +    def test_raise_class_exceptions(self): + +        class AClass: pass +        class BClass(AClass): pass +        class CClass: pass +        class DClass(AClass): +            def __init__(self, ignore): +                pass + +        try: raise AClass() +        except: pass + +        try: raise AClass() +        except AClass: pass + +        try: raise BClass() +        except AClass: pass + +        try: raise BClass() +        except CClass: self.fail() +        except: pass + +        a = AClass() +        b = BClass() + +        try: raise AClass, b +        except BClass, v: +            if v != b: self.fail("v!=b") +        else: self.fail("no exception") + +        try: raise b +        except AClass, v: +            if v != b: self.fail("v!=b AClass") +        else: +            self.fail("no exception") + +        # not enough arguments +        try:  raise BClass, a +        except TypeError: pass +        else: self.fail("no exception") + +        try:  raise DClass, a +        except DClass, v: +            self.assert_(isinstance(v, DClass)) +        else: +            self.fail("no exception") + +    def test_compare_function_objects(self): + +        f = eval('lambda: None') +        g = eval('lambda: None') +        self.failIf(f == g) + +        f = eval('lambda a: a') +        g = eval('lambda a: a') +        self.failIf(f == g) + +        f = eval('lambda a=1: a') +        g = eval('lambda a=1: a') +        self.failIf(f == g) + +        f = eval('lambda: 0') +        g = eval('lambda: 1') +        self.failIf(f == g) + +        f = eval('lambda: None') +        g = eval('lambda a: None') +        self.failIf(f == g) + +        f = eval('lambda a: None') +        g = eval('lambda b: None') +        self.failIf(f == g) + +        f = eval('lambda a: None') +        g = eval('lambda a=None: None') +        self.failIf(f == g) + +        f = eval('lambda a=0: None') +        g = eval('lambda a=1: None') +        self.failIf(f == g) + + +def test_main(): +    run_unittest(OpcodeTest) + +if __name__ == '__main__': +    test_main()  | 
