70 lines
2.6 KiB
Common Lisp
70 lines
2.6 KiB
Common Lisp
;;;; SPDX-License-Identifier AGPL-3.0-or-later
|
|
|
|
;;;; compound.lisp Compound artifact implementation
|
|
;;;; Copyright (C) 2022 Alejandro "HiPhish" Sanchez
|
|
;;;;
|
|
;;;; This file is part of CL-HSSG.
|
|
;;;;
|
|
;;;; CL-HSSG is free software: you can redistribute it and/or modify it under
|
|
;;;; the terms of the GNU Affero General Public License as published by the
|
|
;;;; Free Software Foundation, either version 3 of the License, or (at your
|
|
;;;; option) any later version.
|
|
;;;;
|
|
;;;; CL-HSSG 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 Affero General Public License for
|
|
;;;; more details.
|
|
;;;;
|
|
;;;; You should have received a copy of the GNU Affero General Public License
|
|
;;;; along with CL-HSSG If not, see <https://www.gnu.org/licenses/>.(in-package #:hssg.artifact)
|
|
(defpackage #:hssg/test/reader
|
|
(:use #:cl))
|
|
(in-package #:hssg/test/reader)
|
|
|
|
(defun dummy-reader (pathname)
|
|
"A dummy reader which does nothing useful."
|
|
(declare (ignore pathname))
|
|
'())
|
|
|
|
(fiveam:def-suite hssg/reader
|
|
:description "Tests for the reader interface"
|
|
:in hssg/test:hssg)
|
|
|
|
(fiveam:in-suite hssg/reader)
|
|
|
|
(fiveam:test retrieve-reader
|
|
"A registered reader can be retrieved by its type"
|
|
(let ((hssg.reader::*file-readers* `(("foo" . ,#'dummy-reader))))
|
|
(fiveam:is-true (eq #'dummy-reader (hssg.reader:get-reader "foo")))))
|
|
|
|
(fiveam:test retrieve-missing-reader
|
|
"Retrieving a reader that has not been registered signals a condition"
|
|
(let ((hssg.reader::*file-readers* '()))
|
|
(fiveam:signals (error)
|
|
(hssg.reader:get-reader "foo"))))
|
|
|
|
(fiveam:test add-reader
|
|
"A new reader can be added by file type"
|
|
(let ((original hssg.reader::*file-readers*))
|
|
(unwind-protect
|
|
(progn
|
|
(hssg.reader:register-reader "foo" #'dummy-reader)
|
|
(fiveam:is-true (eq #'dummy-reader (hssg.reader:get-reader "foo"))))
|
|
(setf hssg.reader::*file-readers* original))))
|
|
|
|
(fiveam:test remove-reader
|
|
"An added reader can be removed"
|
|
(let ((original hssg.reader::*file-readers*))
|
|
(unwind-protect
|
|
(progn
|
|
(hssg.reader:register-reader "foo" #'dummy-reader)
|
|
(hssg.reader:unregister-reader "foo")
|
|
(fiveam:is-true (equal original hssg.reader::*file-readers*)))
|
|
(setf hssg.reader::*file-readers* original))))
|
|
|
|
(fiveam:test temporary-reader
|
|
"Register a reader for the duration of the body expressions only"
|
|
(hssg.reader:with-readers (("foo" #'dummy-reader))
|
|
(fiveam:is-true (eq #'dummy-reader (hssg.reader:get-reader "foo"))))
|
|
(fiveam:signals (error)
|
|
(hssg.reader:get-reader "foo")))
|