mysql-client.egg / tests / run.scm

(use mysql-client lolevel)

(define mysql
  (make-mysql-connection "localhost" "root" #f "information_schema"))

(if (not (pointer? (mysql (lambda(c . a) c))))
  (error "closure did not dispatch connection object"))

(define-syntax exec-sql
  (syntax-rules ()
      ((_ sql ...) (begin 
                     ((mysql sql ...) (lambda r (printf "~A~%" r)))))))

(define-syntax assert-mysql-error
  (syntax-rules ()
    ((_ code ...)
     (assert (condition-case
              (begin code ... #f)
              ((exn mysql) #t))))))

(assert-mysql-error (exec-sql "gibberish"))
(exec-sql "CREATE DATABASE IF NOT EXISTS chicken_scheme_mysql_client_test")
(exec-sql "USE chicken_scheme_mysql_client_test")
(exec-sql
#<#SQL
  CREATE TABLE IF NOT EXISTS `scheme_test` (
    `created_at`   TIMESTAMP,
    `name`         VARCHAR(32)
  )
SQL
)
(exec-sql "INSERT INTO scheme_test (created_at, name) VALUES (NOW(), '$name')" 
          '(($name . "hell'o1")))
(exec-sql "INSERT INTO scheme_test (created_at, name) VALUES (NOW(), '$name')" 
          '(($name . "hello%2")))
(exec-sql "INSERT INTO scheme_test (created_at, name) VALUES (NOW(), NULL)") 
(exec-sql "SELECT * FROM scheme_test")

(assert (mysql-null? "(NULL)"))
(mysql-null "(ANOTHER NULL)")

(assert (mysql-null? "(ANOTHER NULL)"))
(exec-sql "SELECT * FROM scheme_test")

(exec-sql "DROP DATABASE chicken_scheme_mysql_client_test")
(exec-sql "USE information_schema")
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.