diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/backend-tests.lisp | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/tests/backend-tests.lisp b/tests/backend-tests.lisp new file mode 100644 index 0000000..625740f --- /dev/null +++ b/tests/backend-tests.lisp @@ -0,0 +1,64 @@ +;; This file is part of eris-cl. +;; Copyright (C) 2022 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/>. + +(in-package :eris/test) + +(def-suite* backend-tests :in eris-tests) + +(defmacro test-hash-backend (array block-size &optional (secret null-secret)) + `(let ((backend (make-instance 'hash-backend)) + (array ,array)) + (is (equalp (alexandria:read-stream-content-into-byte-vector + (fetch-read-capability + (store-data array backend :block-size ,block-size :secret ,secret) backend)) + array)))) + +(test simple-hash-backend-tests + (test-hash-backend (make-octets 1023 :element 1) 1kib) + (test-hash-backend (make-octets 1025 :element 2) 1kib) + (test-hash-backend (make-octets 16383 :element 3) 1kib) + (test-hash-backend (make-octets 16384 :element 4) 1kib) + (test-hash-backend (make-octets 1 :element 5) 32kib) + (test-hash-backend (make-octets 16834 :element 5) 32kib) + (test-hash-backend (make-octets 96000 :element 5) 32kib)) + +(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)) + +(defmacro test-file-backend (array &optional (secret null-secret)) + `(let ((tmpdir (make-temporary-dir))) + (unwind-protect + (let* ((backend (make-instance 'file-backend :directory tmpdir)) + (array ,array)) + (is (equalp (alexandria:read-stream-content-into-byte-vector + (fetch-read-capability + (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))) |