[pypy-svn] r7604 - in pypy/trunk/src/pypy/annotation: . test

hpk at codespeak.net hpk at codespeak.net
Tue Nov 23 12:43:19 CET 2004


Author: hpk
Date: Tue Nov 23 12:43:18 2004
New Revision: 7604

Added:
   pypy/trunk/src/pypy/annotation/test/test_pairtype.py
Modified:
   pypy/trunk/src/pypy/annotation/pairtype.py
Log:
move tests for pairtypes to its own files 
(and fixed them to run at least with py.test) 


Modified: pypy/trunk/src/pypy/annotation/pairtype.py
==============================================================================
--- pypy/trunk/src/pypy/annotation/pairtype.py	(original)
+++ pypy/trunk/src/pypy/annotation/pairtype.py	Tue Nov 23 12:43:18 2004
@@ -33,98 +33,3 @@
         bases = tuple(bases1 + bases2) or (tuple,)  # 'tuple': ultimate base
         pair = pairtypecache[cls1, cls2] = extendabletype(name, bases, {})
     return pair
-
-
-# ____________________________________________________________
-
-if __name__ == '__main__':
-    from unittest2 import check
-    
-    ### Binary operation example
-    class __extend__(pairtype(int, int)):
-        def add((x, y)):
-            return 'integer: %s+%s' % (x, y)
-        def sub((x, y)):
-            return 'integer: %s-%s' % (x, y)
-
-    class __extend__(pairtype(bool, bool)):
-        def add((x, y)):
-            return 'bool: %s+%s' % (x, y)
-
-    check.equal(pair(3,4).add(), 'integer: 3+4')
-    check.equal(pair(3,4).sub(), 'integer: 3-4')
-    check.equal(pair(3,True).add(), 'integer: 3+True')
-    check.equal(pair(3,True).sub(), 'integer: 3-True')
-    check.equal(pair(False,4).add(), 'integer: False+4')
-    check.equal(pair(False,4).sub(), 'integer: False-4')
-    check.equal(pair(False,True).add(), 'bool: False+True')
-    check.equal(pair(False,True).sub(), 'integer: False-True')
-
-    ### Operation on built-in types
-    class MiniPickler:
-        def __init__(self):
-            self.data = []
-        def emit(self, datum):
-            self.data.append(datum)
-
-    class __extend__(pairtype(MiniPickler, int)):
-        def write((pickler, x)):
-            pickler.emit('I%d' % x)
-
-    class __extend__(pairtype(MiniPickler, str)):
-        def write((pickler, x)):
-            pickler.emit('S%s' % x)
-
-    class __extend__(pairtype(MiniPickler, list)):
-        def write((pickler, x)):
-            for item in x:
-                pair(pickler, item).write()
-            pickler.emit('L%d' % len(x))
-
-    p = MiniPickler()
-    pair(p, [1, 2, ['hello', 3]]).write()
-    check.equal(p.data, ['I1', 'I2', 'Shello', 'I3', 'L2', 'L3'])
-
-    ### Another multimethod example
-    class Block:
-        def __init__(self, exit):
-            self.exit = exit
-    class Jump:
-        pass
-    class Switch:
-        pass
-    
-    class C_Generator:
-        def __init__(self):
-            self.lines = []
-
-    class __extend__(pairtype(C_Generator, Block)):
-        def emit((gen, block), inputvars):
-            gen.lines.append("C code for block")
-            outputvars = inputvars + ['v4', 'v5']
-            pair(gen, block.exit).emit(outputvars)
-
-    class __extend__(pairtype(C_Generator, Jump)):
-        def emit((gen, jump), inputvars):
-            gen.lines.append("goto xyz")
-
-    class __extend__(pairtype(C_Generator, Switch)):
-        def emit((gen, jump), inputvars):
-            gen.lines.append("switch (%s) { ... }" % inputvars[-1])
-
-    g = C_Generator()
-    pair(g, Block(Switch())).emit(['v1', 'v2'])
-    check.equal(g.lines, ["C code for block",
-                          "switch (v5) { ... }"])
-
-    class Lisp_Generator:
-        def __init__(self):
-            self.progn = []
-
-    class __extend__(pairtype(Lisp_Generator, Block)):
-        def emit((gen, block), inputvars):
-            gen.progn.append("(do 'something)")
-
-    g = Lisp_Generator()
-    pair(g, Block(Switch())).emit(['v1', 'v2'])
-    check.equal(g.progn, ["(do 'something)"])

Added: pypy/trunk/src/pypy/annotation/test/test_pairtype.py
==============================================================================
--- (empty file)
+++ pypy/trunk/src/pypy/annotation/test/test_pairtype.py	Tue Nov 23 12:43:18 2004
@@ -0,0 +1,93 @@
+
+from pypy.annotation.pairtype import pairtype, pair
+
+def test_binop(): 
+    ### Binary operation example
+    class __extend__(pairtype(int, int)):
+        def add((x, y)):
+            return 'integer: %s+%s' % (x, y)
+        def sub((x, y)):
+            return 'integer: %s-%s' % (x, y)
+
+    class __extend__(pairtype(bool, bool)):
+        def add((x, y)):
+            return 'bool: %s+%s' % (x, y)
+
+    assert pair(3,4).add() == 'integer: 3+4'
+    assert pair(3,4).sub() == 'integer: 3-4'
+    assert pair(3,True).add() == 'integer: 3+True'
+    assert pair(3,True).sub() == 'integer: 3-True'
+    assert pair(False,4).add() == 'integer: False+4'
+    assert pair(False,4).sub() == 'integer: False-4'
+    assert pair(False,True).add() == 'bool: False+True'
+    assert pair(False,True).sub() == 'integer: False-True'
+
+def test_somebuiltin(): 
+    ### Operation on built-in types
+    class MiniPickler:
+        def __init__(self):
+            self.data = []
+        def emit(self, datum):
+            self.data.append(datum)
+
+    class __extend__(pairtype(MiniPickler, int)):
+        def write((pickler, x)):
+            pickler.emit('I%d' % x)
+
+    class __extend__(pairtype(MiniPickler, str)):
+        def write((pickler, x)):
+            pickler.emit('S%s' % x)
+
+    class __extend__(pairtype(MiniPickler, list)):
+        def write((pickler, x)):
+            for item in x:
+                pair(pickler, item).write()
+            pickler.emit('L%d' % len(x))
+
+    p = MiniPickler()
+    pair(p, [1, 2, ['hello', 3]]).write()
+    assert p.data == ['I1', 'I2', 'Shello', 'I3', 'L2', 'L3']
+
+def test_some_multimethod(): 
+    ### Another multimethod example
+    class Block:
+        def __init__(self, exit):
+            self.exit = exit
+    class Jump:
+        pass
+    class Switch:
+        pass
+    
+    class C_Generator:
+        def __init__(self):
+            self.lines = []
+
+    class __extend__(pairtype(C_Generator, Block)):
+        def emit((gen, block), inputvars):
+            gen.lines.append("C code for block")
+            outputvars = inputvars + ['v4', 'v5']
+            pair(gen, block.exit).emit(outputvars)
+
+    class __extend__(pairtype(C_Generator, Jump)):
+        def emit((gen, jump), inputvars):
+            gen.lines.append("goto xyz")
+
+    class __extend__(pairtype(C_Generator, Switch)):
+        def emit((gen, jump), inputvars):
+            gen.lines.append("switch (%s) { ... }" % inputvars[-1])
+
+    g = C_Generator()
+    pair(g, Block(Switch())).emit(['v1', 'v2'])
+    assert g.lines == ["C code for block", "switch (v5) { ... }"] 
+
+    class Lisp_Generator:
+        def __init__(self):
+            self.progn = []
+
+    class __extend__(pairtype(Lisp_Generator, Block)):
+        def emit((gen, block), inputvars):
+            gen.progn.append("(do 'something)")
+
+    g = Lisp_Generator()
+    pair(g, Block(Switch())).emit(['v1', 'v2'])
+    assert g.progn == ["(do 'something)"]



More information about the Pypy-commit mailing list