Kaydet (Commit) 9d4fe429 authored tarafından Guido van Rossum's avatar Guido van Rossum

dynamics(): add tests for dynamic *instances* (which are currently

broken).  Also fix an invalid reference to C (should be S).
üst 08a64039
...@@ -550,7 +550,7 @@ def dynamics(): ...@@ -550,7 +550,7 @@ def dynamics():
verify(S1.__dynamic__ == 0) verify(S1.__dynamic__ == 0)
class S(object): class S(object):
pass pass
verify(C.__dynamic__ == 0) verify(S.__dynamic__ == 0)
class D(object): class D(object):
__dynamic__ = 1 __dynamic__ = 1
verify(D.__dynamic__ == 1) verify(D.__dynamic__ == 1)
...@@ -581,6 +581,25 @@ def dynamics(): ...@@ -581,6 +581,25 @@ def dynamics():
pass pass
else: else:
verify(0, "assignment to SS.foo should be illegal") verify(0, "assignment to SS.foo should be illegal")
# Test dynamic instances
class C(object):
__dynamic__ = 1
foobar = 1
def __repr__(self):
return "<C object>"
a = C()
verify(not hasattr(a, "spam"))
verify(a.foobar == 1)
C.foobar = 2
verify(a.foobar == 2)
C.method = lambda self: 42
verify(a.method() == 42)
verify(repr(a) == "<C object>")
C.__repr__ = lambda self: "C()"
verify(repr(a) == "C()")
# The following test should succeed, but doesn't yet
## C.__int__ = lambda self: 100
## verify(int(a) == 100)
def errors(): def errors():
if verbose: print "Testing errors..." if verbose: print "Testing errors..."
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment