@@ -4118,6 +4118,33 @@ def test_c_methods(self):
41184118 with self .subTest (proto = proto , descr = descr ):
41194119 self .assertRaises (TypeError , self .dumps , descr , proto )
41204120
4121+ def test_private_methods (self ):
4122+ if self .py_version < (3 , 15 ):
4123+ self .skipTest ('not supported in Python < 3.15' )
4124+ obj = PrivateMethods (42 )
4125+ for proto in protocols :
4126+ with self .subTest (proto = proto ):
4127+ unpickled = self .loads (self .dumps (obj .get_method (), proto ))
4128+ self .assertEqual (unpickled (), 42 )
4129+ unpickled = self .loads (self .dumps (obj .get_unbound_method (), proto ))
4130+ self .assertEqual (unpickled (obj ), 42 )
4131+ unpickled = self .loads (self .dumps (obj .get_classmethod (), proto ))
4132+ self .assertEqual (unpickled (), 43 )
4133+ unpickled = self .loads (self .dumps (obj .get_staticmethod (), proto ))
4134+ self .assertEqual (unpickled (), 44 )
4135+
4136+ def test_private_nested_classes (self ):
4137+ if self .py_version < (3 , 15 ):
4138+ self .skipTest ('not supported in Python < 3.15' )
4139+ cls1 = PrivateNestedClasses .get_nested ()
4140+ cls2 = cls1 .get_nested2 ()
4141+ for proto in protocols :
4142+ with self .subTest (proto = proto ):
4143+ unpickled = self .loads (self .dumps (cls1 , proto ))
4144+ self .assertIs (unpickled , cls1 )
4145+ unpickled = self .loads (self .dumps (cls2 , proto ))
4146+ self .assertIs (unpickled , cls2 )
4147+
41214148 def test_object_with_attrs (self ):
41224149 obj = Object ()
41234150 obj .a = 1
0 commit comments