cpython: 2407ecebcf7d (original) (raw)
--- a/Lib/test/test_descr.py +++ b/Lib/test/test_descr.py @@ -388,13 +388,21 @@ class OperatorsTest(unittest.TestCase): class ClassPropertiesAndMethods(unittest.TestCase):
- def assertHasAttr(self, obj, name):
self.assertTrue(hasattr(obj, name),[](#l1.8)
'%r has no attribute %r' % (obj, name))[](#l1.9)
- def assertNotHasAttr(self, obj, name):
self.assertFalse(hasattr(obj, name),[](#l1.12)
'%r has unexpected attribute %r' % (obj, name))[](#l1.13)
+ def test_python_dicts(self): # Testing Python subclass of dict... self.assertTrue(issubclass(dict, dict)) self.assertIsInstance({}, dict) d = dict() self.assertEqual(d, {})
self.assertTrue(d.__class__ is dict)[](#l1.21)
self.assertIs(d.__class__, dict)[](#l1.22) self.assertIsInstance(d, dict)[](#l1.23) class C(dict):[](#l1.24) state = -1[](#l1.25)
@@ -572,7 +580,7 @@ class ClassPropertiesAndMethods(unittest def _set_x(self, x): self.__x = -x a = A()
self.assertTrue(not hasattr(a, "x"))[](#l1.30)
self.assertNotHasAttr(a, "x")[](#l1.31) a.x = 12[](#l1.32) self.assertEqual(a.x, 12)[](#l1.33) self.assertEqual(a._A__x, -12)[](#l1.34)
@@ -998,14 +1006,14 @@ order (MRO) for bases """ self.assertEqual(type(a), object) b = object() self.assertNotEqual(a, b)
self.assertFalse(hasattr(a, "foo"))[](#l1.39)
self.assertNotHasAttr(a, "foo")[](#l1.40) try:[](#l1.41) a.foo = 12[](#l1.42) except (AttributeError, TypeError):[](#l1.43) pass[](#l1.44) else:[](#l1.45) self.fail("object() should not allow setting a foo attribute")[](#l1.46)
self.assertFalse(hasattr(object(), "__dict__"))[](#l1.47)
self.assertNotHasAttr(object(), "__dict__")[](#l1.48)
class Cdict(object): pass @@ -1020,28 +1028,28 @@ order (MRO) for bases """ class C0(object): slots = [] x = C0()
self.assertFalse(hasattr(x, "__dict__"))[](#l1.56)
self.assertFalse(hasattr(x, "foo"))[](#l1.57)
self.assertNotHasAttr(x, "__dict__")[](#l1.58)
self.assertNotHasAttr(x, "foo")[](#l1.59)
class C1(object): slots = ['a'] x = C1()
self.assertFalse(hasattr(x, "__dict__"))[](#l1.64)
self.assertFalse(hasattr(x, "a"))[](#l1.65)
self.assertNotHasAttr(x, "__dict__")[](#l1.66)
self.assertNotHasAttr(x, "a")[](#l1.67) x.a = 1[](#l1.68) self.assertEqual(x.a, 1)[](#l1.69) x.a = None[](#l1.70) self.assertEqual(x.a, None)[](#l1.71) del x.a[](#l1.72)
self.assertFalse(hasattr(x, "a"))[](#l1.73)
self.assertNotHasAttr(x, "a")[](#l1.74)
class C3(object): slots = ['a', 'b', 'c'] x = C3()
self.assertFalse(hasattr(x, "__dict__"))[](#l1.79)
self.assertFalse(hasattr(x, 'a'))[](#l1.80)
self.assertFalse(hasattr(x, 'b'))[](#l1.81)
self.assertFalse(hasattr(x, 'c'))[](#l1.82)
self.assertNotHasAttr(x, "__dict__")[](#l1.83)
self.assertNotHasAttr(x, 'a')[](#l1.84)
self.assertNotHasAttr(x, 'b')[](#l1.85)
self.assertNotHasAttr(x, 'c')[](#l1.86) x.a = 1[](#l1.87) x.b = 2[](#l1.88) x.c = 3[](#l1.89)
@@ -1057,8 +1065,8 @@ order (MRO) for bases """ def get(self): return self.__a x = C4(5)
self.assertFalse(hasattr(x, '__dict__'))[](#l1.94)
self.assertFalse(hasattr(x, '__a'))[](#l1.95)
self.assertNotHasAttr(x, '__dict__')[](#l1.96)
self.assertNotHasAttr(x, '__a')[](#l1.97) self.assertEqual(x.get(), 5)[](#l1.98) try:[](#l1.99) x.__a = 6[](#l1.100)
@@ -1130,7 +1138,7 @@ order (MRO) for bases """ x = C() x.foo = 5 self.assertEqual(x.foo, 5)
self.assertTrue(type(slots[0]) is str)[](#l1.105)
self.assertIs(type(slots[0]), str)[](#l1.106) # this used to leak references[](#l1.107) try:[](#l1.108) class C(object):[](#l1.109)
@@ -1222,16 +1230,16 @@ order (MRO) for bases """ class D(object): slots = ["dict"] a = D()
self.assertTrue(hasattr(a, "__dict__"))[](#l1.114)
self.assertFalse(hasattr(a, "__weakref__"))[](#l1.115)
self.assertHasAttr(a, "__dict__")[](#l1.116)
self.assertNotHasAttr(a, "__weakref__")[](#l1.117) a.foo = 42[](#l1.118) self.assertEqual(a.__dict__, {"foo": 42})[](#l1.119)
class W(object): slots = ["weakref"] a = W()
self.assertTrue(hasattr(a, "__weakref__"))[](#l1.124)
self.assertFalse(hasattr(a, "__dict__"))[](#l1.125)
self.assertHasAttr(a, "__weakref__")[](#l1.126)
self.assertNotHasAttr(a, "__dict__")[](#l1.127) try:[](#l1.128) a.foo = 42[](#l1.129) except AttributeError:[](#l1.130)
@@ -1242,16 +1250,16 @@ order (MRO) for bases """ class C1(W, D): slots = [] a = C1()
self.assertTrue(hasattr(a, "__dict__"))[](#l1.135)
self.assertTrue(hasattr(a, "__weakref__"))[](#l1.136)
self.assertHasAttr(a, "__dict__")[](#l1.137)
self.assertHasAttr(a, "__weakref__")[](#l1.138) a.foo = 42[](#l1.139) self.assertEqual(a.__dict__, {"foo": 42})[](#l1.140)
class C2(D, W): slots = [] a = C2()
self.assertTrue(hasattr(a, "__dict__"))[](#l1.145)
self.assertTrue(hasattr(a, "__weakref__"))[](#l1.146)
self.assertHasAttr(a, "__dict__")[](#l1.147)
self.assertHasAttr(a, "__weakref__")[](#l1.148) a.foo = 42[](#l1.149) self.assertEqual(a.__dict__, {"foo": 42})[](#l1.150)
@@ -1289,7 +1297,7 @@ order (MRO) for bases """ class C(object): pass a = C()
self.assertFalse(hasattr(a, "foobar"))[](#l1.156)
self.assertNotHasAttr(a, "foobar")[](#l1.157) C.foobar = 2[](#l1.158) self.assertEqual(a.foobar, 2)[](#l1.159) C.method = lambda self: 42[](#l1.160)
@@ -1299,7 +1307,7 @@ order (MRO) for bases """ C.int = lambda self: 100 self.assertEqual(int(a), 100) self.assertEqual(a.foobar, 2)
self.assertFalse(hasattr(a, "spam"))[](#l1.165)
self.assertNotHasAttr(a, "spam")[](#l1.166) def mygetattr(self, name):[](#l1.167) if name == "spam":[](#l1.168) return "spam"[](#l1.169)
@@ -1450,7 +1458,7 @@ order (MRO) for bases """ self.assertEqual(cm.x, 42) self.assertEqual(cm.dict, {"x" : 42}) del cm.x
self.assertFalse(hasattr(cm, "x"))[](#l1.174)
self.assertNotHasAttr(cm, "x")[](#l1.175)
@support.impl_detail("the module 'xxsubtype' is internal") def test_classmethods_in_c(self): @@ -1505,7 +1513,7 @@ order (MRO) for bases """ self.assertEqual(sm.x, 42) self.assertEqual(sm.dict, {"x" : 42}) del sm.x
self.assertFalse(hasattr(sm, "x"))[](#l1.183)
self.assertNotHasAttr(sm, "x")[](#l1.184)
@support.impl_detail("the module 'xxsubtype' is internal") def test_staticmethods_in_c(self): @@ -1575,7 +1583,7 @@ order (MRO) for bases """ self.assertEqual(a.x, 10) self.assertEqual(a.x, 11) del a.x
self.assertEqual(hasattr(a, 'x'), 0)[](#l1.192)
self.assertNotHasAttr(a, 'x')[](#l1.193)
def test_newslots(self): # Testing new slot override... @@ -1845,17 +1853,17 @@ order (MRO) for bases """ raise IndexError c1 = C() c2 = C()
self.assertTrue(not not c1) # What?[](#l1.201)
self.assertFalse(not c1)[](#l1.202) self.assertNotEqual(id(c1), id(c2))[](#l1.203) hash(c1)[](#l1.204) hash(c2)[](#l1.205) self.assertEqual(c1, c1)[](#l1.206) self.assertTrue(c1 != c2)[](#l1.207)
self.assertTrue(not c1 != c1)[](#l1.208)
self.assertTrue(not c1 == c2)[](#l1.209)
self.assertFalse(c1 != c1)[](#l1.210)
self.assertFalse(c1 == c2)[](#l1.211) # Note that the module name appears in str/repr, and that varies[](#l1.212) # depending on whether this test is run standalone or from a framework.[](#l1.213)
self.assertTrue(str(c1).find('C object at ') >= 0)[](#l1.214)
self.assertGreaterEqual(str(c1).find('C object at '), 0)[](#l1.215) self.assertEqual(str(c1), repr(c1))[](#l1.216) self.assertNotIn(-1, c1)[](#l1.217) for i in range(10):[](#l1.218)
@@ -1868,17 +1876,17 @@ order (MRO) for bases """ raise IndexError d1 = D() d2 = D()
self.assertTrue(not not d1)[](#l1.223)
self.assertFalse(not d1)[](#l1.224) self.assertNotEqual(id(d1), id(d2))[](#l1.225) hash(d1)[](#l1.226) hash(d2)[](#l1.227) self.assertEqual(d1, d1)[](#l1.228) self.assertNotEqual(d1, d2)[](#l1.229)
self.assertTrue(not d1 != d1)[](#l1.230)
self.assertTrue(not d1 == d2)[](#l1.231)
self.assertFalse(d1 != d1)[](#l1.232)
self.assertFalse(d1 == d2)[](#l1.233) # Note that the module name appears in str/repr, and that varies[](#l1.234) # depending on whether this test is run standalone or from a framework.[](#l1.235)
self.assertTrue(str(d1).find('D object at ') >= 0)[](#l1.236)
self.assertGreaterEqual(str(d1).find('D object at '), 0)[](#l1.237) self.assertEqual(str(d1), repr(d1))[](#l1.238) self.assertNotIn(-1, d1)[](#l1.239) for i in range(10):[](#l1.240)
@@ -1914,11 +1922,11 @@ order (MRO) for bases """ p1 = Proxy(1) p_1 = Proxy(-1) self.assertFalse(p0)
self.assertTrue(not not p1)[](#l1.245)
self.assertFalse(not p1)[](#l1.246) self.assertEqual(hash(p0), hash(0))[](#l1.247) self.assertEqual(p0, p0)[](#l1.248) self.assertNotEqual(p0, p1)[](#l1.249)
self.assertTrue(not p0 != p0)[](#l1.250)
self.assertFalse(p0 != p0)[](#l1.251) self.assertEqual(not p0, p1)[](#l1.252) self.assertTrue(p0 < p1)[](#l1.253) self.assertTrue(p0 <= p1)[](#l1.254)
@@ -1950,7 +1958,7 @@ order (MRO) for bases """ try: weakref.ref(no) except TypeError as msg:
self.assertTrue(str(msg).find("weak reference") >= 0)[](#l1.259)
self.assertIn("weak reference", str(msg))[](#l1.260) else:[](#l1.261) self.fail("weakref.ref(no) should be illegal")[](#l1.262) class Weak(object):[](#l1.263)
@@ -1974,17 +1982,17 @@ order (MRO) for bases """ del self.__x x = property(getx, setx, delx, doc="I'm the x property.") a = C()
self.assertFalse(hasattr(a, "x"))[](#l1.268)
self.assertNotHasAttr(a, "x")[](#l1.269) a.x = 42[](#l1.270) self.assertEqual(a._C__x, 42)[](#l1.271) self.assertEqual(a.x, 42)[](#l1.272) del a.x[](#l1.273)
self.assertFalse(hasattr(a, "x"))[](#l1.274)
self.assertFalse(hasattr(a, "_C__x"))[](#l1.275)
self.assertNotHasAttr(a, "x")[](#l1.276)
self.assertNotHasAttr(a, "_C__x")[](#l1.277) C.x.__set__(a, 100)[](#l1.278) self.assertEqual(C.x.__get__(a), 100)[](#l1.279) C.x.__delete__(a)[](#l1.280)
self.assertFalse(hasattr(a, "x"))[](#l1.281)
self.assertNotHasAttr(a, "x")[](#l1.282)
raw = C.dict['x'] self.assertIsInstance(raw, property) @@ -1996,9 +2004,9 @@ order (MRO) for bases """ self.assertIn("fdel", attrs) self.assertEqual(raw.doc, "I'm the x property.")
self.assertTrue(raw.fget is C.__dict__['getx'])[](#l1.290)
self.assertTrue(raw.fset is C.__dict__['setx'])[](#l1.291)
self.assertTrue(raw.fdel is C.__dict__['delx'])[](#l1.292)
self.assertIs(raw.fget, C.__dict__['getx'])[](#l1.293)
self.assertIs(raw.fset, C.__dict__['setx'])[](#l1.294)
self.assertIs(raw.fdel, C.__dict__['delx'])[](#l1.295)
for attr in "doc", "fget", "fset", "fdel": try: @@ -2062,14 +2070,14 @@ order (MRO) for bases """ del self._foo c = C() self.assertEqual(C.foo.doc, "hello")
self.assertFalse(hasattr(c, "foo"))[](#l1.303)
self.assertNotHasAttr(c, "foo")[](#l1.304) c.foo = -42[](#l1.305)
self.assertTrue(hasattr(c, '_foo'))[](#l1.306)
self.assertHasAttr(c, '_foo')[](#l1.307) self.assertEqual(c._foo, 42)[](#l1.308) self.assertEqual(c.foo, 42)[](#l1.309) del c.foo[](#l1.310)
self.assertFalse(hasattr(c, '_foo'))[](#l1.311)
self.assertFalse(hasattr(c, "foo"))[](#l1.312)
self.assertNotHasAttr(c, '_foo')[](#l1.313)
self.assertNotHasAttr(c, "foo")[](#l1.314)
class D(C): @C.foo.deleter @@ -2421,13 +2429,13 @@ order (MRO) for bases """ a = hexint(12345) self.assertEqual(a, 12345) self.assertEqual(int(a), 12345)
self.assertTrue(int(a).__class__ is int)[](#l1.322)
self.assertIs(int(a).__class__, int)[](#l1.323) self.assertEqual(hash(a), hash(12345))[](#l1.324)
self.assertTrue((+a).__class__ is int)[](#l1.325)
self.assertTrue((a >> 0).__class__ is int)[](#l1.326)
self.assertTrue((a << 0).__class__ is int)[](#l1.327)
self.assertTrue((hexint(0) << 12).__class__ is int)[](#l1.328)
self.assertTrue((hexint(0) >> 12).__class__ is int)[](#l1.329)
self.assertIs((+a).__class__, int)[](#l1.330)
self.assertIs((a >> 0).__class__, int)[](#l1.331)
self.assertIs((a << 0).__class__, int)[](#l1.332)
self.assertIs((hexint(0) << 12).__class__, int)[](#l1.333)
self.assertIs((hexint(0) >> 12).__class__, int)[](#l1.334)
class octlong(int): slots = [] @@ -2444,31 +2452,31 @@ order (MRO) for bases """ self.assertEqual(a, 12345) self.assertEqual(int(a), 12345) self.assertEqual(hash(a), hash(12345))
self.assertTrue(int(a).__class__ is int)[](#l1.342)
self.assertTrue((+a).__class__ is int)[](#l1.343)
self.assertTrue((-a).__class__ is int)[](#l1.344)
self.assertTrue((-octlong(0)).__class__ is int)[](#l1.345)
self.assertTrue((a >> 0).__class__ is int)[](#l1.346)
self.assertTrue((a << 0).__class__ is int)[](#l1.347)
self.assertTrue((a - 0).__class__ is int)[](#l1.348)
self.assertTrue((a * 1).__class__ is int)[](#l1.349)
self.assertTrue((a ** 1).__class__ is int)[](#l1.350)
self.assertTrue((a // 1).__class__ is int)[](#l1.351)
self.assertTrue((1 * a).__class__ is int)[](#l1.352)
self.assertTrue((a | 0).__class__ is int)[](#l1.353)
self.assertTrue((a ^ 0).__class__ is int)[](#l1.354)
self.assertTrue((a & -1).__class__ is int)[](#l1.355)
self.assertTrue((octlong(0) << 12).__class__ is int)[](#l1.356)
self.assertTrue((octlong(0) >> 12).__class__ is int)[](#l1.357)
self.assertTrue(abs(octlong(0)).__class__ is int)[](#l1.358)
self.assertIs(int(a).__class__, int)[](#l1.359)
self.assertIs((+a).__class__, int)[](#l1.360)
self.assertIs((-a).__class__, int)[](#l1.361)
self.assertIs((-octlong(0)).__class__, int)[](#l1.362)
self.assertIs((a >> 0).__class__, int)[](#l1.363)
self.assertIs((a << 0).__class__, int)[](#l1.364)
self.assertIs((a - 0).__class__, int)[](#l1.365)
self.assertIs((a * 1).__class__, int)[](#l1.366)
self.assertIs((a ** 1).__class__, int)[](#l1.367)
self.assertIs((a // 1).__class__, int)[](#l1.368)
self.assertIs((1 * a).__class__, int)[](#l1.369)
self.assertIs((a | 0).__class__, int)[](#l1.370)
self.assertIs((a ^ 0).__class__, int)[](#l1.371)
self.assertIs((a & -1).__class__, int)[](#l1.372)
self.assertIs((octlong(0) << 12).__class__, int)[](#l1.373)
self.assertIs((octlong(0) >> 12).__class__, int)[](#l1.374)
self.assertIs(abs(octlong(0)).__class__, int)[](#l1.375)
# Because octlong overrides add, we can't check the absence of +0 # optimizations using octlong. class longclone(int): pass a = longclone(1)
self.assertTrue((a + 0).__class__ is int)[](#l1.382)
self.assertTrue((0 + a).__class__ is int)[](#l1.383)
self.assertIs((a + 0).__class__, int)[](#l1.384)
self.assertIs((0 + a).__class__, int)[](#l1.385)
# Check that negative clones don't segfault a = longclone(-1) @@ -2485,9 +2493,9 @@ order (MRO) for bases """ a = precfloat(12345) self.assertEqual(a, 12345.0) self.assertEqual(float(a), 12345.0)
self.assertTrue(float(a).__class__ is float)[](#l1.393)
self.assertIs(float(a).__class__, float)[](#l1.394) self.assertEqual(hash(a), hash(12345.0))[](#l1.395)
self.assertTrue((+a).__class__ is float)[](#l1.396)
self.assertIs((+a).__class__, float)[](#l1.397)
class madcomplex(complex): def repr(self): @@ -2535,20 +2543,20 @@ order (MRO) for bases """ self.assertEqual(v, t) a = madtuple((1,2,3,4,5)) self.assertEqual(tuple(a), (1,2,3,4,5))
self.assertTrue(tuple(a).__class__ is tuple)[](#l1.405)
self.assertIs(tuple(a).__class__, tuple)[](#l1.406) self.assertEqual(hash(a), hash((1,2,3,4,5)))[](#l1.407)
self.assertTrue(a[:].__class__ is tuple)[](#l1.408)
self.assertTrue((a * 1).__class__ is tuple)[](#l1.409)
self.assertTrue((a * 0).__class__ is tuple)[](#l1.410)
self.assertTrue((a + ()).__class__ is tuple)[](#l1.411)
self.assertIs(a[:].__class__, tuple)[](#l1.412)
self.assertIs((a * 1).__class__, tuple)[](#l1.413)
self.assertIs((a * 0).__class__, tuple)[](#l1.414)
self.assertIs((a + ()).__class__, tuple)[](#l1.415) a = madtuple(())[](#l1.416) self.assertEqual(tuple(a), ())[](#l1.417)
self.assertTrue(tuple(a).__class__ is tuple)[](#l1.418)
self.assertTrue((a + a).__class__ is tuple)[](#l1.419)
self.assertTrue((a * 0).__class__ is tuple)[](#l1.420)
self.assertTrue((a * 1).__class__ is tuple)[](#l1.421)
self.assertTrue((a * 2).__class__ is tuple)[](#l1.422)
self.assertTrue(a[:].__class__ is tuple)[](#l1.423)
self.assertIs(tuple(a).__class__, tuple)[](#l1.424)
self.assertIs((a + a).__class__, tuple)[](#l1.425)
self.assertIs((a * 0).__class__, tuple)[](#l1.426)
self.assertIs((a * 1).__class__, tuple)[](#l1.427)
self.assertIs((a * 2).__class__, tuple)[](#l1.428)
self.assertIs(a[:].__class__, tuple)[](#l1.429)
class madstring(str): _rev = None @@ -2570,48 +2578,48 @@ order (MRO) for bases """ self.assertEqual(u, s) s = madstring("12345") self.assertEqual(str(s), "12345")
self.assertTrue(str(s).__class__ is str)[](#l1.437)
self.assertIs(str(s).__class__, str)[](#l1.438)
base = "\x00" * 5 s = madstring(base) self.assertEqual(s, base) self.assertEqual(str(s), base)
self.assertTrue(str(s).__class__ is str)[](#l1.444)
self.assertIs(str(s).__class__, str)[](#l1.445) self.assertEqual(hash(s), hash(base))[](#l1.446) self.assertEqual({s: 1}[base], 1)[](#l1.447) self.assertEqual({base: 1}[s], 1)[](#l1.448)
self.assertTrue((s + "").__class__ is str)[](#l1.449)
self.assertIs((s + "").__class__, str)[](#l1.450) self.assertEqual(s + "", base)[](#l1.451)
self.assertTrue(("" + s).__class__ is str)[](#l1.452)
self.assertIs(("" + s).__class__, str)[](#l1.453) self.assertEqual("" + s, base)[](#l1.454)
self.assertTrue((s * 0).__class__ is str)[](#l1.455)
self.assertIs((s * 0).__class__, str)[](#l1.456) self.assertEqual(s * 0, "")[](#l1.457)
self.assertTrue((s * 1).__class__ is str)[](#l1.458)
self.assertIs((s * 1).__class__, str)[](#l1.459) self.assertEqual(s * 1, base)[](#l1.460)
self.assertTrue((s * 2).__class__ is str)[](#l1.461)
self.assertIs((s * 2).__class__, str)[](#l1.462) self.assertEqual(s * 2, base + base)[](#l1.463)
self.assertTrue(s[:].__class__ is str)[](#l1.464)
self.assertIs(s[:].__class__, str)[](#l1.465) self.assertEqual(s[:], base)[](#l1.466)
self.assertTrue(s[0:0].__class__ is str)[](#l1.467)
self.assertIs(s[0:0].__class__, str)[](#l1.468) self.assertEqual(s[0:0], "")[](#l1.469)
self.assertTrue(s.strip().__class__ is str)[](#l1.470)
self.assertIs(s.strip().__class__, str)[](#l1.471) self.assertEqual(s.strip(), base)[](#l1.472)
self.assertTrue(s.lstrip().__class__ is str)[](#l1.473)
self.assertIs(s.lstrip().__class__, str)[](#l1.474) self.assertEqual(s.lstrip(), base)[](#l1.475)
self.assertTrue(s.rstrip().__class__ is str)[](#l1.476)
self.assertIs(s.rstrip().__class__, str)[](#l1.477) self.assertEqual(s.rstrip(), base)[](#l1.478) identitytab = {}[](#l1.479)
self.assertTrue(s.translate(identitytab).__class__ is str)[](#l1.480)
self.assertIs(s.translate(identitytab).__class__, str)[](#l1.481) self.assertEqual(s.translate(identitytab), base)[](#l1.482)
self.assertTrue(s.replace("x", "x").__class__ is str)[](#l1.483)
self.assertIs(s.replace("x", "x").__class__, str)[](#l1.484) self.assertEqual(s.replace("x", "x"), base)[](#l1.485)
self.assertTrue(s.ljust(len(s)).__class__ is str)[](#l1.486)
self.assertIs(s.ljust(len(s)).__class__, str)[](#l1.487) self.assertEqual(s.ljust(len(s)), base)[](#l1.488)
self.assertTrue(s.rjust(len(s)).__class__ is str)[](#l1.489)
self.assertIs(s.rjust(len(s)).__class__, str)[](#l1.490) self.assertEqual(s.rjust(len(s)), base)[](#l1.491)
self.assertTrue(s.center(len(s)).__class__ is str)[](#l1.492)
self.assertIs(s.center(len(s)).__class__, str)[](#l1.493) self.assertEqual(s.center(len(s)), base)[](#l1.494)
self.assertTrue(s.lower().__class__ is str)[](#l1.495)
self.assertIs(s.lower().__class__, str)[](#l1.496) self.assertEqual(s.lower(), base)[](#l1.497)
class madunicode(str): @@ -2630,47 +2638,47 @@ order (MRO) for bases """ base = "12345" u = madunicode(base) self.assertEqual(str(u), base)
self.assertTrue(str(u).__class__ is str)[](#l1.504)
self.assertIs(str(u).__class__, str)[](#l1.505) self.assertEqual(hash(u), hash(base))[](#l1.506) self.assertEqual({u: 1}[base], 1)[](#l1.507) self.assertEqual({base: 1}[u], 1)[](#l1.508)
self.assertTrue(u.strip().__class__ is str)[](#l1.509)
self.assertIs(u.strip().__class__, str)[](#l1.510) self.assertEqual(u.strip(), base)[](#l1.511)
self.assertTrue(u.lstrip().__class__ is str)[](#l1.512)
self.assertIs(u.lstrip().__class__, str)[](#l1.513) self.assertEqual(u.lstrip(), base)[](#l1.514)
self.assertTrue(u.rstrip().__class__ is str)[](#l1.515)
self.assertIs(u.rstrip().__class__, str)[](#l1.516) self.assertEqual(u.rstrip(), base)[](#l1.517)
self.assertTrue(u.replace("x", "x").__class__ is str)[](#l1.518)
self.assertIs(u.replace("x", "x").__class__, str)[](#l1.519) self.assertEqual(u.replace("x", "x"), base)[](#l1.520)
self.assertTrue(u.replace("xy", "xy").__class__ is str)[](#l1.521)
self.assertIs(u.replace("xy", "xy").__class__, str)[](#l1.522) self.assertEqual(u.replace("xy", "xy"), base)[](#l1.523)
self.assertTrue(u.center(len(u)).__class__ is str)[](#l1.524)
self.assertIs(u.center(len(u)).__class__, str)[](#l1.525) self.assertEqual(u.center(len(u)), base)[](#l1.526)
self.assertTrue(u.ljust(len(u)).__class__ is str)[](#l1.527)
self.assertIs(u.ljust(len(u)).__class__, str)[](#l1.528) self.assertEqual(u.ljust(len(u)), base)[](#l1.529)
self.assertTrue(u.rjust(len(u)).__class__ is str)[](#l1.530)
self.assertIs(u.rjust(len(u)).__class__, str)[](#l1.531) self.assertEqual(u.rjust(len(u)), base)[](#l1.532)
self.assertTrue(u.lower().__class__ is str)[](#l1.533)
self.assertIs(u.lower().__class__, str)[](#l1.534) self.assertEqual(u.lower(), base)[](#l1.535)
self.assertTrue(u.upper().__class__ is str)[](#l1.536)
self.assertIs(u.upper().__class__, str)[](#l1.537) self.assertEqual(u.upper(), base)[](#l1.538)
self.assertTrue(u.capitalize().__class__ is str)[](#l1.539)
self.assertIs(u.capitalize().__class__, str)[](#l1.540) self.assertEqual(u.capitalize(), base)[](#l1.541)
self.assertTrue(u.title().__class__ is str)[](#l1.542)
self.assertIs(u.title().__class__, str)[](#l1.543) self.assertEqual(u.title(), base)[](#l1.544)
self.assertTrue((u + "").__class__ is str)[](#l1.545)
self.assertIs((u + "").__class__, str)[](#l1.546) self.assertEqual(u + "", base)[](#l1.547)
self.assertTrue(("" + u).__class__ is str)[](#l1.548)
self.assertIs(("" + u).__class__, str)[](#l1.549) self.assertEqual("" + u, base)[](#l1.550)
self.assertTrue((u * 0).__class__ is str)[](#l1.551)
self.assertIs((u * 0).__class__, str)[](#l1.552) self.assertEqual(u * 0, "")[](#l1.553)
self.assertTrue((u * 1).__class__ is str)[](#l1.554)
self.assertIs((u * 1).__class__, str)[](#l1.555) self.assertEqual(u * 1, base)[](#l1.556)
self.assertTrue((u * 2).__class__ is str)[](#l1.557)
self.assertIs((u * 2).__class__, str)[](#l1.558) self.assertEqual(u * 2, base + base)[](#l1.559)
self.assertTrue(u[:].__class__ is str)[](#l1.560)
self.assertIs(u[:].__class__, str)[](#l1.561) self.assertEqual(u[:], base)[](#l1.562)
self.assertTrue(u[0:0].__class__ is str)[](#l1.563)
self.assertIs(u[0:0].__class__, str)[](#l1.564) self.assertEqual(u[0:0], "")[](#l1.565)
class sublist(list): @@ -2846,13 +2854,13 @@ order (MRO) for bases """ for x in 1, 2, 3: for y in 1, 2, 3: for op in "<", "<=", "==", "!=", ">", ">=":
self.assertTrue(eval("c[x] %s c[y]" % op) ==[](#l1.572)
self.assertEqual(eval("c[x] %s c[y]" % op),[](#l1.573) eval("x %s y" % op),[](#l1.574) "x=%d, y=%d" % (x, y))[](#l1.575)
self.assertTrue(eval("c[x] %s y" % op) ==[](#l1.576)
self.assertEqual(eval("c[x] %s y" % op),[](#l1.577) eval("x %s y" % op),[](#l1.578) "x=%d, y=%d" % (x, y))[](#l1.579)
self.assertTrue(eval("x %s c[y]" % op) ==[](#l1.580)
self.assertEqual(eval("x %s c[y]" % op),[](#l1.581) eval("x %s y" % op),[](#l1.582) "x=%d, y=%d" % (x, y))[](#l1.583)
@@ -2925,12 +2933,15 @@ order (MRO) for bases """ for x in 1, 2, 3: for y in 1, 2, 3: for op in "<", "<=", "==", "!=", ">", ">=":
self.assertTrue(eval("c[x] %s c[y]" % op) == eval("x %s y" % op),[](#l1.589)
"x=%d, y=%d" % (x, y))[](#l1.590)
self.assertTrue(eval("c[x] %s y" % op) == eval("x %s y" % op),[](#l1.591)
"x=%d, y=%d" % (x, y))[](#l1.592)
self.assertTrue(eval("x %s c[y]" % op) == eval("x %s y" % op),[](#l1.593)
"x=%d, y=%d" % (x, y))[](#l1.594)
self.assertEqual(eval("c[x] %s c[y]" % op),[](#l1.595)
eval("x %s y" % op),[](#l1.596)
"x=%d, y=%d" % (x, y))[](#l1.597)
self.assertEqual(eval("c[x] %s y" % op),[](#l1.598)
eval("x %s y" % op),[](#l1.599)
"x=%d, y=%d" % (x, y))[](#l1.600)
self.assertEqual(eval("x %s c[y]" % op),[](#l1.601)
eval("x %s y" % op),[](#l1.602)
"x=%d, y=%d" % (x, y))[](#l1.603)
def test_descrdoc(self): # Testing descriptor doc strings... @@ -2969,9 +2980,9 @@ order (MRO) for bases """ for cls2 in C, D, E, F: x = cls() x.class = cls2
self.assertTrue(x.__class__ is cls2)[](#l1.611)
self.assertIs(x.__class__, cls2)[](#l1.612) x.__class__ = cls[](#l1.613)
self.assertTrue(x.__class__ is cls)[](#l1.614)
self.assertIs(x.__class__, cls)[](#l1.615) def cant(x, C):[](#l1.616) try:[](#l1.617) x.__class__ = C[](#l1.618)
@@ -3027,11 +3038,11 @@ order (MRO) for bases """ x = cls() x.a = 1 x.class = cls2
self.assertTrue(x.__class__ is cls2,[](#l1.623)
self.assertIs(x.__class__, cls2,[](#l1.624) "assigning %r as __class__ for %r silently failed" % (cls2, x))[](#l1.625) self.assertEqual(x.a, 1)[](#l1.626) x.__class__ = cls[](#l1.627)
self.assertTrue(x.__class__ is cls,[](#l1.628)
self.assertIs(x.__class__, cls,[](#l1.629) "assigning %r as __class__ for %r silently failed" % (cls, x))[](#l1.630) self.assertEqual(x.a, 1)[](#l1.631) for cls in G, J, K, L, M, N, P, R, list, Int:[](#l1.632)
@@ -3200,7 +3211,7 @@ order (MRO) for bases """ for cls in C, C1, C2: s = pickle.dumps(cls, bin) cls2 = pickle.loads(s)
self.assertTrue(cls2 is cls)[](#l1.637)
self.assertIs(cls2, cls)[](#l1.638)
a = C1(1, 2); a.append(42); a.append(24) b = C2("hello", "world", 42) @@ -3230,7 +3241,7 @@ order (MRO) for bases """ import copy for cls in C, C1, C2: cls2 = copy.deepcopy(cls)
self.assertTrue(cls2 is cls)[](#l1.646)
self.assertIs(cls2, cls)[](#l1.647)
a = C1(1, 2); a.append(42); a.append(24) b = C2("hello", "world", 42) @@ -3290,7 +3301,7 @@ order (MRO) for bases """ # Now it should work x = C() y = pickle.loads(pickle.dumps(x))
self.assertEqual(hasattr(y, 'a'), 0)[](#l1.655)
self.assertNotHasAttr(y, 'a')[](#l1.656) x.a = 42[](#l1.657) y = pickle.loads(pickle.dumps(x))[](#l1.658) self.assertEqual(y.a, 42)[](#l1.659)
@@ -3590,9 +3601,9 @@ order (MRO) for bases """ from types import ModuleType as M m = M.new(M) str(m)
self.assertEqual(hasattr(m, "__name__"), 0)[](#l1.664)
self.assertEqual(hasattr(m, "__file__"), 0)[](#l1.665)
self.assertEqual(hasattr(m, "foo"), 0)[](#l1.666)
self.assertNotHasAttr(m, "__name__")[](#l1.667)
self.assertNotHasAttr(m, "__file__")[](#l1.668)
self.assertNotHasAttr(m, "foo")[](#l1.669) self.assertFalse(m.__dict__) # None or {} are both reasonable answers[](#l1.670) m.foo = 1[](#l1.671) self.assertEqual(m.__dict__, {"foo": 1})[](#l1.672)
@@ -3772,8 +3783,8 @@ order (MRO) for bases """ slots=() if support.check_impl_detail(): self.assertEqual(C.basicsize, B.basicsize)
self.assertTrue(hasattr(C, '__dict__'))[](#l1.677)
self.assertTrue(hasattr(C, '__weakref__'))[](#l1.678)
self.assertHasAttr(C, '__dict__')[](#l1.679)
self.assertHasAttr(C, '__weakref__')[](#l1.680) C().x = 2[](#l1.681)
def test_rmul(self): @@ -4251,7 +4262,7 @@ order (MRO) for bases """ self.assertEqual(c.attr, 1) # this makes a crash more likely: support.gc_collect()
self.assertEqual(hasattr(c, 'attr'), False)[](#l1.688)
self.assertNotHasAttr(c, 'attr')[](#l1.689)
def test_init(self): # SF 1155938 @@ -4274,17 +4285,17 @@ order (MRO) for bases """ l = [] self.assertEqual(l.add, l.add) self.assertEqual(l.add, [].add)
self.assertTrue(l.__add__ != [5].__add__)[](#l1.697)
self.assertTrue(l.__add__ != l.__mul__)[](#l1.698)
self.assertTrue(l.__add__.__name__ == '__add__')[](#l1.699)
self.assertNotEqual(l.__add__, [5].__add__)[](#l1.700)
self.assertNotEqual(l.__add__, l.__mul__)[](#l1.701)
self.assertEqual(l.__add__.__name__, '__add__')[](#l1.702) if hasattr(l.__add__, '__self__'):[](#l1.703) # CPython[](#l1.704)
self.assertTrue(l.__add__.__self__ is l)[](#l1.705)
self.assertTrue(l.__add__.__objclass__ is list)[](#l1.706)
self.assertIs(l.__add__.__self__, l)[](#l1.707)
self.assertIs(l.__add__.__objclass__, list)[](#l1.708) else:[](#l1.709) # Python implementations where [].__add__ is a normal bound method[](#l1.710)
self.assertTrue(l.__add__.im_self is l)[](#l1.711)
self.assertTrue(l.__add__.im_class is list)[](#l1.712)
self.assertIs(l.__add__.im_self, l)[](#l1.713)
self.assertIs(l.__add__.im_class, list)[](#l1.714) self.assertEqual(l.__add__.__doc__, list.__add__.__doc__)[](#l1.715) try:[](#l1.716) hash(l.__add__)[](#l1.717)
@@ -4451,7 +4462,7 @@ order (MRO) for bases """ fake_str = FakeStr() # isinstance() reads class
self.assertTrue(isinstance(fake_str, str))[](#l1.722)
self.assertIsInstance(fake_str, str)[](#l1.723)
# call a method descriptor with self.assertRaises(TypeError):