4 from test
import test_support
5 from test
.pickletester
import ExtensionSaver
11 class CopyRegTestCase(unittest
.TestCase
):
14 self
.assertRaises(TypeError, copy_reg
.pickle
,
17 def test_noncallable_reduce(self
):
18 self
.assertRaises(TypeError, copy_reg
.pickle
,
19 type(1), "not a callable")
21 def test_noncallable_constructor(self
):
22 self
.assertRaises(TypeError, copy_reg
.pickle
,
23 type(1), int, "not a callable")
27 self
.assertEquals(True, copy
.copy(True))
29 def test_extension_registry(self
):
30 mod
, func
, code
= 'junk1 ', ' junk2', 0xabcd
31 e
= ExtensionSaver(code
)
33 # Shouldn't be in registry now.
34 self
.assertRaises(ValueError, copy_reg
.remove_extension
,
36 copy_reg
.add_extension(mod
, func
, code
)
37 # Should be in the registry.
38 self
.assert_(copy_reg
._extension
_registry
[mod
, func
] == code
)
39 self
.assert_(copy_reg
._inverted
_registry
[code
] == (mod
, func
))
40 # Shouldn't be in the cache.
41 self
.assert_(code
not in copy_reg
._extension
_cache
)
42 # Redundant registration should be OK.
43 copy_reg
.add_extension(mod
, func
, code
) # shouldn't blow up
45 self
.assertRaises(ValueError, copy_reg
.add_extension
,
47 self
.assertRaises(ValueError, copy_reg
.remove_extension
,
49 # Conflicting module name.
50 self
.assertRaises(ValueError, copy_reg
.add_extension
,
52 self
.assertRaises(ValueError, copy_reg
.remove_extension
,
54 # Conflicting function name.
55 self
.assertRaises(ValueError, copy_reg
.add_extension
,
57 self
.assertRaises(ValueError, copy_reg
.remove_extension
,
59 # Can't remove one that isn't registered at all.
60 if code
+ 1 not in copy_reg
._inverted
_registry
:
61 self
.assertRaises(ValueError, copy_reg
.remove_extension
,
62 mod
[1:], func
[1:], code
+ 1)
67 # Shouldn't be there anymore.
68 self
.assert_((mod
, func
) not in copy_reg
._extension
_registry
)
69 # The code *may* be in copy_reg._extension_registry, though, if
70 # we happened to pick on a registered code. So don't check for
73 # Check valid codes at the limits.
74 for code
in 1, 0x7fffffff:
75 e
= ExtensionSaver(code
)
77 copy_reg
.add_extension(mod
, func
, code
)
78 copy_reg
.remove_extension(mod
, func
, code
)
82 # Ensure invalid codes blow up.
83 for code
in -1, 0, 0x80000000L
:
84 self
.assertRaises(ValueError, copy_reg
.add_extension
,
88 test_support
.run_unittest(CopyRegTestCase
)
91 if __name__
== "__main__":