mò ‹ã¸Ec@sUdkZdklZdkZdklZlZdefd„ƒYZd„ZdS(N(sTestBase(sCHANGEDsUPTODATEt TestClasscBs±tZdZd„Zd„Zd„ZdZd„ZddZd „Z d Z d „Z d Z d Z d„ZdZdZdZd„ZdZd„ZdZd„Zd„ZRS(Ns?class Foo: def __init__(self, arg): self.var = arg cCsr|iidtƒiƒ}|}xJ|idƒD]9}y||}Wq1t j ot ||ƒ}q1Xq1W|S(Ntsyncht.( tselftdbtopentFalsetroottobjtpathtsplittpartt TypeErrortgetattr(RR R RR((t8/data/zmath/zope/lib/python/zodbcode/tests/test_class.pyt _load_pathscCs>|idƒ}|| }||d}|id||fƒS(NRisregistry._mgrs.%s._module.%s(tnametrfindtitmoduletklassRR(RRRRR((Rt _load_name*s cCs}|iid|iƒtiƒdk}|idƒ}|i |i dƒ|i dƒ}|dƒ}|i |i dƒdS(Nt testclassi s testclass.Foo(Rtregistryt newModuletclass_with_initt transactiontcommitRtFootxt assertEqualtvarRtFoo2ty(RRR!RR ((RttestClassWithInit4s   sÿclass Foo: def __init__(self, arg): self.var = arg # The class must have a getinitargs because the instance # will be pickled during module conversion. def __getinitargs__(self): return self.var, y = Foo(11) x = Foo(12) cCsï|iid|iƒtiƒdk}|i|ii dƒ|i dƒ}|i|dƒi dƒ|i dƒ}|i|i dƒ|i dƒ}|i|i dƒ|i t|dƒ ƒ|i t|dƒ ƒd|_d |_dS( NRi s testclass.Foos testclass.xs testclass.yi t_p_oidiÒiá(RRRtclass_and_instanceRRRRRRRR R!tassert_thasattrR#(RRR!RR ((RttestClassAndInstanceLs   s!class Foo: __implements__ = 1s cCsL|iid|iƒtiƒdk}|iƒ}|i |i dƒdS(NRi( RRRtclass_interfaceRRRRRRt__implements__(RRR((RttestClassInterfaceas    sfrom testclass import FoocCsD|iid|iƒtiƒ|iid|iƒtiƒdS(NRtanother(RRRRRRtcross_module_import(R((RttestCrossModuleImportls s;class Foo: def meth(self, arg): return arg * 3 s;class Foo: def meth(self, arg): return arg + 3 cCs6|iid|iƒtiƒdk}|iƒ}|i |i dƒdƒ|i dƒ}|ƒ}|i |i dƒdƒ|iid|iƒtiƒ|i |i dƒdƒ|i |i dƒdƒ|i |ƒi dƒdƒ|iiiƒ|i |i dƒdƒ|i |ƒi dƒdƒdS(NRii s testclass.Fooi(RRRtupdate_in_place1RRRRtinstRtmethRR tinst2t updateModuletupdate_in_place2t __class__t_p_jartsync(RR1RR/R ((RttestUpdateInPlacezs      sCclass Foo(object): def meth(self, arg): return arg * 2 sDclass Foo(object): def meth(self, arg): return arg // 2 smimport parent class Bar(parent.Foo): def meth(self, arg): return super(Bar, self).meth(arg) + 5 cCsä|iid|iƒ|iid|iƒtiƒdk}|i|iƒi dƒdddƒ|ii d|i ƒtiƒ|i|iƒi dƒdddƒ|i dƒ}|i|ƒi dƒdddƒdS(Ntparenttchildiiis child.Bar( RRRtparent1R9RRRtBarR0R2tparent2R(RR;R9((RttestInheritanceAcrossModulesŸs  ' 'sBfrom persistent import Persistent class Foo(Persistent): pass cCsŠ|iid|iƒtiƒdk}|iƒ}|ii}|i |idƒd|_|i |idƒ|i |ii|ƒdS(Ntpersisti( RRRR>RRRRR#tfoo_oidRtNone(RRR?R>((RttestPersistentSubclass°s     s"from persist import Foo x = Foo() cCsV|iid|iƒtiƒdk}|iid|iƒtiƒdk}dS(NR>t save_persist(RRRR>RRRB(RRBR>((RttestSavePersistentSubclassÁs    cCs‘|iid|iƒtiƒdk}d|i_|i |ii t ƒtiƒ|i |ii t ƒ|i dƒ}|i |idƒdS(NR8is parent.Foo(RRRR:RRR8RtattrRt_p_statetCHANGEDtUPTODATER(RR8R((RtXXXtestUpdateClassAttributeÉs    (t__name__t __module__RRRR"R$R'R(R*R,R-R.R3R7R:R<R9R=R>RARBRCRH(((RRs,         cCs titƒS(N(tunittestt makeSuiteR(((Rt test_suiteÕs( RKtzodbcode.tests.test_moduletTestBaseRtpersistent.cPersistenceRFRGRRM(RORKRFRRGRRM((Rt?s   À