/Lib/test/test_module.py

http://unladen-swallow.googlecode.com/ · Python · 62 lines · 47 code · 8 blank · 7 comment · 3 complexity · 05705c00174f2958ce54d062b7c08477 MD5 · raw file

  1. # Test the module type
  2. import unittest
  3. from test.test_support import run_unittest
  4. import sys
  5. ModuleType = type(sys)
  6. class ModuleTests(unittest.TestCase):
  7. def test_uninitialized(self):
  8. # An uninitialized module has no __dict__ or __name__,
  9. # and __doc__ is None
  10. foo = ModuleType.__new__(ModuleType)
  11. self.failUnless(foo.__dict__ is None)
  12. self.assertRaises(SystemError, dir, foo)
  13. try:
  14. s = foo.__name__
  15. self.fail("__name__ = %s" % repr(s))
  16. except AttributeError:
  17. pass
  18. self.assertEqual(foo.__doc__, ModuleType.__doc__)
  19. def test_no_docstring(self):
  20. # Regularly initialized module, no docstring
  21. foo = ModuleType("foo")
  22. self.assertEqual(foo.__name__, "foo")
  23. self.assertEqual(foo.__doc__, None)
  24. self.assertEqual(foo.__dict__, {"__name__": "foo", "__doc__": None})
  25. def test_ascii_docstring(self):
  26. # ASCII docstring
  27. foo = ModuleType("foo", "foodoc")
  28. self.assertEqual(foo.__name__, "foo")
  29. self.assertEqual(foo.__doc__, "foodoc")
  30. self.assertEqual(foo.__dict__,
  31. {"__name__": "foo", "__doc__": "foodoc"})
  32. def test_unicode_docstring(self):
  33. # Unicode docstring
  34. foo = ModuleType("foo", u"foodoc\u1234")
  35. self.assertEqual(foo.__name__, "foo")
  36. self.assertEqual(foo.__doc__, u"foodoc\u1234")
  37. self.assertEqual(foo.__dict__,
  38. {"__name__": "foo", "__doc__": u"foodoc\u1234"})
  39. def test_reinit(self):
  40. # Reinitialization should not replace the __dict__
  41. foo = ModuleType("foo", u"foodoc\u1234")
  42. foo.bar = 42
  43. d = foo.__dict__
  44. foo.__init__("foo", "foodoc")
  45. self.assertEqual(foo.__name__, "foo")
  46. self.assertEqual(foo.__doc__, "foodoc")
  47. self.assertEqual(foo.bar, 42)
  48. self.assertEqual(foo.__dict__,
  49. {"__name__": "foo", "__doc__": "foodoc", "bar": 42})
  50. self.failUnless(foo.__dict__ is d)
  51. def test_main():
  52. run_unittest(ModuleTests)
  53. if __name__ == '__main__':
  54. test_main()