[pypy-svn] r24677 - pypy/dist/pypy/objspace/test

auc at codespeak.net auc at codespeak.net
Tue Mar 21 14:52:14 CET 2006


Author: auc
Date: Tue Mar 21 14:52:03 2006
New Revision: 24677

Modified:
   pypy/dist/pypy/objspace/test/test_logicobjspace.py
Log:
updated tests


Modified: pypy/dist/pypy/objspace/test/test_logicobjspace.py
==============================================================================
--- pypy/dist/pypy/objspace/test/test_logicobjspace.py	(original)
+++ pypy/dist/pypy/objspace/test/test_logicobjspace.py	Tue Mar 21 14:52:03 2006
@@ -5,7 +5,7 @@
     def setup_class(cls):
         cls.space = gettestobjspace('logic')
 
-    def test_simple(self):
+    def test_simple_bind(self):
         X = newvar()
         assert is_free(X)
         bind(X, 1)
@@ -14,7 +14,7 @@
         assert is_bound(1)
         raises(TypeError, bind, 1, 2)
 
-    def test_setitem(self):
+    def test_setitem_bind(self):
         x = newvar()
         d = {5: x}
         d[6] = x
@@ -27,7 +27,14 @@
         for x in [d[5], d[6], d[7][0]]:
             assert is_bound(d[5])
 
-    def test_unbound_unification_simple(self):
+    def test_bind_to_self(self):
+        X = newvar()
+        assert is_free(X)
+        bind(X, X)
+        bind(X, 1)
+        assert X == 1
+
+    def test_bind_aliased(self):
         X = newvar()
         Y = newvar()
         bind(X, Y)
@@ -49,32 +56,32 @@
             return x + 1
         raises(RuntimeError, f, X)
 
-    def test_bind_to_self(self):
-        X = newvar()
-        bind(X, X)
-        bind(X, 1)
-        assert X == 1
 
     def test_eq_unifies_simple(self):
         X = newvar()
         Y = newvar()
-        assert X == Y
+        unify(X, Y)
+        unify(X, 1)
         assert X == 1
         assert is_bound(Y)
         assert Y == 1
+        assert X == Y
 
-    def test_ne_of_unified_vars(self):
+    def test_ne_of_unified_unbound_vars(self):
         X = newvar()
         Y = newvar()
+        unify(X, Y)
         assert X == Y
         assert not X != Y
 
     def test_cmp(self):
         X = newvar()
         Y = newvar()
+        unify(X, Y)
         assert cmp(X, Y) == 0
         assert is_free(X)
         assert is_free(Y)
+        unify(X, 1)
         assert X == 1
         assert is_bound(Y)
         assert Y == 1
@@ -82,7 +89,82 @@
     def test_is(self):
         X = newvar()
         x = 1
-        assert X is x
+        assert 1 is 1
+        assert not(2 is 1)
+        assert X is X
+        bind(X, x)
         assert X == 1
         assert X is x
+        assert not(X is 2)
+
+    def test_unify_free(self):
+        X, Y = newvar(), newvar()
+        unify(X, Y)
+        assert X == Y
+        unify(X, 1)
+        assert X == 1
+        assert Y == 1
+        
+        
+
+class AppTest_LogicThreads(object):
+
+    def setup_class(cls):
+        cls.space = gettestobjspace('logic')
+
+
+    def notest_eager_producer_consummer(self):
+
+        def generate(n, limit):
+            print "generate", n, limit
+            if n < limit:
+                return (n, generate(n + 1, limit))
+            return (None, None)
+
+        def sum(L, a):
+            print "sum", a
+            head, Tail = newvar(), newvar()
+            unify(L, (head, Tail))
+            if head != None:
+                return sum(Tail, head + a)
+            return a
+
+        X = newvar()
+        S = newvar()
+        unify(S, uthread(sum, X, 0))
+        unify(X, uthread(generate, 0, 10))
+
+        assert S == 45
+
+
+    def notest_lazy_producer_consummer(self):
+
+        def lgenerate(n, L):
+            """wait-needed version of generate"""
+            print "generator waits on L being needed"
+            wait_needed(L)
+            Tail = newvar()
+            L == (n, Tail)
+            print "generator bound L to", L
+            lgenerate(n+1, Tail)
+
+        def lsum(L, a, limit):
+            """this version of sum controls the generator"""
+            print "sum", a
+            if limit > 0:
+                Head, Tail = newvar(), newvar()
+                print "sum waiting on L"
+                L == (Head, Tail) # or Head, Tail == L ?
+                return lsum(Tail, a+Head, limit-1)
+            else:
+                return a
+
+        print "lazy producer consummer"
+        print "before"
+        Y = newvar()
+        T = newvar()
+        uthread(lgenerate, 0, Y)
+        T == uthread(lsum, Y, 0, 10)
+        print "after"
 
+        print T



More information about the Pypy-commit mailing list