symbian-qemu-0.9.1-12/python-2.6.1/Lib/test/test_unpack.py
changeset 1 2fb8b9db1c86
equal deleted inserted replaced
0:ffa851df0825 1:2fb8b9db1c86
       
     1 doctests = """
       
     2 
       
     3 Unpack tuple
       
     4 
       
     5     >>> t = (1, 2, 3)
       
     6     >>> a, b, c = t
       
     7     >>> a == 1 and b == 2 and c == 3
       
     8     True
       
     9 
       
    10 Unpack list
       
    11 
       
    12     >>> l = [4, 5, 6]
       
    13     >>> a, b, c = l
       
    14     >>> a == 4 and b == 5 and c == 6
       
    15     True
       
    16 
       
    17 Unpack implied tuple
       
    18 
       
    19     >>> a, b, c = 7, 8, 9
       
    20     >>> a == 7 and b == 8 and c == 9
       
    21     True
       
    22 
       
    23 Unpack string... fun!
       
    24 
       
    25     >>> a, b, c = 'one'
       
    26     >>> a == 'o' and b == 'n' and c == 'e'
       
    27     True
       
    28 
       
    29 Unpack generic sequence
       
    30 
       
    31     >>> class Seq:
       
    32     ...     def __getitem__(self, i):
       
    33     ...         if i >= 0 and i < 3: return i
       
    34     ...         raise IndexError
       
    35     ...
       
    36     >>> a, b, c = Seq()
       
    37     >>> a == 0 and b == 1 and c == 2
       
    38     True
       
    39 
       
    40 Single element unpacking, with extra syntax
       
    41 
       
    42     >>> st = (99,)
       
    43     >>> sl = [100]
       
    44     >>> a, = st
       
    45     >>> a
       
    46     99
       
    47     >>> b, = sl
       
    48     >>> b
       
    49     100
       
    50 
       
    51 Now for some failures
       
    52 
       
    53 Unpacking non-sequence
       
    54 
       
    55     >>> a, b, c = 7
       
    56     Traceback (most recent call last):
       
    57       ...
       
    58     TypeError: 'int' object is not iterable
       
    59 
       
    60 Unpacking tuple of wrong size
       
    61 
       
    62     >>> a, b = t
       
    63     Traceback (most recent call last):
       
    64       ...
       
    65     ValueError: too many values to unpack
       
    66 
       
    67 Unpacking tuple of wrong size
       
    68 
       
    69     >>> a, b = l
       
    70     Traceback (most recent call last):
       
    71       ...
       
    72     ValueError: too many values to unpack
       
    73 
       
    74 Unpacking sequence too short
       
    75 
       
    76     >>> a, b, c, d = Seq()
       
    77     Traceback (most recent call last):
       
    78       ...
       
    79     ValueError: need more than 3 values to unpack
       
    80 
       
    81 Unpacking sequence too long
       
    82 
       
    83     >>> a, b = Seq()
       
    84     Traceback (most recent call last):
       
    85       ...
       
    86     ValueError: too many values to unpack
       
    87 
       
    88 Unpacking a sequence where the test for too long raises a different kind of
       
    89 error
       
    90 
       
    91     >>> class BozoError(Exception):
       
    92     ...     pass
       
    93     ...
       
    94     >>> class BadSeq:
       
    95     ...     def __getitem__(self, i):
       
    96     ...         if i >= 0 and i < 3:
       
    97     ...             return i
       
    98     ...         elif i == 3:
       
    99     ...             raise BozoError
       
   100     ...         else:
       
   101     ...             raise IndexError
       
   102     ...
       
   103 
       
   104 Trigger code while not expecting an IndexError (unpack sequence too long, wrong
       
   105 error)
       
   106 
       
   107     >>> a, b, c, d, e = BadSeq()
       
   108     Traceback (most recent call last):
       
   109       ...
       
   110     BozoError
       
   111 
       
   112 Trigger code while expecting an IndexError (unpack sequence too short, wrong
       
   113 error)
       
   114 
       
   115     >>> a, b, c = BadSeq()
       
   116     Traceback (most recent call last):
       
   117       ...
       
   118     BozoError
       
   119 
       
   120 """
       
   121 
       
   122 __test__ = {'doctests' : doctests}
       
   123 
       
   124 def test_main(verbose=False):
       
   125     from test import test_support
       
   126     from test import test_unpack
       
   127     test_support.run_doctest(test_unpack, verbose)
       
   128 
       
   129 if __name__ == "__main__":
       
   130     test_main(verbose=True)