[pypy-svn] r28387 - pypy/dist/pypy/rpython/test

antocuni at codespeak.net antocuni at codespeak.net
Tue Jun 6 16:15:14 CEST 2006


Author: antocuni
Date: Tue Jun  6 16:15:13 2006
New Revision: 28387

Modified:
   pypy/dist/pypy/rpython/test/test_rclass.py
Log:
More and more ootypesystem tests.



Modified: pypy/dist/pypy/rpython/test/test_rclass.py
==============================================================================
--- pypy/dist/pypy/rpython/test/test_rclass.py	(original)
+++ pypy/dist/pypy/rpython/test/test_rclass.py	Tue Jun  6 16:15:13 2006
@@ -3,9 +3,9 @@
 from pypy.translator.translator import TranslationContext, graphof
 from pypy.rpython.lltypesystem.lltype import *
 from pypy.rpython.ootypesystem import ootype
-from pypy.rpython.test.test_llinterp import interpret, interpret_raises
+#from pypy.rpython.test.test_llinterp import interpret, interpret_raises
 from pypy.rpython.rarithmetic import intmask
-
+from pypy.rpython.test.tool import BaseRtypingTest, LLRtypeMixin, OORtypeMixin
 
 class EmptyBase(object):
     pass
@@ -29,7 +29,7 @@
 class C(B):
     pass
 
-class BaseTestRclass:
+class BaseTestRclass(BaseRtypingTest):
 
     def test_instanceattr(self):
         def dummyfn():
@@ -37,16 +37,16 @@
             x.a = 5
             x.a += 1
             return x.a
-        res = interpret(dummyfn, [], type_system=self.ts)
+        res = self.interpret(dummyfn, [])
         assert res == 6
 
     def test_simple(self):
         def dummyfn():
             x = EmptyBase()
             return x
-        res = interpret(dummyfn, [], type_system=self.ts)
+        res = self.interpret(dummyfn, [])
         T = typeOf(res)
-        if self.ts == "lltype":
+        if self.type_system == "lltype":
             assert isinstance(T, Ptr) and isinstance(T.TO, GcStruct)
         else:
             assert isinstance(T, ootype.Instance)
@@ -56,7 +56,7 @@
         def dummyfn():
             x = Random()
             return x.xyzzy
-        res = interpret(dummyfn, [], type_system=self.ts)
+        res = self.interpret(dummyfn, [])
         assert res == 12
 
     def test_classattr_both(self):
@@ -74,9 +74,9 @@
             C = pick(i)
             i = C()
             return C.a + i.a
-        res = interpret(dummyfn, [0], type_system=self.ts)
+        res = self.interpret(dummyfn, [0])
         assert res == 2
-        res = interpret(dummyfn, [1], type_system=self.ts)
+        res = self.interpret(dummyfn, [1])
         assert res == 4
 
     def test_classattr_both2(self):
@@ -96,9 +96,9 @@
             C = pick(i)
             i = C()
             return C.a + i.a
-        res = interpret(dummyfn, [0], type_system=self.ts)
+        res = self.interpret(dummyfn, [0])
         assert res == 2
-        res = interpret(dummyfn, [1], type_system=self.ts)
+        res = self.interpret(dummyfn, [1])
         assert res == 4
 
     def test_runtime_exception(self):
@@ -110,15 +110,15 @@
         def f(flag):
             ex = pick(flag)
             raise ex()
-        interpret_raises(TypeError, f, [True], type_system=self.ts)
-        interpret_raises(ValueError, f, [False], type_system=self.ts)
+        self.interpret_raises(TypeError, f, [True])
+        self.interpret_raises(ValueError, f, [False])
 
     def test_classattr_as_defaults(self):
         def dummyfn():
             x = Random()
             x.xyzzy += 1
             return x.xyzzy
-        res = interpret(dummyfn, [], type_system=self.ts)
+        res = self.interpret(dummyfn, [])
         assert res == 13
 
     def test_prebuilt_instance(self):
@@ -127,7 +127,7 @@
         def dummyfn():
             a.x += 1
             return a.x
-        interpret(dummyfn, [], type_system=self.ts)
+        self.interpret(dummyfn, [])
 
     def test_recursive_prebuilt_instance(self):
         a = EmptyBase()
@@ -138,7 +138,7 @@
         b.peer = a
         def dummyfn():
             return a.peer.peer.peer.x
-        res = interpret(dummyfn, [], type_system=self.ts)
+        res = self.interpret(dummyfn, [])
         assert res == 6
 
     def test_prebuilt_instances_with_void(self):
@@ -148,7 +148,7 @@
         a.nothing_special = marker
         def dummyfn():
             return a.nothing_special()
-        res = interpret(dummyfn, [], type_system=self.ts)
+        res = self.interpret(dummyfn, [])
         assert res == 42
 
     def test_simple_method_call(self):
@@ -158,9 +158,9 @@
             else:
                 a = B()
             return a.f()
-        res = interpret(f, [True], type_system=self.ts)
+        res = self.interpret(f, [True])
         assert res == 42
-        res = interpret(f, [False], type_system=self.ts)
+        res = self.interpret(f, [False])
         assert res == 1
 
     def test_isinstance(self):
@@ -175,14 +175,14 @@
                 o = C()
             return 100*isinstance(o, A)+10*isinstance(o, B)+1*isinstance(o ,C)
 
-        res = interpret(f, [1], type_system=self.ts)
+        res = self.interpret(f, [1])
         assert res == 100
-        res = interpret(f, [2], type_system=self.ts)
+        res = self.interpret(f, [2])
         assert res == 110
-        res = interpret(f, [3], type_system=self.ts)
+        res = self.interpret(f, [3])
         assert res == 111
 
-        res = interpret(f, [0], type_system=self.ts)
+        res = self.interpret(f, [0])
         assert res == 0
 
     def test_method_used_in_subclasses_only(self):
@@ -194,7 +194,7 @@
         def f():
             x = B()
             return x.meth()
-        res = interpret(f, [], type_system=self.ts)
+        res = self.interpret(f, [])
         assert res == 123
 
     def test_method_both_A_and_B(self):
@@ -207,7 +207,7 @@
             a = A()
             b = B()
             return a.meth() + b.meth()
-        res = interpret(f, [], type_system=self.ts)
+        res = self.interpret(f, [])
         assert res == 246
 
     def test_issubclass_type(self):
@@ -223,8 +223,8 @@
             else: 
                 c1 = B()
             return issubclass(type(c1), B)
-        assert interpret(f, [0], type_system=self.ts) == False 
-        assert interpret(f, [1], type_system=self.ts) == True
+        assert self.interpret(f, [0]) == False 
+        assert self.interpret(f, [1]) == True
 
         def g(i):
             if i == 0: 
@@ -232,8 +232,8 @@
             else: 
                 c1 = B()
             return issubclass(type(c1), A)
-        assert interpret(g, [0], type_system=self.ts) == True
-        assert interpret(g, [1], type_system=self.ts) == True
+        assert self.interpret(g, [0]) == True
+        assert self.interpret(g, [1]) == True
 
     def test_staticmethod(self):
         class A(object):
@@ -241,7 +241,7 @@
         def f():
             a = A()
             return a.f(6, 7)
-        res = interpret(f, [], type_system=self.ts)
+        res = self.interpret(f, [])
         assert res == 42
 
     def test_is(self):
@@ -264,13 +264,13 @@
                     0x0008*(a is e) | 0x0010*(b is c) | 0x0020*(b is d) |
                     0x0040*(b is e) | 0x0080*(c is d) | 0x0100*(c is e) |
                     0x0200*(d is e))
-        res = interpret(f, [0], type_system=self.ts)
+        res = self.interpret(f, [0])
         assert res == 0x0004
-        res = interpret(f, [1], type_system=self.ts)
+        res = self.interpret(f, [1])
         assert res == 0x0020
-        res = interpret(f, [2], type_system=self.ts)
+        res = self.interpret(f, [2])
         assert res == 0x0100
-        res = interpret(f, [3], type_system=self.ts)
+        res = self.interpret(f, [3])
         assert res == 0x0200
 
     def test_eq(self):
@@ -293,13 +293,13 @@
                     0x0008*(a == e) | 0x0010*(b == c) | 0x0020*(b == d) |
                     0x0040*(b == e) | 0x0080*(c == d) | 0x0100*(c == e) |
                     0x0200*(d == e))
-        res = interpret(f, [0], type_system=self.ts)
+        res = self.interpret(f, [0])
         assert res == 0x0004
-        res = interpret(f, [1], type_system=self.ts)
+        res = self.interpret(f, [1])
         assert res == 0x0020
-        res = interpret(f, [2], type_system=self.ts)
+        res = self.interpret(f, [2])
         assert res == 0x0100
-        res = interpret(f, [3])
+        res = self.interpret(f, [3])
         assert res == 0x0200
 
     def test_istrue(self):
@@ -314,9 +314,9 @@
                 return 1
             else:
                 return 2
-        res = interpret(f, [0], type_system=self.ts)
+        res = self.interpret(f, [0])
         assert res == 1
-        res = interpret(f, [1], type_system=self.ts)
+        res = self.interpret(f, [1])
         assert res == 2
 
     def test_ne(self):
@@ -339,13 +339,13 @@
                     0x0008*(a != e) | 0x0010*(b != c) | 0x0020*(b != d) |
                     0x0040*(b != e) | 0x0080*(c != d) | 0x0100*(c != e) |
                     0x0200*(d != e))
-        res = interpret(f, [0], type_system=self.ts)
+        res = self.interpret(f, [0])
         assert res == ~0x0004 & 0x3ff
-        res = interpret(f, [1], type_system=self.ts)
+        res = self.interpret(f, [1])
         assert res == ~0x0020 & 0x3ff
-        res = interpret(f, [2], type_system=self.ts)
+        res = self.interpret(f, [2])
         assert res == ~0x0100 & 0x3ff
-        res = interpret(f, [3], type_system=self.ts)
+        res = self.interpret(f, [3])
         assert res == ~0x0200 & 0x3ff
 
     def test_hash_preservation(self):
@@ -361,7 +361,7 @@
             x = (hash(d2) & sys.maxint) == (id(d2) & sys.maxint)
             return x, hash(c)+hash(d)
 
-        res = interpret(f, [], type_system=self.ts)
+        res = self.interpret(f, [])
 
         assert res.item0 == True
         assert res.item1 == intmask(hash(c)+hash(d))
@@ -381,11 +381,11 @@
             else:
                 a = None
             return g(a) is A    # should type(None) work?  returns None for now
-        res = interpret(f, [1], type_system=self.ts)
+        res = self.interpret(f, [1])
         assert res is True
-        res = interpret(f, [-1], type_system=self.ts)
+        res = self.interpret(f, [-1])
         assert res is False
-        res = interpret(f, [0], type_system=self.ts)
+        res = self.interpret(f, [0])
         assert res is False
 
     def test_void_fnptr(self):
@@ -395,7 +395,7 @@
             e = EmptyBase()
             e.attr = g
             return e.attr()
-        res = interpret(f, [], type_system=self.ts)
+        res = self.interpret(f, [])
         assert res == 42
 
     def test_getattr_on_classes(self):
@@ -418,9 +418,9 @@
             x = C()
             x.value = 12
             return meth(x)   # calls A.meth or C.meth, completely ignores B.meth
-        res = interpret(f, [1], type_system=self.ts)
+        res = self.interpret(f, [1])
         assert res == 54
-        res = interpret(f, [0], type_system=self.ts)
+        res = self.interpret(f, [0])
         assert res == 11
 
     def test_constant_bound_method(self):
@@ -431,7 +431,7 @@
         meth = C().meth
         def f():
             return meth()
-        res = interpret(f, [], type_system=self.ts)
+        res = self.interpret(f, [])
         assert res == 1
 
     def test_mixin(self):
@@ -462,7 +462,7 @@
             v2 = c.m('y')
             return v0, v1, v2
 
-        res = interpret(f, [], type_system=self.ts)
+        res = self.interpret(f, [])
         assert typeOf(res.item0) == Signed
 
     def test___class___attribute(self):
@@ -485,14 +485,12 @@
             cls1, cls2 = f(1)
             return cls1 is A, cls2 is B
 
-        res = interpret(g, [], type_system=self.ts)
+        res = self.interpret(g, [])
         assert res.item0
         assert res.item1
 
 
-class TestLltype(BaseTestRclass):
-
-    ts = "lltype"
+class TestLltype(BaseTestRclass, LLRtypeMixin):
 
     def test__del__(self):
         class A(object):
@@ -558,9 +556,7 @@
         assert destrptra is not None
         assert destrptrb is not None
 
-class TestOotype(BaseTestRclass):
-
-    ts = "ootype"
+class TestOOtype(BaseTestRclass, OORtypeMixin):
 
     def test__del__(self):
         class A(object):
@@ -573,7 +569,7 @@
             return a.a
         t = TranslationContext()
         t.buildannotator().build_types(f, [])
-        t.buildrtyper(type_system=self.ts).specialize()
+        t.buildrtyper(type_system=self.type_system).specialize()
         graph = graphof(t, f)
         TYPE = graph.startblock.operations[0].args[0].value
         _, meth = TYPE._lookup("o__del___variant0")
@@ -605,7 +601,7 @@
         assert res == 42
         t = TranslationContext()
         t.buildannotator().build_types(f, [])
-        t.buildrtyper(type_system=self.ts).specialize()
+        t.buildrtyper(type_system=self.type_system).specialize()
         graph = graphof(t, f)
         TYPEA = graph.startblock.operations[0].args[0].value
         TYPEB = graph.startblock.operations[2].args[0].value



More information about the Pypy-commit mailing list