(import lmdb test) (test-assert "environment creation" (database-environment? (open-database-environment "test-env" #:max-databases 4))) (define blurbs (with-transaction (cut open-database "blurbs" #:create))) (test-assert (database? blurbs)) (with-transaction (lambda () (database-set! blurbs "foo" "bar") (database-set! blurbs "baz" "kawumm"))) (with-transaction (lambda () (test "bar" (database-ref blurbs "foo")) (test "kawumm" (database-ref blurbs "baz")) (test-assert (database-exists? blurbs "foo")) (test-assert (not (database-exists? blurbs "garbage"))) (test #f (database-ref blurbs "no key" #f)) (test 'exn-db (condition-case (database-ref blurbs "still no key") ((exn db) 'exn-db))) (test '(("baz" . "kawumm") ("foo" . "bar")) (database->alist blurbs))) #:read-only) (define quirks (with-transaction (cut alist->database '(("alpha" . "bravo") ("bar" . "foo") ("baz" "badumm" "kawumm") ("ignored") ("xyzzy" . "abracadabra")) "quirks" #:create #:duplicate-sort #:append/duplicate))) (test-assert (database? quirks)) (with-transaction (lambda () (test '() (database->alist quirks #:limit 0)) (test '(("bar" . "foo") ("baz" . "badumm") ("baz" . "kawumm")) (database->alist quirks #:from "b" #:to< "x")) (test '(("bar" . "foo")) (database->alist quirks #:from "b" #:to< "x" #:limit 1)) (test '(("bar" "foo") ("baz" "badumm" "kawumm")) (database->alist quirks #:from "b" #:to< "x" #:duplicate-list)) (test '(("bar" "foo") ("baz" "badumm")) (database->alist quirks #:from "b" #:to< "x" #:limit 2 #:duplicate-list)) (database-delete! quirks "baz" "badumm") (test '(("baz" . "kawumm")) (database->alist quirks #:from "baz" #:to<= "baz")) (drop-database quirks) (test '() (database->alist quirks)))) (close-database-environment) (test-exit) ;; vim: set ai et ts=4 sts=2 sw=2 ft=scheme: ;;