Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
cpython
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
cpython
Commits
2e29c9e1
Commit
2e29c9e1
authored
Nov 17, 2013
by
Serhiy Storchaka
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Issue #19607: Use specific asserts in weakref tests.
parent
3df4dcce
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
62 additions
and
65 deletions
+62
-65
Lib/test/test_weakref.py
Lib/test/test_weakref.py
+62
-65
No files found.
Lib/test/test_weakref.py
View file @
2e29c9e1
...
@@ -88,11 +88,9 @@ class ReferencesTestCase(TestBase):
...
@@ -88,11 +88,9 @@ class ReferencesTestCase(TestBase):
ref1
=
weakref
.
ref
(
o
,
self
.
callback
)
ref1
=
weakref
.
ref
(
o
,
self
.
callback
)
ref2
=
weakref
.
ref
(
o
,
self
.
callback
)
ref2
=
weakref
.
ref
(
o
,
self
.
callback
)
del
o
del
o
self
.
assertTrue
(
ref1
()
is
None
,
self
.
assertIsNone
(
ref1
(),
"expected reference to be invalidated"
)
"expected reference to be invalidated"
)
self
.
assertIsNone
(
ref2
(),
"expected reference to be invalidated"
)
self
.
assertTrue
(
ref2
()
is
None
,
self
.
assertEqual
(
self
.
cbcalled
,
2
,
"expected reference to be invalidated"
)
self
.
assertTrue
(
self
.
cbcalled
==
2
,
"callback not called the right number of times"
)
"callback not called the right number of times"
)
def
test_multiple_selfref_callbacks
(
self
):
def
test_multiple_selfref_callbacks
(
self
):
...
@@ -131,10 +129,10 @@ class ReferencesTestCase(TestBase):
...
@@ -131,10 +129,10 @@ class ReferencesTestCase(TestBase):
def
check_basic_ref
(
self
,
factory
):
def
check_basic_ref
(
self
,
factory
):
o
=
factory
()
o
=
factory
()
ref
=
weakref
.
ref
(
o
)
ref
=
weakref
.
ref
(
o
)
self
.
assert
True
(
ref
()
is
not
None
,
self
.
assert
IsNotNone
(
ref
()
,
"weak reference to live object should be live"
)
"weak reference to live object should be live"
)
o2
=
ref
()
o2
=
ref
()
self
.
assert
True
(
o
is
o2
,
self
.
assert
Is
(
o
,
o2
,
"<ref>() should return original object if live"
)
"<ref>() should return original object if live"
)
def
check_basic_callback
(
self
,
factory
):
def
check_basic_callback
(
self
,
factory
):
...
@@ -142,9 +140,9 @@ class ReferencesTestCase(TestBase):
...
@@ -142,9 +140,9 @@ class ReferencesTestCase(TestBase):
o
=
factory
()
o
=
factory
()
ref
=
weakref
.
ref
(
o
,
self
.
callback
)
ref
=
weakref
.
ref
(
o
,
self
.
callback
)
del
o
del
o
self
.
assert
True
(
self
.
cbcalled
==
1
,
self
.
assert
Equal
(
self
.
cbcalled
,
1
,
"callback did not properly set 'cbcalled'"
)
"callback did not properly set 'cbcalled'"
)
self
.
assert
True
(
ref
()
is
None
,
self
.
assert
IsNone
(
ref
()
,
"ref2 should be dead after deleting object reference"
)
"ref2 should be dead after deleting object reference"
)
def
test_ref_reuse
(
self
):
def
test_ref_reuse
(
self
):
...
@@ -154,19 +152,19 @@ class ReferencesTestCase(TestBase):
...
@@ -154,19 +152,19 @@ class ReferencesTestCase(TestBase):
# between these two; it should make no difference
# between these two; it should make no difference
proxy
=
weakref
.
proxy
(
o
)
proxy
=
weakref
.
proxy
(
o
)
ref2
=
weakref
.
ref
(
o
)
ref2
=
weakref
.
ref
(
o
)
self
.
assert
True
(
ref1
is
ref2
,
self
.
assert
Is
(
ref1
,
ref2
,
"reference object w/out callback should be re-used"
)
"reference object w/out callback should be re-used"
)
o
=
C
()
o
=
C
()
proxy
=
weakref
.
proxy
(
o
)
proxy
=
weakref
.
proxy
(
o
)
ref1
=
weakref
.
ref
(
o
)
ref1
=
weakref
.
ref
(
o
)
ref2
=
weakref
.
ref
(
o
)
ref2
=
weakref
.
ref
(
o
)
self
.
assert
True
(
ref1
is
ref2
,
self
.
assert
Is
(
ref1
,
ref2
,
"reference object w/out callback should be re-used"
)
"reference object w/out callback should be re-used"
)
self
.
assert
True
(
weakref
.
getweakrefcount
(
o
)
==
2
,
self
.
assert
Equal
(
weakref
.
getweakrefcount
(
o
),
2
,
"wrong weak ref count for object"
)
"wrong weak ref count for object"
)
del
proxy
del
proxy
self
.
assert
True
(
weakref
.
getweakrefcount
(
o
)
==
1
,
self
.
assert
Equal
(
weakref
.
getweakrefcount
(
o
),
1
,
"wrong weak ref count for object after deleting proxy"
)
"wrong weak ref count for object after deleting proxy"
)
def
test_proxy_reuse
(
self
):
def
test_proxy_reuse
(
self
):
...
@@ -174,7 +172,7 @@ class ReferencesTestCase(TestBase):
...
@@ -174,7 +172,7 @@ class ReferencesTestCase(TestBase):
proxy1
=
weakref
.
proxy
(
o
)
proxy1
=
weakref
.
proxy
(
o
)
ref
=
weakref
.
ref
(
o
)
ref
=
weakref
.
ref
(
o
)
proxy2
=
weakref
.
proxy
(
o
)
proxy2
=
weakref
.
proxy
(
o
)
self
.
assert
True
(
proxy1
is
proxy2
,
self
.
assert
Is
(
proxy1
,
proxy2
,
"proxy object w/out callback should have been re-used"
)
"proxy object w/out callback should have been re-used"
)
def
test_basic_proxy
(
self
):
def
test_basic_proxy
(
self
):
...
@@ -254,19 +252,19 @@ class ReferencesTestCase(TestBase):
...
@@ -254,19 +252,19 @@ class ReferencesTestCase(TestBase):
o
=
Object
(
1
)
o
=
Object
(
1
)
p1
=
makeref
(
o
,
None
)
p1
=
makeref
(
o
,
None
)
p2
=
makeref
(
o
,
None
)
p2
=
makeref
(
o
,
None
)
self
.
assert
True
(
p1
is
p2
,
"both callbacks were None in the C API"
)
self
.
assert
Is
(
p1
,
p2
,
"both callbacks were None in the C API"
)
del
p1
,
p2
del
p1
,
p2
p1
=
makeref
(
o
)
p1
=
makeref
(
o
)
p2
=
makeref
(
o
,
None
)
p2
=
makeref
(
o
,
None
)
self
.
assert
True
(
p1
is
p2
,
"callbacks were NULL, None in the C API"
)
self
.
assert
Is
(
p1
,
p2
,
"callbacks were NULL, None in the C API"
)
del
p1
,
p2
del
p1
,
p2
p1
=
makeref
(
o
)
p1
=
makeref
(
o
)
p2
=
makeref
(
o
)
p2
=
makeref
(
o
)
self
.
assert
True
(
p1
is
p2
,
"both callbacks were NULL in the C API"
)
self
.
assert
Is
(
p1
,
p2
,
"both callbacks were NULL in the C API"
)
del
p1
,
p2
del
p1
,
p2
p1
=
makeref
(
o
,
None
)
p1
=
makeref
(
o
,
None
)
p2
=
makeref
(
o
)
p2
=
makeref
(
o
)
self
.
assert
True
(
p1
is
p2
,
"callbacks were None, NULL in the C API"
)
self
.
assert
Is
(
p1
,
p2
,
"callbacks were None, NULL in the C API"
)
def
test_callable_proxy
(
self
):
def
test_callable_proxy
(
self
):
o
=
Callable
()
o
=
Callable
()
...
@@ -274,13 +272,13 @@ class ReferencesTestCase(TestBase):
...
@@ -274,13 +272,13 @@ class ReferencesTestCase(TestBase):
self
.
check_proxy
(
o
,
ref1
)
self
.
check_proxy
(
o
,
ref1
)
self
.
assert
True
(
type
(
ref1
)
is
weakref
.
CallableProxyType
,
self
.
assert
Is
(
type
(
ref1
),
weakref
.
CallableProxyType
,
"proxy is not of callable type"
)
"proxy is not of callable type"
)
ref1
(
'twinkies!'
)
ref1
(
'twinkies!'
)
self
.
assert
True
(
o
.
bar
==
'twinkies!'
,
self
.
assert
Equal
(
o
.
bar
,
'twinkies!'
,
"call through proxy not passed through to original"
)
"call through proxy not passed through to original"
)
ref1
(
x
=
'Splat.'
)
ref1
(
x
=
'Splat.'
)
self
.
assert
True
(
o
.
bar
==
'Splat.'
,
self
.
assert
Equal
(
o
.
bar
,
'Splat.'
,
"call through proxy not passed through to original"
)
"call through proxy not passed through to original"
)
# expect due to too few args
# expect due to too few args
...
@@ -291,24 +289,23 @@ class ReferencesTestCase(TestBase):
...
@@ -291,24 +289,23 @@ class ReferencesTestCase(TestBase):
def
check_proxy
(
self
,
o
,
proxy
):
def
check_proxy
(
self
,
o
,
proxy
):
o
.
foo
=
1
o
.
foo
=
1
self
.
assert
True
(
proxy
.
foo
==
1
,
self
.
assert
Equal
(
proxy
.
foo
,
1
,
"proxy does not reflect attribute addition"
)
"proxy does not reflect attribute addition"
)
o
.
foo
=
2
o
.
foo
=
2
self
.
assert
True
(
proxy
.
foo
==
2
,
self
.
assert
Equal
(
proxy
.
foo
,
2
,
"proxy does not reflect attribute modification"
)
"proxy does not reflect attribute modification"
)
del
o
.
foo
del
o
.
foo
self
.
assert
True
(
not
hasattr
(
proxy
,
'foo'
),
self
.
assert
False
(
hasattr
(
proxy
,
'foo'
),
"proxy does not reflect attribute removal"
)
"proxy does not reflect attribute removal"
)
proxy
.
foo
=
1
proxy
.
foo
=
1
self
.
assert
True
(
o
.
foo
==
1
,
self
.
assert
Equal
(
o
.
foo
,
1
,
"object does not reflect attribute addition via proxy"
)
"object does not reflect attribute addition via proxy"
)
proxy
.
foo
=
2
proxy
.
foo
=
2
self
.
assertTrue
(
self
.
assertEqual
(
o
.
foo
,
2
,
o
.
foo
==
2
,
"object does not reflect attribute modification via proxy"
)
"object does not reflect attribute modification via proxy"
)
del
proxy
.
foo
del
proxy
.
foo
self
.
assert
True
(
not
hasattr
(
o
,
'foo'
),
self
.
assert
False
(
hasattr
(
o
,
'foo'
),
"object does not reflect attribute removal via proxy"
)
"object does not reflect attribute removal via proxy"
)
def
test_proxy_deletion
(
self
):
def
test_proxy_deletion
(
self
):
...
@@ -332,21 +329,21 @@ class ReferencesTestCase(TestBase):
...
@@ -332,21 +329,21 @@ class ReferencesTestCase(TestBase):
o
=
C
()
o
=
C
()
ref1
=
weakref
.
ref
(
o
)
ref1
=
weakref
.
ref
(
o
)
ref2
=
weakref
.
ref
(
o
,
self
.
callback
)
ref2
=
weakref
.
ref
(
o
,
self
.
callback
)
self
.
assert
True
(
weakref
.
getweakrefcount
(
o
)
==
2
,
self
.
assert
Equal
(
weakref
.
getweakrefcount
(
o
),
2
,
"got wrong number of weak reference objects"
)
"got wrong number of weak reference objects"
)
proxy1
=
weakref
.
proxy
(
o
)
proxy1
=
weakref
.
proxy
(
o
)
proxy2
=
weakref
.
proxy
(
o
,
self
.
callback
)
proxy2
=
weakref
.
proxy
(
o
,
self
.
callback
)
self
.
assert
True
(
weakref
.
getweakrefcount
(
o
)
==
4
,
self
.
assert
Equal
(
weakref
.
getweakrefcount
(
o
),
4
,
"got wrong number of weak reference objects"
)
"got wrong number of weak reference objects"
)
del
ref1
,
ref2
,
proxy1
,
proxy2
del
ref1
,
ref2
,
proxy1
,
proxy2
self
.
assert
True
(
weakref
.
getweakrefcount
(
o
)
==
0
,
self
.
assert
Equal
(
weakref
.
getweakrefcount
(
o
),
0
,
"weak reference objects not unlinked from"
"weak reference objects not unlinked from"
" referent when discarded."
)
" referent when discarded."
)
# assumes ints do not support weakrefs
# assumes ints do not support weakrefs
self
.
assert
True
(
weakref
.
getweakrefcount
(
1
)
==
0
,
self
.
assert
Equal
(
weakref
.
getweakrefcount
(
1
),
0
,
"got wrong number of weak reference objects for int"
)
"got wrong number of weak reference objects for int"
)
def
test_getweakrefs
(
self
):
def
test_getweakrefs
(
self
):
...
@@ -354,22 +351,22 @@ class ReferencesTestCase(TestBase):
...
@@ -354,22 +351,22 @@ class ReferencesTestCase(TestBase):
ref1
=
weakref
.
ref
(
o
,
self
.
callback
)
ref1
=
weakref
.
ref
(
o
,
self
.
callback
)
ref2
=
weakref
.
ref
(
o
,
self
.
callback
)
ref2
=
weakref
.
ref
(
o
,
self
.
callback
)
del
ref1
del
ref1
self
.
assert
True
(
weakref
.
getweakrefs
(
o
)
==
[
ref2
],
self
.
assert
Equal
(
weakref
.
getweakrefs
(
o
),
[
ref2
],
"list of refs does not match"
)
"list of refs does not match"
)
o
=
C
()
o
=
C
()
ref1
=
weakref
.
ref
(
o
,
self
.
callback
)
ref1
=
weakref
.
ref
(
o
,
self
.
callback
)
ref2
=
weakref
.
ref
(
o
,
self
.
callback
)
ref2
=
weakref
.
ref
(
o
,
self
.
callback
)
del
ref2
del
ref2
self
.
assert
True
(
weakref
.
getweakrefs
(
o
)
==
[
ref1
],
self
.
assert
Equal
(
weakref
.
getweakrefs
(
o
),
[
ref1
],
"list of refs does not match"
)
"list of refs does not match"
)
del
ref1
del
ref1
self
.
assert
True
(
weakref
.
getweakrefs
(
o
)
==
[],
self
.
assert
Equal
(
weakref
.
getweakrefs
(
o
),
[],
"list of refs not cleared"
)
"list of refs not cleared"
)
# assumes ints do not support weakrefs
# assumes ints do not support weakrefs
self
.
assert
True
(
weakref
.
getweakrefs
(
1
)
==
[],
self
.
assert
Equal
(
weakref
.
getweakrefs
(
1
),
[],
"list of refs does not match for int"
)
"list of refs does not match for int"
)
def
test_newstyle_number_ops
(
self
):
def
test_newstyle_number_ops
(
self
):
...
@@ -377,8 +374,8 @@ class ReferencesTestCase(TestBase):
...
@@ -377,8 +374,8 @@ class ReferencesTestCase(TestBase):
pass
pass
f
=
F
(
2.0
)
f
=
F
(
2.0
)
p
=
weakref
.
proxy
(
f
)
p
=
weakref
.
proxy
(
f
)
self
.
assert
True
(
p
+
1.0
==
3.0
)
self
.
assert
Equal
(
p
+
1.0
,
3.0
)
self
.
assert
True
(
1.0
+
p
==
3.0
)
# this used to SEGV
self
.
assert
Equal
(
1.0
+
p
,
3.0
)
# this used to SEGV
def
test_callbacks_protected
(
self
):
def
test_callbacks_protected
(
self
):
# Callbacks protected from already-set exceptions?
# Callbacks protected from already-set exceptions?
...
@@ -631,7 +628,7 @@ class ReferencesTestCase(TestBase):
...
@@ -631,7 +628,7 @@ class ReferencesTestCase(TestBase):
c
.
wr
=
weakref
.
ref
(
d
,
callback
)
# this won't trigger
c
.
wr
=
weakref
.
ref
(
d
,
callback
)
# this won't trigger
d
.
wr
=
weakref
.
ref
(
callback
,
d
.
cb
)
# ditto
d
.
wr
=
weakref
.
ref
(
callback
,
d
.
cb
)
# ditto
external_wr
=
weakref
.
ref
(
callback
,
safe_callback
)
# but this will
external_wr
=
weakref
.
ref
(
callback
,
safe_callback
)
# but this will
self
.
assert
True
(
external_wr
()
is
callback
)
self
.
assert
Is
(
external_wr
(),
callback
)
# The weakrefs attached to c and d should get cleared, so that
# The weakrefs attached to c and d should get cleared, so that
# C.cb is never called. But external_wr isn't part of the cyclic
# C.cb is never called. But external_wr isn't part of the cyclic
...
@@ -810,11 +807,11 @@ class SubclassableWeakrefTestCase(TestBase):
...
@@ -810,11 +807,11 @@ class SubclassableWeakrefTestCase(TestBase):
return
super
().
__call__
()
return
super
().
__call__
()
o
=
Object
(
"foo"
)
o
=
Object
(
"foo"
)
mr
=
MyRef
(
o
,
value
=
24
)
mr
=
MyRef
(
o
,
value
=
24
)
self
.
assert
True
(
mr
()
is
o
)
self
.
assert
Is
(
mr
(),
o
)
self
.
assertTrue
(
mr
.
called
)
self
.
assertTrue
(
mr
.
called
)
self
.
assertEqual
(
mr
.
value
,
24
)
self
.
assertEqual
(
mr
.
value
,
24
)
del
o
del
o
self
.
assert
True
(
mr
()
is
None
)
self
.
assert
IsNone
(
mr
()
)
self
.
assertTrue
(
mr
.
called
)
self
.
assertTrue
(
mr
.
called
)
def
test_subclass_refs_dont_replace_standard_refs
(
self
):
def
test_subclass_refs_dont_replace_standard_refs
(
self
):
...
@@ -823,14 +820,14 @@ class SubclassableWeakrefTestCase(TestBase):
...
@@ -823,14 +820,14 @@ class SubclassableWeakrefTestCase(TestBase):
o
=
Object
(
42
)
o
=
Object
(
42
)
r1
=
MyRef
(
o
)
r1
=
MyRef
(
o
)
r2
=
weakref
.
ref
(
o
)
r2
=
weakref
.
ref
(
o
)
self
.
assert
True
(
r1
is
not
r2
)
self
.
assert
IsNot
(
r1
,
r2
)
self
.
assertEqual
(
weakref
.
getweakrefs
(
o
),
[
r2
,
r1
])
self
.
assertEqual
(
weakref
.
getweakrefs
(
o
),
[
r2
,
r1
])
self
.
assertEqual
(
weakref
.
getweakrefcount
(
o
),
2
)
self
.
assertEqual
(
weakref
.
getweakrefcount
(
o
),
2
)
r3
=
MyRef
(
o
)
r3
=
MyRef
(
o
)
self
.
assertEqual
(
weakref
.
getweakrefcount
(
o
),
3
)
self
.
assertEqual
(
weakref
.
getweakrefcount
(
o
),
3
)
refs
=
weakref
.
getweakrefs
(
o
)
refs
=
weakref
.
getweakrefs
(
o
)
self
.
assertEqual
(
len
(
refs
),
3
)
self
.
assertEqual
(
len
(
refs
),
3
)
self
.
assert
True
(
r2
is
refs
[
0
])
self
.
assert
Is
(
r2
,
refs
[
0
])
self
.
assertIn
(
r1
,
refs
[
1
:])
self
.
assertIn
(
r1
,
refs
[
1
:])
self
.
assertIn
(
r3
,
refs
[
1
:])
self
.
assertIn
(
r3
,
refs
[
1
:])
...
@@ -840,7 +837,7 @@ class SubclassableWeakrefTestCase(TestBase):
...
@@ -840,7 +837,7 @@ class SubclassableWeakrefTestCase(TestBase):
o
=
Object
(
42
)
o
=
Object
(
42
)
r1
=
MyRef
(
o
,
id
)
r1
=
MyRef
(
o
,
id
)
r2
=
MyRef
(
o
,
str
)
r2
=
MyRef
(
o
,
str
)
self
.
assert
True
(
r1
is
not
r2
)
self
.
assert
IsNot
(
r1
,
r2
)
refs
=
weakref
.
getweakrefs
(
o
)
refs
=
weakref
.
getweakrefs
(
o
)
self
.
assertIn
(
r1
,
refs
)
self
.
assertIn
(
r1
,
refs
)
self
.
assertIn
(
r2
,
refs
)
self
.
assertIn
(
r2
,
refs
)
...
@@ -968,7 +965,7 @@ class MappingTestCase(TestBase):
...
@@ -968,7 +965,7 @@ class MappingTestCase(TestBase):
dict
,
objects
=
self
.
make_weak_valued_dict
()
dict
,
objects
=
self
.
make_weak_valued_dict
()
for
o
in
objects
:
for
o
in
objects
:
self
.
assertEqual
(
weakref
.
getweakrefcount
(
o
),
1
)
self
.
assertEqual
(
weakref
.
getweakrefcount
(
o
),
1
)
self
.
assert
True
(
o
is
dict
[
o
.
arg
],
self
.
assert
Is
(
o
,
dict
[
o
.
arg
],
"wrong object returned by weak dict!"
)
"wrong object returned by weak dict!"
)
items1
=
list
(
dict
.
items
())
items1
=
list
(
dict
.
items
())
items2
=
list
(
dict
.
copy
().
items
())
items2
=
list
(
dict
.
copy
().
items
())
...
@@ -997,9 +994,9 @@ class MappingTestCase(TestBase):
...
@@ -997,9 +994,9 @@ class MappingTestCase(TestBase):
#
#
dict
,
objects
=
self
.
make_weak_keyed_dict
()
dict
,
objects
=
self
.
make_weak_keyed_dict
()
for
o
in
objects
:
for
o
in
objects
:
self
.
assert
True
(
weakref
.
getweakrefcount
(
o
)
==
1
,
self
.
assert
Equal
(
weakref
.
getweakrefcount
(
o
),
1
,
"wrong number of weak references to %r!"
%
o
)
"wrong number of weak references to %r!"
%
o
)
self
.
assert
True
(
o
.
arg
is
dict
[
o
],
self
.
assert
Is
(
o
.
arg
,
dict
[
o
],
"wrong object returned by weak dict!"
)
"wrong object returned by weak dict!"
)
items1
=
dict
.
items
()
items1
=
dict
.
items
()
items2
=
dict
.
copy
().
items
()
items2
=
dict
.
copy
().
items
()
...
@@ -1008,10 +1005,10 @@ class MappingTestCase(TestBase):
...
@@ -1008,10 +1005,10 @@ class MappingTestCase(TestBase):
del
items1
,
items2
del
items1
,
items2
self
.
assertEqual
(
len
(
dict
),
self
.
COUNT
)
self
.
assertEqual
(
len
(
dict
),
self
.
COUNT
)
del
objects
[
0
]
del
objects
[
0
]
self
.
assert
True
(
len
(
dict
)
==
(
self
.
COUNT
-
1
),
self
.
assert
Equal
(
len
(
dict
),
(
self
.
COUNT
-
1
),
"deleting object did not cause dictionary update"
)
"deleting object did not cause dictionary update"
)
del
objects
,
o
del
objects
,
o
self
.
assert
True
(
len
(
dict
)
==
0
,
self
.
assert
Equal
(
len
(
dict
),
0
,
"deleting the keys did not clear the dictionary"
)
"deleting the keys did not clear the dictionary"
)
o
=
Object
(
42
)
o
=
Object
(
42
)
dict
[
o
]
=
"What is the meaning of the universe?"
dict
[
o
]
=
"What is the meaning of the universe?"
...
@@ -1221,15 +1218,15 @@ class MappingTestCase(TestBase):
...
@@ -1221,15 +1218,15 @@ class MappingTestCase(TestBase):
k
,
v
=
weakdict
.
popitem
()
k
,
v
=
weakdict
.
popitem
()
self
.
assertEqual
(
len
(
weakdict
),
1
)
self
.
assertEqual
(
len
(
weakdict
),
1
)
if
k
is
key1
:
if
k
is
key1
:
self
.
assert
True
(
v
is
value1
)
self
.
assert
Is
(
v
,
value1
)
else
:
else
:
self
.
assert
True
(
v
is
value2
)
self
.
assert
Is
(
v
,
value2
)
k
,
v
=
weakdict
.
popitem
()
k
,
v
=
weakdict
.
popitem
()
self
.
assertEqual
(
len
(
weakdict
),
0
)
self
.
assertEqual
(
len
(
weakdict
),
0
)
if
k
is
key1
:
if
k
is
key1
:
self
.
assert
True
(
v
is
value1
)
self
.
assert
Is
(
v
,
value1
)
else
:
else
:
self
.
assert
True
(
v
is
value2
)
self
.
assert
Is
(
v
,
value2
)
def
test_weak_valued_dict_popitem
(
self
):
def
test_weak_valued_dict_popitem
(
self
):
self
.
check_popitem
(
weakref
.
WeakValueDictionary
,
self
.
check_popitem
(
weakref
.
WeakValueDictionary
,
...
@@ -1240,21 +1237,21 @@ class MappingTestCase(TestBase):
...
@@ -1240,21 +1237,21 @@ class MappingTestCase(TestBase):
C
(),
"value 1"
,
C
(),
"value 2"
)
C
(),
"value 1"
,
C
(),
"value 2"
)
def
check_setdefault
(
self
,
klass
,
key
,
value1
,
value2
):
def
check_setdefault
(
self
,
klass
,
key
,
value1
,
value2
):
self
.
assert
True
(
value1
is
not
value2
,
self
.
assert
IsNot
(
value1
,
value2
,
"invalid test"
"invalid test"
" -- value parameters must be distinct objects"
)
" -- value parameters must be distinct objects"
)
weakdict
=
klass
()
weakdict
=
klass
()
o
=
weakdict
.
setdefault
(
key
,
value1
)
o
=
weakdict
.
setdefault
(
key
,
value1
)
self
.
assert
True
(
o
is
value1
)
self
.
assert
Is
(
o
,
value1
)
self
.
assertIn
(
key
,
weakdict
)
self
.
assertIn
(
key
,
weakdict
)
self
.
assert
True
(
weakdict
.
get
(
key
)
is
value1
)
self
.
assert
Is
(
weakdict
.
get
(
key
),
value1
)
self
.
assert
True
(
weakdict
[
key
]
is
value1
)
self
.
assert
Is
(
weakdict
[
key
],
value1
)
o
=
weakdict
.
setdefault
(
key
,
value2
)
o
=
weakdict
.
setdefault
(
key
,
value2
)
self
.
assert
True
(
o
is
value1
)
self
.
assert
Is
(
o
,
value1
)
self
.
assertIn
(
key
,
weakdict
)
self
.
assertIn
(
key
,
weakdict
)
self
.
assert
True
(
weakdict
.
get
(
key
)
is
value1
)
self
.
assert
Is
(
weakdict
.
get
(
key
),
value1
)
self
.
assert
True
(
weakdict
[
key
]
is
value1
)
self
.
assert
Is
(
weakdict
[
key
],
value1
)
def
test_weak_valued_dict_setdefault
(
self
):
def
test_weak_valued_dict_setdefault
(
self
):
self
.
check_setdefault
(
weakref
.
WeakValueDictionary
,
self
.
check_setdefault
(
weakref
.
WeakValueDictionary
,
...
@@ -1275,13 +1272,13 @@ class MappingTestCase(TestBase):
...
@@ -1275,13 +1272,13 @@ class MappingTestCase(TestBase):
for
k
in
weakdict
.
keys
():
for
k
in
weakdict
.
keys
():
self
.
assertIn
(
k
,
dict
,
"mysterious new key appeared in weak dict"
)
self
.
assertIn
(
k
,
dict
,
"mysterious new key appeared in weak dict"
)
v
=
dict
.
get
(
k
)
v
=
dict
.
get
(
k
)
self
.
assert
True
(
v
is
weakdict
[
k
])
self
.
assert
Is
(
v
,
weakdict
[
k
])
self
.
assert
True
(
v
is
weakdict
.
get
(
k
))
self
.
assert
Is
(
v
,
weakdict
.
get
(
k
))
for
k
in
dict
.
keys
():
for
k
in
dict
.
keys
():
self
.
assertIn
(
k
,
weakdict
,
"original key disappeared in weak dict"
)
self
.
assertIn
(
k
,
weakdict
,
"original key disappeared in weak dict"
)
v
=
dict
[
k
]
v
=
dict
[
k
]
self
.
assert
True
(
v
is
weakdict
[
k
])
self
.
assert
Is
(
v
,
weakdict
[
k
])
self
.
assert
True
(
v
is
weakdict
.
get
(
k
))
self
.
assert
Is
(
v
,
weakdict
.
get
(
k
))
def
test_weak_valued_dict_update
(
self
):
def
test_weak_valued_dict_update
(
self
):
self
.
check_update
(
weakref
.
WeakValueDictionary
,
self
.
check_update
(
weakref
.
WeakValueDictionary
,
...
@@ -1311,7 +1308,7 @@ class MappingTestCase(TestBase):
...
@@ -1311,7 +1308,7 @@ class MappingTestCase(TestBase):
self
.
assertEqual
(
len
(
d
),
2
)
self
.
assertEqual
(
len
(
d
),
2
)
del
d
[
'something'
]
del
d
[
'something'
]
self
.
assertEqual
(
len
(
d
),
1
)
self
.
assertEqual
(
len
(
d
),
1
)
self
.
assert
True
(
list
(
d
.
items
())
==
[(
'something else'
,
o2
)])
self
.
assert
Equal
(
list
(
d
.
items
()),
[(
'something else'
,
o2
)])
def
test_weak_keyed_bad_delitem
(
self
):
def
test_weak_keyed_bad_delitem
(
self
):
d
=
weakref
.
WeakKeyDictionary
()
d
=
weakref
.
WeakKeyDictionary
()
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment