[pg-cvs] CVS update: pg/pg-tests.lisp

Peter Van Eynde pvaneynde at common-lisp.net
Mon Mar 8 14:37:43 UTC 2004


Update of /project/pg/cvsroot/pg
In directory common-lisp.net:/tmp/cvs-serv13025

Modified Files:
	pg-tests.lisp 
Log Message:
added pbe test
Date: Mon Mar  8 09:37:43 2004
Author: pvaneynde

Index: pg/pg-tests.lisp
diff -u pg/pg-tests.lisp:1.2 pg/pg-tests.lisp:1.3
--- pg/pg-tests.lisp:1.2	Fri Mar  5 13:08:08 2004
+++ pg/pg-tests.lisp	Mon Mar  8 09:37:43 2004
@@ -7,7 +7,7 @@
 ;;
 ;; These tests assume that a table named "test" is defined in the
 ;; system catalog, and that the user identified in
-;; CALL-WITH-TEST-CONNECTION has the rights to access that table. 
+;; CALL-WITH-TEST-CONNECTION has the rights to access that table.
 
 (defpackage :pg-tests
   (:use :cl
@@ -279,6 +279,42 @@
     (pg-exec conn "DROP TABLE pgmt")))
 
 
+(defun test-pbe ()
+  (with-test-connection (conn)
+    (when (pg-supports-pbe conn)
+      (format *debug-io* "~&Testing pbe...")
+      (let ((res nil)
+            (count 0)
+            (created nil))
+        (unwind-protect
+             (progn
+               (pg-exec conn "CREATE TABLE count_test(key int, val int)")
+               (setq created t)
+               (format *debug-io* "~&table created")
+               (pg-prepare conn "ct_insert"
+                           "INSERT INTO count_test VALUES ($1, $2)"
+                           '("int4" "int4"))
+               (loop :for i :from 1 :to 100
+                     :do
+                     (pg-bind conn
+                              "ct_portal" "ct_insert"
+                              `((:int32 ,i)
+                                (:int32 ,(* i i))))
+                     (pg-execute conn "ct_portal")
+                     (pg-close-portal conn "ct_portal"))
+               (format *debug-io* "~&data inserted")
+               (setq res (pg-exec conn "SELECT count(val) FROM count_test"))
+               (assert (eql 100 (first (pg-result res :tuple 0))))
+               (setq res (pg-exec conn "SELECT sum(key) FROM count_test"))
+               (assert (eql 5050 (first (pg-result res :tuple 0))))
+               ;; this iterator does the equivalent of the sum(key) SQL statement
+               ;; above, but on the client side.
+               (pg-for-each conn "SELECT key FROM count_test"
+                            (lambda (tuple) (incf count (first tuple))))
+               (assert (= 5050 count)))
+          (when created
+            (pg-exec conn "DROP TABLE count_test")))))))
+
 
 (defun test ()
   (with-test-connection (conn)
@@ -304,7 +340,8 @@
   (test-notifications)
   (test-lo)
   (test-lo-read)
-  #+cmu (test-lo-import))
+  #+cmu (test-lo-import)
+  (test-pbe))
 
 
 ;; EOF





More information about the Pg-cvs mailing list