blob: 2c64dc94b622ace9aa5054ac466151dbe35f47bb [file] [log] [blame]
Guido van Rossumc3a787e2002-06-04 05:52:47 +00001# Test the module type
Collin Winter69c955f2007-04-06 20:03:11 +00002import unittest
3from test.test_support import verbose, run_unittest
Guido van Rossumc3a787e2002-06-04 05:52:47 +00004
5import sys
Collin Winter69c955f2007-04-06 20:03:11 +00006ModuleType = type(sys)
Guido van Rossumc3a787e2002-06-04 05:52:47 +00007
Collin Winter69c955f2007-04-06 20:03:11 +00008class ModuleTests(unittest.TestCase):
9 def test_uninitialized(self):
10 # An uninitialized module has no __dict__ or __name__,
11 # and __doc__ is None
12 foo = ModuleType.__new__(ModuleType)
13 self.failUnless(foo.__dict__ is None)
14 try:
15 s = foo.__name__
16 self.fail("__name__ = %s" % repr(s))
17 except AttributeError:
18 pass
19 self.assertEqual(foo.__doc__, ModuleType.__doc__)
Guido van Rossumc3a787e2002-06-04 05:52:47 +000020
Collin Winter69c955f2007-04-06 20:03:11 +000021 def test_no_docstring(self):
22 # Regularly initialized module, no docstring
23 foo = ModuleType("foo")
24 self.assertEqual(foo.__name__, "foo")
25 self.assertEqual(foo.__doc__, None)
26 self.assertEqual(foo.__dict__, {"__name__": "foo", "__doc__": None})
Guido van Rossumc3a787e2002-06-04 05:52:47 +000027
Collin Winter69c955f2007-04-06 20:03:11 +000028 def test_ascii_docstring(self):
29 # ASCII docstring
30 foo = ModuleType("foo", "foodoc")
31 self.assertEqual(foo.__name__, "foo")
32 self.assertEqual(foo.__doc__, "foodoc")
33 self.assertEqual(foo.__dict__,
34 {"__name__": "foo", "__doc__": "foodoc"})
Guido van Rossumc3a787e2002-06-04 05:52:47 +000035
Collin Winter69c955f2007-04-06 20:03:11 +000036 def test_unicode_docstring(self):
37 # Unicode docstring
38 foo = ModuleType("foo", u"foodoc\u1234")
39 self.assertEqual(foo.__name__, "foo")
40 self.assertEqual(foo.__doc__, u"foodoc\u1234")
41 self.assertEqual(foo.__dict__,
42 {"__name__": "foo", "__doc__": u"foodoc\u1234"})
Guido van Rossumc3a787e2002-06-04 05:52:47 +000043
Collin Winter69c955f2007-04-06 20:03:11 +000044 def test_reinit(self):
45 # Reinitialization should not replace the __dict__
46 foo = ModuleType("foo", u"foodoc\u1234")
47 foo.bar = 42
48 d = foo.__dict__
49 foo.__init__("foo", "foodoc")
50 self.assertEqual(foo.__name__, "foo")
51 self.assertEqual(foo.__doc__, "foodoc")
52 self.assertEqual(foo.bar, 42)
53 self.assertEqual(foo.__dict__,
54 {"__name__": "foo", "__doc__": "foodoc", "bar": 42})
55 self.failUnless(foo.__dict__ is d)
Guido van Rossumc3a787e2002-06-04 05:52:47 +000056
Collin Winter69c955f2007-04-06 20:03:11 +000057def test_main():
58 run_unittest(ModuleTests)
59
60if __name__ == '__main__':
61 test_main()