[pypy-svn] rev 944 - in pypy/trunk/src/pypy/objspace/std: . test

mwh at codespeak.net mwh at codespeak.net
Sun Jun 22 14:44:59 CEST 2003


Author: mwh
Date: Sun Jun 22 14:44:59 2003
New Revision: 944

Modified:
   pypy/trunk/src/pypy/objspace/std/test/test_userobject.py
   pypy/trunk/src/pypy/objspace/std/usertype.py
Log:
support attribute assignment on user defined classes


Modified: pypy/trunk/src/pypy/objspace/std/test/test_userobject.py
==============================================================================
--- pypy/trunk/src/pypy/objspace/std/test/test_userobject.py	(original)
+++ pypy/trunk/src/pypy/objspace/std/test/test_userobject.py	Sun Jun 22 14:44:59 2003
@@ -1,52 +1,59 @@
-import autopath
-from pypy.tool import test
-
-class TestUserObject(test.AppTestCase):
-
-    def test_emptyclass(self):
-        class empty: pass
-        inst = empty()
-        self.failUnless(isinstance(inst, empty))
-        inst.attr=23
-        self.assertEquals(inst.attr,23)
-
-    def test_subclassing(self):
-        for base in tuple, list, dict, str, int, float:
-            try:
-                class subclass(base): pass
-                stuff = subclass()
-            except:
-                print 'not subclassable:', base
-            else:
-                self.failUnless(isinstance(stuff, base))
-
-    def test_subclasstuple(self):
-        class subclass(tuple): pass
-        stuff = subclass()
-        self.failUnless(isinstance(stuff, tuple))
-        stuff.attr = 23
-        self.assertEquals(stuff.attr,23)
-        self.assertEquals(len(stuff),0)
-        result = stuff + (1,2,3)
-        self.assertEquals(len(result),3)
-
-    def test_subsubclass(self):
-        class base:
-            baseattr = 12
-        class derived(base):
-            derivedattr = 34
-        inst = derived()
-        self.failUnless(isinstance(inst, base))
-        self.assertEquals(inst.baseattr,12)
-        self.assertEquals(inst.derivedattr,34)
-
-    def test_descr_get(self):
-        class C:
-            class desc:
-                def __get__(self, ob, cls=None):
-                    return 42
-            prop = desc()
-        self.assertEquals(C().prop, 42)
-
-if __name__ == '__main__':
-    test.main()
+import autopath
+from pypy.tool import test
+
+class TestUserObject(test.AppTestCase):
+
+    def test_emptyclass(self):
+        class empty: pass
+        inst = empty()
+        self.failUnless(isinstance(inst, empty))
+        inst.attr=23
+        self.assertEquals(inst.attr,23)
+
+    def test_subclassing(self):
+        for base in tuple, list, dict, str, int, float:
+            try:
+                class subclass(base): pass
+                stuff = subclass()
+            except:
+                print 'not subclassable:', base
+            else:
+                self.failUnless(isinstance(stuff, base))
+
+    def test_subclasstuple(self):
+        class subclass(tuple): pass
+        stuff = subclass()
+        self.failUnless(isinstance(stuff, tuple))
+        stuff.attr = 23
+        self.assertEquals(stuff.attr,23)
+        self.assertEquals(len(stuff),0)
+        result = stuff + (1,2,3)
+        self.assertEquals(len(result),3)
+
+    def test_subsubclass(self):
+        class base:
+            baseattr = 12
+        class derived(base):
+            derivedattr = 34
+        inst = derived()
+        self.failUnless(isinstance(inst, base))
+        self.assertEquals(inst.baseattr,12)
+        self.assertEquals(inst.derivedattr,34)
+
+    def test_descr_get(self):
+        class C:
+            class desc:
+                def __get__(self, ob, cls=None):
+                    return 42
+            prop = desc()
+        self.assertEquals(C().prop, 42)
+
+    def test_class_setattr(self):
+        class C:
+            pass
+        C.a = 1
+        self.assert_(hasattr(C, 'a'))
+        self.assertEquals(C.a, 1)
+
+if __name__ == '__main__':
+    test.main()

Modified: pypy/trunk/src/pypy/objspace/std/usertype.py
==============================================================================
--- pypy/trunk/src/pypy/objspace/std/usertype.py	(original)
+++ pypy/trunk/src/pypy/objspace/std/usertype.py	Sun Jun 22 14:44:59 2003
@@ -63,6 +63,9 @@
         space.call(init, w_args, w_kwds)
     return newobj
 
+def getdict__UserType(space, w_usertype):
+    return w_usertype.w_dict
+
 def repr__UserType(space, w_usertype):
     return space.wrap("<class '%s'>" % w_usertype.typename)
     


More information about the Pypy-commit mailing list