symbian-qemu-0.9.1-12/python-2.6.1/Lib/test/test___future__.py
changeset 1 2fb8b9db1c86
equal deleted inserted replaced
0:ffa851df0825 1:2fb8b9db1c86
       
     1 #! /usr/bin/env python
       
     2 import unittest
       
     3 from test import test_support
       
     4 import __future__
       
     5 
       
     6 GOOD_SERIALS = ("alpha", "beta", "candidate", "final")
       
     7 
       
     8 features = __future__.all_feature_names
       
     9 
       
    10 class FutureTest(unittest.TestCase):
       
    11 
       
    12     def test_names(self):
       
    13         # Verify that all_feature_names appears correct.
       
    14         given_feature_names = features[:]
       
    15         for name in dir(__future__):
       
    16             obj = getattr(__future__, name, None)
       
    17             if obj is not None and isinstance(obj, __future__._Feature):
       
    18                 self.assert_(
       
    19                     name in given_feature_names,
       
    20                     "%r should have been in all_feature_names" % name
       
    21                 )
       
    22                 given_feature_names.remove(name)
       
    23         self.assertEqual(len(given_feature_names), 0,
       
    24                "all_feature_names has too much: %r" % given_feature_names)
       
    25 
       
    26     def test_attributes(self):
       
    27         for feature in features:
       
    28             value = getattr(__future__, feature)
       
    29 
       
    30             optional = value.getOptionalRelease()
       
    31             mandatory = value.getMandatoryRelease()
       
    32 
       
    33             a = self.assert_
       
    34             e = self.assertEqual
       
    35             def check(t, name):
       
    36                 a(isinstance(t, tuple), "%s isn't tuple" % name)
       
    37                 e(len(t), 5, "%s isn't 5-tuple" % name)
       
    38                 (major, minor, micro, level, serial) = t
       
    39                 a(isinstance(major, int), "%s major isn't int"  % name)
       
    40                 a(isinstance(minor, int), "%s minor isn't int" % name)
       
    41                 a(isinstance(micro, int), "%s micro isn't int" % name)
       
    42                 a(isinstance(level, basestring),
       
    43                     "%s level isn't string" % name)
       
    44                 a(level in GOOD_SERIALS,
       
    45                        "%s level string has unknown value" % name)
       
    46                 a(isinstance(serial, int), "%s serial isn't int" % name)
       
    47 
       
    48             check(optional, "optional")
       
    49             if mandatory is not None:
       
    50                 check(mandatory, "mandatory")
       
    51                 a(optional < mandatory,
       
    52                        "optional not less than mandatory, and mandatory not None")
       
    53 
       
    54             a(hasattr(value, "compiler_flag"),
       
    55                    "feature is missing a .compiler_flag attr")
       
    56             a(isinstance(getattr(value, "compiler_flag"), int),
       
    57                    ".compiler_flag isn't int")
       
    58 
       
    59 def test_main():
       
    60     test_support.run_unittest(FutureTest)
       
    61 
       
    62 if __name__ == "__main__":
       
    63     test_main()