Ignore:
Timestamp:
Mar 19, 2014, 11:31:01 PM (11 years ago)
Author:
dmik
Message:

python: Merge vendor 2.7.6 to trunk.

Location:
python/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • python/trunk

  • python/trunk/Lib/test/test_weakref.py

    r2 r391  
    3434
    3535
     36class Object:
     37    def __init__(self, arg):
     38        self.arg = arg
     39    def __repr__(self):
     40        return "<Object %r>" % self.arg
     41    def __eq__(self, other):
     42        if isinstance(other, Object):
     43            return self.arg == other.arg
     44        return NotImplemented
     45    def __ne__(self, other):
     46        if isinstance(other, Object):
     47            return self.arg != other.arg
     48        return NotImplemented
     49    def __hash__(self):
     50        return hash(self.arg)
     51
     52class RefCycle:
     53    def __init__(self):
     54        self.cycle = self
     55
     56
    3657class TestBase(unittest.TestCase):
    3758
     
    5576        o = C()
    5677        wr = weakref.ref(o)
    57         `wr`
     78        repr(wr)
    5879        # Dead reference:
    5980        del o
    60         `wr`
     81        repr(wr)
    6182
    6283    def test_basic_callback(self):
     
    7192        ref2 = weakref.ref(o, self.callback)
    7293        del o
    73         self.assert_(ref1() is None,
     94        self.assertTrue(ref1() is None,
    7495                     "expected reference to be invalidated")
    75         self.assert_(ref2() is None,
     96        self.assertTrue(ref2() is None,
    7697                     "expected reference to be invalidated")
    77         self.assert_(self.cbcalled == 2,
     98        self.assertTrue(self.cbcalled == 2,
    7899                     "callback not called the right number of times")
    79100
     
    109130        self.assertRaises(weakref.ReferenceError, check, ref2)
    110131        self.assertRaises(weakref.ReferenceError, bool, weakref.proxy(C()))
    111         self.assert_(self.cbcalled == 2)
     132        self.assertTrue(self.cbcalled == 2)
    112133
    113134    def check_basic_ref(self, factory):
    114135        o = factory()
    115136        ref = weakref.ref(o)
    116         self.assert_(ref() is not None,
     137        self.assertTrue(ref() is not None,
    117138                     "weak reference to live object should be live")
    118139        o2 = ref()
    119         self.assert_(o is o2,
     140        self.assertTrue(o is o2,
    120141                     "<ref>() should return original object if live")
    121142
     
    125146        ref = weakref.ref(o, self.callback)
    126147        del o
    127         self.assert_(self.cbcalled == 1,
     148        self.assertTrue(self.cbcalled == 1,
    128149                     "callback did not properly set 'cbcalled'")
    129         self.assert_(ref() is None,
     150        self.assertTrue(ref() is None,
    130151                     "ref2 should be dead after deleting object reference")
    131152
     
    137158        proxy = weakref.proxy(o)
    138159        ref2 = weakref.ref(o)
    139         self.assert_(ref1 is ref2,
     160        self.assertTrue(ref1 is ref2,
    140161                     "reference object w/out callback should be re-used")
    141162
     
    144165        ref1 = weakref.ref(o)
    145166        ref2 = weakref.ref(o)
    146         self.assert_(ref1 is ref2,
     167        self.assertTrue(ref1 is ref2,
    147168                     "reference object w/out callback should be re-used")
    148         self.assert_(weakref.getweakrefcount(o) == 2,
     169        self.assertTrue(weakref.getweakrefcount(o) == 2,
    149170                     "wrong weak ref count for object")
    150171        del proxy
    151         self.assert_(weakref.getweakrefcount(o) == 1,
     172        self.assertTrue(weakref.getweakrefcount(o) == 1,
    152173                     "wrong weak ref count for object after deleting proxy")
    153174
     
    157178        ref = weakref.ref(o)
    158179        proxy2 = weakref.proxy(o)
    159         self.assert_(proxy1 is proxy2,
     180        self.assertTrue(proxy1 is proxy2,
    160181                     "proxy object w/out callback should have been re-used")
    161182
     
    166187        L = UserList.UserList()
    167188        p = weakref.proxy(L)
    168         self.failIf(p, "proxy for empty UserList should be false")
     189        self.assertFalse(p, "proxy for empty UserList should be false")
    169190        p.append(12)
    170191        self.assertEqual(len(L), 1)
    171         self.failUnless(p, "proxy for non-empty UserList should be true")
    172         p[:] = [2, 3]
     192        self.assertTrue(p, "proxy for non-empty UserList should be true")
     193        with test_support.check_py3k_warnings():
     194            p[:] = [2, 3]
    173195        self.assertEqual(len(L), 2)
    174196        self.assertEqual(len(p), 2)
    175         self.failUnless(3 in p,
    176                         "proxy didn't support __contains__() properly")
     197        self.assertIn(3, p, "proxy didn't support __contains__() properly")
    177198        p[1] = 5
    178199        self.assertEqual(L[1], 5)
     
    184205        L3 = UserList.UserList(range(10))
    185206        p3 = weakref.proxy(L3)
    186         self.assertEqual(L3[:], p3[:])
    187         self.assertEqual(L3[5:], p3[5:])
    188         self.assertEqual(L3[:5], p3[:5])
    189         self.assertEqual(L3[2:5], p3[2:5])
     207        with test_support.check_py3k_warnings():
     208            self.assertEqual(L3[:], p3[:])
     209            self.assertEqual(L3[5:], p3[5:])
     210            self.assertEqual(L3[:5], p3[:5])
     211            self.assertEqual(L3[2:5], p3[2:5])
    190212
    191213    def test_proxy_unicode(self):
     
    197219                return u"unicode"
    198220        instance = C()
    199         self.assertTrue("__unicode__" in dir(weakref.proxy(instance)))
     221        self.assertIn("__unicode__", dir(weakref.proxy(instance)))
    200222        self.assertEqual(unicode(weakref.proxy(instance)), u"unicode")
    201223
     
    238260        p1 = makeref(o, None)
    239261        p2 = makeref(o, None)
    240         self.assert_(p1 is p2, "both callbacks were None in the C API")
     262        self.assertTrue(p1 is p2, "both callbacks were None in the C API")
    241263        del p1, p2
    242264        p1 = makeref(o)
    243265        p2 = makeref(o, None)
    244         self.assert_(p1 is p2, "callbacks were NULL, None in the C API")
     266        self.assertTrue(p1 is p2, "callbacks were NULL, None in the C API")
    245267        del p1, p2
    246268        p1 = makeref(o)
    247269        p2 = makeref(o)
    248         self.assert_(p1 is p2, "both callbacks were NULL in the C API")
     270        self.assertTrue(p1 is p2, "both callbacks were NULL in the C API")
    249271        del p1, p2
    250272        p1 = makeref(o, None)
    251273        p2 = makeref(o)
    252         self.assert_(p1 is p2, "callbacks were None, NULL in the C API")
     274        self.assertTrue(p1 is p2, "callbacks were None, NULL in the C API")
    253275
    254276    def test_callable_proxy(self):
     
    258280        self.check_proxy(o, ref1)
    259281
    260         self.assert_(type(ref1) is weakref.CallableProxyType,
     282        self.assertTrue(type(ref1) is weakref.CallableProxyType,
    261283                     "proxy is not of callable type")
    262284        ref1('twinkies!')
    263         self.assert_(o.bar == 'twinkies!',
     285        self.assertTrue(o.bar == 'twinkies!',
    264286                     "call through proxy not passed through to original")
    265287        ref1(x='Splat.')
    266         self.assert_(o.bar == 'Splat.',
     288        self.assertTrue(o.bar == 'Splat.',
    267289                     "call through proxy not passed through to original")
    268290
     
    275297    def check_proxy(self, o, proxy):
    276298        o.foo = 1
    277         self.assert_(proxy.foo == 1,
     299        self.assertTrue(proxy.foo == 1,
    278300                     "proxy does not reflect attribute addition")
    279301        o.foo = 2
    280         self.assert_(proxy.foo == 2,
     302        self.assertTrue(proxy.foo == 2,
    281303                     "proxy does not reflect attribute modification")
    282304        del o.foo
    283         self.assert_(not hasattr(proxy, 'foo'),
     305        self.assertTrue(not hasattr(proxy, 'foo'),
    284306                     "proxy does not reflect attribute removal")
    285307
    286308        proxy.foo = 1
    287         self.assert_(o.foo == 1,
     309        self.assertTrue(o.foo == 1,
    288310                     "object does not reflect attribute addition via proxy")
    289311        proxy.foo = 2
    290         self.assert_(
     312        self.assertTrue(
    291313            o.foo == 2,
    292314            "object does not reflect attribute modification via proxy")
    293315        del proxy.foo
    294         self.assert_(not hasattr(o, 'foo'),
     316        self.assertTrue(not hasattr(o, 'foo'),
    295317                     "object does not reflect attribute removal via proxy")
    296318
     
    316338        ref1 = weakref.ref(o)
    317339        ref2 = weakref.ref(o, self.callback)
    318         self.assert_(weakref.getweakrefcount(o) == 2,
     340        self.assertTrue(weakref.getweakrefcount(o) == 2,
    319341                     "got wrong number of weak reference objects")
    320342
    321343        proxy1 = weakref.proxy(o)
    322344        proxy2 = weakref.proxy(o, self.callback)
    323         self.assert_(weakref.getweakrefcount(o) == 4,
     345        self.assertTrue(weakref.getweakrefcount(o) == 4,
    324346                     "got wrong number of weak reference objects")
    325347
    326348        del ref1, ref2, proxy1, proxy2
    327         self.assert_(weakref.getweakrefcount(o) == 0,
     349        self.assertTrue(weakref.getweakrefcount(o) == 0,
    328350                     "weak reference objects not unlinked from"
    329351                     " referent when discarded.")
    330352
    331353        # assumes ints do not support weakrefs
    332         self.assert_(weakref.getweakrefcount(1) == 0,
     354        self.assertTrue(weakref.getweakrefcount(1) == 0,
    333355                     "got wrong number of weak reference objects for int")
    334356
     
    338360        ref2 = weakref.ref(o, self.callback)
    339361        del ref1
    340         self.assert_(weakref.getweakrefs(o) == [ref2],
     362        self.assertTrue(weakref.getweakrefs(o) == [ref2],
    341363                     "list of refs does not match")
    342364
     
    345367        ref2 = weakref.ref(o, self.callback)
    346368        del ref2
    347         self.assert_(weakref.getweakrefs(o) == [ref1],
     369        self.assertTrue(weakref.getweakrefs(o) == [ref1],
    348370                     "list of refs does not match")
    349371
    350372        del ref1
    351         self.assert_(weakref.getweakrefs(o) == [],
     373        self.assertTrue(weakref.getweakrefs(o) == [],
    352374                     "list of refs not cleared")
    353375
    354376        # assumes ints do not support weakrefs
    355         self.assert_(weakref.getweakrefs(1) == [],
     377        self.assertTrue(weakref.getweakrefs(1) == [],
    356378                     "list of refs does not match for int")
    357379
     
    361383        f = F(2.0)
    362384        p = weakref.proxy(f)
    363         self.assert_(p + 1.0 == 3.0)
    364         self.assert_(1.0 + p == 3.0)  # this used to SEGV
     385        self.assertTrue(p + 1.0 == 3.0)
     386        self.assertTrue(1.0 + p == 3.0)  # this used to SEGV
    365387
    366388    def test_callbacks_protected(self):
     
    615637        d.wr = weakref.ref(callback, d.cb)  # ditto
    616638        external_wr = weakref.ref(callback, safe_callback)  # but this will
    617         self.assert_(external_wr() is callback)
     639        self.assertTrue(external_wr() is callback)
    618640
    619641        # The weakrefs attached to c and d should get cleared, so that
     
    683705        self.assertRaises(TypeError, r.__init__, 0, 0, 0, 0, 0)
    684706        # No exception should be raised here
     707        gc.collect()
     708
     709    def test_classes(self):
     710        # Check that both old-style classes and new-style classes
     711        # are weakrefable.
     712        class A(object):
     713            pass
     714        class B:
     715            pass
     716        l = []
     717        weakref.ref(int)
     718        a = weakref.ref(A, l.append)
     719        A = None
     720        gc.collect()
     721        self.assertEqual(a(), None)
     722        self.assertEqual(l, [a])
     723        b = weakref.ref(B, l.append)
     724        B = None
     725        gc.collect()
     726        self.assertEqual(b(), None)
     727        self.assertEqual(l, [a, b])
     728
     729    def test_equality(self):
     730        # Alive weakrefs defer equality testing to their underlying object.
     731        x = Object(1)
     732        y = Object(1)
     733        z = Object(2)
     734        a = weakref.ref(x)
     735        b = weakref.ref(y)
     736        c = weakref.ref(z)
     737        d = weakref.ref(x)
     738        # Note how we directly test the operators here, to stress both
     739        # __eq__ and __ne__.
     740        self.assertTrue(a == b)
     741        self.assertFalse(a != b)
     742        self.assertFalse(a == c)
     743        self.assertTrue(a != c)
     744        self.assertTrue(a == d)
     745        self.assertFalse(a != d)
     746        del x, y, z
     747        gc.collect()
     748        for r in a, b, c:
     749            # Sanity check
     750            self.assertIs(r(), None)
     751        # Dead weakrefs compare by identity: whether `a` and `d` are the
     752        # same weakref object is an implementation detail, since they pointed
     753        # to the same original object and didn't have a callback.
     754        # (see issue #16453).
     755        self.assertFalse(a == b)
     756        self.assertTrue(a != b)
     757        self.assertFalse(a == c)
     758        self.assertTrue(a != c)
     759        self.assertEqual(a == d, a is d)
     760        self.assertEqual(a != d, a is not d)
     761
     762    def test_hashing(self):
     763        # Alive weakrefs hash the same as the underlying object
     764        x = Object(42)
     765        y = Object(42)
     766        a = weakref.ref(x)
     767        b = weakref.ref(y)
     768        self.assertEqual(hash(a), hash(42))
     769        del x, y
     770        gc.collect()
     771        # Dead weakrefs:
     772        # - retain their hash is they were hashed when alive;
     773        # - otherwise, cannot be hashed.
     774        self.assertEqual(hash(a), hash(42))
     775        self.assertRaises(TypeError, hash, b)
     776
     777    def test_trashcan_16602(self):
     778        # Issue #16602: when a weakref's target was part of a long
     779        # deallocation chain, the trashcan mechanism could delay clearing
     780        # of the weakref and make the target object visible from outside
     781        # code even though its refcount had dropped to 0.  A crash ensued.
     782        class C(object):
     783            def __init__(self, parent):
     784                if not parent:
     785                    return
     786                wself = weakref.ref(self)
     787                def cb(wparent):
     788                    o = wself()
     789                self.wparent = weakref.ref(parent, cb)
     790
     791        d = weakref.WeakKeyDictionary()
     792        root = c = C(None)
     793        for n in range(100):
     794            d[c] = c = C(c)
     795        del root
    685796        gc.collect()
    686797
     
    698809        o = Object("foo")
    699810        mr = MyRef(o, value=24)
    700         self.assert_(mr() is o)
    701         self.assert_(mr.called)
     811        self.assertTrue(mr() is o)
     812        self.assertTrue(mr.called)
    702813        self.assertEqual(mr.value, 24)
    703814        del o
    704         self.assert_(mr() is None)
    705         self.assert_(mr.called)
     815        self.assertTrue(mr() is None)
     816        self.assertTrue(mr.called)
    706817
    707818    def test_subclass_refs_dont_replace_standard_refs(self):
     
    711822        r1 = MyRef(o)
    712823        r2 = weakref.ref(o)
    713         self.assert_(r1 is not r2)
     824        self.assertTrue(r1 is not r2)
    714825        self.assertEqual(weakref.getweakrefs(o), [r2, r1])
    715826        self.assertEqual(weakref.getweakrefcount(o), 2)
     
    718829        refs = weakref.getweakrefs(o)
    719830        self.assertEqual(len(refs), 3)
    720         self.assert_(r2 is refs[0])
    721         self.assert_(r1 in refs[1:])
    722         self.assert_(r3 in refs[1:])
     831        self.assertTrue(r2 is refs[0])
     832        self.assertIn(r1, refs[1:])
     833        self.assertIn(r3, refs[1:])
    723834
    724835    def test_subclass_refs_dont_conflate_callbacks(self):
     
    728839        r1 = MyRef(o, id)
    729840        r2 = MyRef(o, str)
    730         self.assert_(r1 is not r2)
     841        self.assertTrue(r1 is not r2)
    731842        refs = weakref.getweakrefs(o)
    732         self.assert_(r1 in refs)
    733         self.assert_(r2 in refs)
     843        self.assertIn(r1, refs)
     844        self.assertIn(r2, refs)
    734845
    735846    def test_subclass_refs_with_slots(self):
     
    748859        self.assertEqual(r.slot2, "def")
    749860        self.assertEqual(r.meth(), "abcdef")
    750         self.failIf(hasattr(r, "__dict__"))
     861        self.assertFalse(hasattr(r, "__dict__"))
    751862
    752863    def test_subclass_refs_with_cycle(self):
     
    789900
    790901
    791 class Object:
    792     def __init__(self, arg):
    793         self.arg = arg
    794     def __repr__(self):
    795         return "<Object %r>" % self.arg
    796 
    797 
    798902class MappingTestCase(TestBase):
    799903
    800904    COUNT = 10
     905
     906    def check_len_cycles(self, dict_type, cons):
     907        N = 20
     908        items = [RefCycle() for i in range(N)]
     909        dct = dict_type(cons(o) for o in items)
     910        # Keep an iterator alive
     911        it = dct.iteritems()
     912        try:
     913            next(it)
     914        except StopIteration:
     915            pass
     916        del items
     917        gc.collect()
     918        n1 = len(dct)
     919        del it
     920        gc.collect()
     921        n2 = len(dct)
     922        # one item may be kept alive inside the iterator
     923        self.assertIn(n1, (0, 1))
     924        self.assertEqual(n2, 0)
     925
     926    def test_weak_keyed_len_cycles(self):
     927        self.check_len_cycles(weakref.WeakKeyDictionary, lambda k: (k, 1))
     928
     929    def test_weak_valued_len_cycles(self):
     930        self.check_len_cycles(weakref.WeakValueDictionary, lambda k: (1, k))
     931
     932    def check_len_race(self, dict_type, cons):
     933        # Extended sanity checks for len() in the face of cyclic collection
     934        self.addCleanup(gc.set_threshold, *gc.get_threshold())
     935        for th in range(1, 100):
     936            N = 20
     937            gc.collect(0)
     938            gc.set_threshold(th, th, th)
     939            items = [RefCycle() for i in range(N)]
     940            dct = dict_type(cons(o) for o in items)
     941            del items
     942            # All items will be collected at next garbage collection pass
     943            it = dct.iteritems()
     944            try:
     945                next(it)
     946            except StopIteration:
     947                pass
     948            n1 = len(dct)
     949            del it
     950            n2 = len(dct)
     951            self.assertGreaterEqual(n1, 0)
     952            self.assertLessEqual(n1, N)
     953            self.assertGreaterEqual(n2, 0)
     954            self.assertLessEqual(n2, n1)
     955
     956    def test_weak_keyed_len_race(self):
     957        self.check_len_race(weakref.WeakKeyDictionary, lambda k: (k, 1))
     958
     959    def test_weak_valued_len_race(self):
     960        self.check_len_race(weakref.WeakValueDictionary, lambda k: (1, k))
    801961
    802962    def test_weak_values(self):
     
    806966        dict, objects = self.make_weak_valued_dict()
    807967        for o in objects:
    808             self.assert_(weakref.getweakrefcount(o) == 1,
     968            self.assertTrue(weakref.getweakrefcount(o) == 1,
    809969                         "wrong number of weak references to %r!" % o)
    810             self.assert_(o is dict[o.arg],
     970            self.assertTrue(o is dict[o.arg],
    811971                         "wrong object returned by weak dict!")
    812972        items1 = dict.items()
     
    814974        items1.sort()
    815975        items2.sort()
    816         self.assert_(items1 == items2,
     976        self.assertTrue(items1 == items2,
    817977                     "cloning of weak-valued dictionary did not work!")
    818978        del items1, items2
    819         self.assert_(len(dict) == self.COUNT)
     979        self.assertTrue(len(dict) == self.COUNT)
    820980        del objects[0]
    821         self.assert_(len(dict) == (self.COUNT - 1),
     981        self.assertTrue(len(dict) == (self.COUNT - 1),
    822982                     "deleting object did not cause dictionary update")
    823983        del objects, o
    824         self.assert_(len(dict) == 0,
     984        self.assertTrue(len(dict) == 0,
    825985                     "deleting the values did not clear the dictionary")
    826986        # regression on SF bug #447152:
     
    833993        #
    834994        #  This exercises d.copy(), d.items(), d[] = v, d[], del d[],
    835         #  len(d), d.has_key().
     995        #  len(d), in d.
    836996        #
    837997        dict, objects = self.make_weak_keyed_dict()
    838998        for o in objects:
    839             self.assert_(weakref.getweakrefcount(o) == 1,
     999            self.assertTrue(weakref.getweakrefcount(o) == 1,
    8401000                         "wrong number of weak references to %r!" % o)
    841             self.assert_(o.arg is dict[o],
     1001            self.assertTrue(o.arg is dict[o],
    8421002                         "wrong object returned by weak dict!")
    8431003        items1 = dict.items()
    8441004        items2 = dict.copy().items()
    845         self.assert_(set(items1) == set(items2),
     1005        self.assertTrue(set(items1) == set(items2),
    8461006                     "cloning of weak-keyed dictionary did not work!")
    8471007        del items1, items2
    848         self.assert_(len(dict) == self.COUNT)
     1008        self.assertTrue(len(dict) == self.COUNT)
    8491009        del objects[0]
    850         self.assert_(len(dict) == (self.COUNT - 1),
     1010        self.assertTrue(len(dict) == (self.COUNT - 1),
    8511011                     "deleting object did not cause dictionary update")
    8521012        del objects, o
    853         self.assert_(len(dict) == 0,
     1013        self.assertTrue(len(dict) == 0,
    8541014                     "deleting the keys did not clear the dictionary")
    8551015        o = Object(42)
    8561016        dict[o] = "What is the meaning of the universe?"
    857         self.assert_(dict.has_key(o))
    858         self.assert_(not dict.has_key(34))
     1017        self.assertIn(o, dict)
     1018        self.assertNotIn(34, dict)
    8591019
    8601020    def test_weak_keyed_iters(self):
     
    8681028        for wr in refs:
    8691029            ob = wr()
    870             self.assert_(dict.has_key(ob))
    871             self.assert_(ob in dict)
     1030            self.assertIn(ob, dict)
    8721031            self.assertEqual(ob.arg, dict[ob])
    8731032            objects2.remove(ob)
     
    8791038        for wr in dict.iterkeyrefs():
    8801039            ob = wr()
    881             self.assert_(dict.has_key(ob))
    882             self.assert_(ob in dict)
     1040            self.assertIn(ob, dict)
    8831041            self.assertEqual(ob.arg, dict[ob])
    8841042            objects2.remove(ob)
     
    9151073        for item in dict.iteritems():
    9161074            items.remove(item)
    917         self.assert_(len(items) == 0, "iteritems() did not touch all items")
     1075        self.assertTrue(len(items) == 0, "iteritems() did not touch all items")
    9181076
    9191077        # key iterator, via __iter__():
     
    9211079        for k in dict:
    9221080            keys.remove(k)
    923         self.assert_(len(keys) == 0, "__iter__() did not touch all keys")
     1081        self.assertTrue(len(keys) == 0, "__iter__() did not touch all keys")
    9241082
    9251083        # key iterator, via iterkeys():
     
    9271085        for k in dict.iterkeys():
    9281086            keys.remove(k)
    929         self.assert_(len(keys) == 0, "iterkeys() did not touch all keys")
     1087        self.assertTrue(len(keys) == 0, "iterkeys() did not touch all keys")
    9301088
    9311089        # value iterator:
     
    9331091        for v in dict.itervalues():
    9341092            values.remove(v)
    935         self.assert_(len(values) == 0,
     1093        self.assertTrue(len(values) == 0,
    9361094                     "itervalues() did not touch all values")
    9371095
     
    9391097        o = Object(3)
    9401098        dict = weakref.WeakKeyDictionary({o:364})
    941         self.assert_(dict[o] == 364)
     1099        self.assertTrue(dict[o] == 364)
    9421100
    9431101    def test_make_weak_keyed_dict_from_weak_keyed_dict(self):
     
    9451103        dict = weakref.WeakKeyDictionary({o:364})
    9461104        dict2 = weakref.WeakKeyDictionary(dict)
    947         self.assert_(dict[o] == 364)
     1105        self.assertTrue(dict[o] == 364)
    9481106
    9491107    def make_weak_keyed_dict(self):
     
    9651123        weakdict[key1] = value1
    9661124        weakdict[key2] = value2
    967         self.assert_(len(weakdict) == 2)
     1125        self.assertTrue(len(weakdict) == 2)
    9681126        k, v = weakdict.popitem()
    969         self.assert_(len(weakdict) == 1)
     1127        self.assertTrue(len(weakdict) == 1)
    9701128        if k is key1:
    971             self.assert_(v is value1)
     1129            self.assertTrue(v is value1)
    9721130        else:
    973             self.assert_(v is value2)
     1131            self.assertTrue(v is value2)
    9741132        k, v = weakdict.popitem()
    975         self.assert_(len(weakdict) == 0)
     1133        self.assertTrue(len(weakdict) == 0)
    9761134        if k is key1:
    977             self.assert_(v is value1)
     1135            self.assertTrue(v is value1)
    9781136        else:
    979             self.assert_(v is value2)
     1137            self.assertTrue(v is value2)
    9801138
    9811139    def test_weak_valued_dict_popitem(self):
     
    9881146
    9891147    def check_setdefault(self, klass, key, value1, value2):
    990         self.assert_(value1 is not value2,
     1148        self.assertTrue(value1 is not value2,
    9911149                     "invalid test"
    9921150                     " -- value parameters must be distinct objects")
    9931151        weakdict = klass()
    9941152        o = weakdict.setdefault(key, value1)
    995         self.assert_(o is value1)
    996         self.assert_(weakdict.has_key(key))
    997         self.assert_(weakdict.get(key) is value1)
    998         self.assert_(weakdict[key] is value1)
     1153        self.assertIs(o, value1)
     1154        self.assertIn(key, weakdict)
     1155        self.assertIs(weakdict.get(key), value1)
     1156        self.assertIs(weakdict[key], value1)
    9991157
    10001158        o = weakdict.setdefault(key, value2)
    1001         self.assert_(o is value1)
    1002         self.assert_(weakdict.has_key(key))
    1003         self.assert_(weakdict.get(key) is value1)
    1004         self.assert_(weakdict[key] is value1)
     1159        self.assertIs(o, value1)
     1160        self.assertIn(key, weakdict)
     1161        self.assertIs(weakdict.get(key), value1)
     1162        self.assertIs(weakdict[key], value1)
    10051163
    10061164    def test_weak_valued_dict_setdefault(self):
     
    10141172    def check_update(self, klass, dict):
    10151173        #
    1016         #  This exercises d.update(), len(d), d.keys(), d.has_key(),
     1174        #  This exercises d.update(), len(d), d.keys(), in d,
    10171175        #  d.get(), d[].
    10181176        #
    10191177        weakdict = klass()
    10201178        weakdict.update(dict)
    1021         self.assert_(len(weakdict) == len(dict))
     1179        self.assertEqual(len(weakdict), len(dict))
    10221180        for k in weakdict.keys():
    1023             self.assert_(dict.has_key(k),
     1181            self.assertIn(k, dict,
    10241182                         "mysterious new key appeared in weak dict")
    10251183            v = dict.get(k)
    1026             self.assert_(v is weakdict[k])
    1027             self.assert_(v is weakdict.get(k))
     1184            self.assertIs(v, weakdict[k])
     1185            self.assertIs(v, weakdict.get(k))
    10281186        for k in dict.keys():
    1029             self.assert_(weakdict.has_key(k),
     1187            self.assertIn(k, weakdict,
    10301188                         "original key disappeared in weak dict")
    10311189            v = dict[k]
    1032             self.assert_(v is weakdict[k])
    1033             self.assert_(v is weakdict.get(k))
     1190            self.assertIs(v, weakdict[k])
     1191            self.assertIs(v, weakdict.get(k))
    10341192
    10351193    def test_weak_valued_dict_update(self):
     
    10471205        d[o1] = 'something'
    10481206        d[o2] = 'something'
    1049         self.assert_(len(d) == 2)
     1207        self.assertTrue(len(d) == 2)
    10501208        del d[o1]
    1051         self.assert_(len(d) == 1)
    1052         self.assert_(d.keys() == [o2])
     1209        self.assertTrue(len(d) == 1)
     1210        self.assertTrue(d.keys() == [o2])
    10531211
    10541212    def test_weak_valued_delitem(self):
     
    10581216        d['something'] = o1
    10591217        d['something else'] = o2
    1060         self.assert_(len(d) == 2)
     1218        self.assertTrue(len(d) == 2)
    10611219        del d['something']
    1062         self.assert_(len(d) == 1)
    1063         self.assert_(d.items() == [('something else', o2)])
     1220        self.assertTrue(len(d) == 1)
     1221        self.assertTrue(d.items() == [('something else', o2)])
    10641222
    10651223    def test_weak_keyed_bad_delitem(self):
Note: See TracChangeset for help on using the changeset viewer.