diff options
author | Piotr Szarmanski | 2023-08-04 18:37:51 +0200 |
---|---|---|
committer | Piotr Szarmanski | 2023-08-04 18:37:51 +0200 |
commit | 6b3457b35cbcea4e28d3482263a36ae6db39fc8f (patch) | |
tree | 2fb28e1d2a8969ad5f5a62f4c62fb1ca3e9a8449 /extra/sqlite/tests.lisp | |
parent | 4bbfb31292e049cd6a09301968bd21271afaacc9 (diff) |
Extra sqlite3 backend
Diffstat (limited to 'extra/sqlite/tests.lisp')
-rw-r--r-- | extra/sqlite/tests.lisp | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/extra/sqlite/tests.lisp b/extra/sqlite/tests.lisp new file mode 100644 index 0000000..2abab64 --- /dev/null +++ b/extra/sqlite/tests.lisp @@ -0,0 +1,71 @@ +;; This file is part of eris-cl. +;; Copyright (C) 2023 Piotr SzarmaĆski + +;; eris-cl is free software: you can redistribute it and/or modify it under the +;; terms of the GNU Lesser General Public License as published by the Free +;; Software Foundation, either version 3 of the License, or (at your option) any +;; later version. + +;; eris-cl is distributed in the hope that it will be useful, but WITHOUT ANY +;; WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +;; A PARTICULAR PURPOSE. See the GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License along with +;; eris-cl. If not, see <https://www.gnu.org/licenses/>. + +(defpackage eris-sqlite/test + (:use #:common-lisp #:eris-sqlite #:fiveam #:eris)) + +(in-package :eris-sqlite/test) + +(def-suite eris-sqlite-tests + :description "Root test suite for eris-sqlite.") + +(in-suite eris-sqlite-tests) + + +(defun make-temporary-dir () + (let* ((tmpdir (uiop:temporary-directory)) + (tmp-tmpdir (make-pathname :directory (serapeum:append1 + (pathname-directory tmpdir) + (ironclad:byte-array-to-hex-string (ironclad:random-data 10))) + :defaults tmpdir))) + (ensure-directories-exist tmp-tmpdir) + tmp-tmpdir)) + +(defun make-octets (len &key (element 0)) + (make-array len :element-type '(unsigned-byte 8) :initial-element element)) + + +(defmacro test-file-backend (array &optional (secret null-secret)) + `(let ((tmpdir (make-temporary-dir))) + (unwind-protect + (let* ((backend (make-instance 'sqlite-backend + :db (make-pathname :name "sqltest" :defaults tmpdir))) + (array ,array)) + (is (equalp (alexandria:read-stream-content-into-byte-vector + (fetch-data + (store-data array backend :secret ,secret) backend)) + array))) + (uiop:delete-directory-tree tmpdir :validate t)))) + +(test simple-file-backend-tests + (test-file-backend (make-octets 1023 :element 1)) + (test-file-backend (make-octets 1025 :element 2)) + (test-file-backend (make-octets 16383 :element 3)) + (test-file-backend (make-octets 16384 :element 4)) + (test-file-backend (make-octets 1 :element 5)) + (test-file-backend (make-octets 16834 :element 5)) + (test-file-backend (make-octets 96000 :element 5))) + + +(test simple-file-backend-tests-secret + (test-file-backend (make-octets 1023 :element 1) (crypto:random-data 32)) + (test-file-backend (make-octets 1025 :element 2) (crypto:random-data 32)) + (test-file-backend (make-octets 16383 :element 3) (crypto:random-data 32)) + (test-file-backend (make-octets 16384 :element 4) (crypto:random-data 32)) + (test-file-backend (make-octets 1 :element 5) (crypto:random-data 32)) + (test-file-backend (make-octets 16834 :element 5) (crypto:random-data 32)) + (test-file-backend (make-octets 96000 :element 5) (crypto:random-data 32))) + + |