17db96d56Sopenharmony_ci"""Test the errno module
27db96d56Sopenharmony_ci   Roger E. Masse
37db96d56Sopenharmony_ci"""
47db96d56Sopenharmony_ci
57db96d56Sopenharmony_ciimport errno
67db96d56Sopenharmony_ciimport unittest
77db96d56Sopenharmony_ci
87db96d56Sopenharmony_cistd_c_errors = frozenset(['EDOM', 'ERANGE'])
97db96d56Sopenharmony_ci
107db96d56Sopenharmony_ciclass ErrnoAttributeTests(unittest.TestCase):
117db96d56Sopenharmony_ci
127db96d56Sopenharmony_ci    def test_for_improper_attributes(self):
137db96d56Sopenharmony_ci        # No unexpected attributes should be on the module.
147db96d56Sopenharmony_ci        for error_code in std_c_errors:
157db96d56Sopenharmony_ci            self.assertTrue(hasattr(errno, error_code),
167db96d56Sopenharmony_ci                            "errno is missing %s" % error_code)
177db96d56Sopenharmony_ci
187db96d56Sopenharmony_ci    def test_using_errorcode(self):
197db96d56Sopenharmony_ci        # Every key value in errno.errorcode should be on the module.
207db96d56Sopenharmony_ci        for value in errno.errorcode.values():
217db96d56Sopenharmony_ci            self.assertTrue(hasattr(errno, value),
227db96d56Sopenharmony_ci                            'no %s attr in errno' % value)
237db96d56Sopenharmony_ci
247db96d56Sopenharmony_ci
257db96d56Sopenharmony_ciclass ErrorcodeTests(unittest.TestCase):
267db96d56Sopenharmony_ci
277db96d56Sopenharmony_ci    def test_attributes_in_errorcode(self):
287db96d56Sopenharmony_ci        for attribute in errno.__dict__.keys():
297db96d56Sopenharmony_ci            if attribute.isupper():
307db96d56Sopenharmony_ci                self.assertIn(getattr(errno, attribute), errno.errorcode,
317db96d56Sopenharmony_ci                              'no %s attr in errno.errorcode' % attribute)
327db96d56Sopenharmony_ci
337db96d56Sopenharmony_ci
347db96d56Sopenharmony_ciif __name__ == '__main__':
357db96d56Sopenharmony_ci    unittest.main()
36