git.fiddlerwoaroof.com
tests.lisp
ed0a12cf
 (fwoar.sp-user:define-package :stream-provider.tests
   (:use :cl :stream-provider :should-test))
 (in-package :stream-provider.tests)
 
 (defparameter *test-string-provider* (make-instance 'string-provider))
 (defparameter *test-file-provider* (make-instance 'file-provider :root #p"/nowhere/"))
 
 (defmethod stream-key ((provider (eql *test-string-provider*)) (item string))
   item)
 
 (defmethod stream-key ((provider (eql *test-file-provider*)) (item string))
   item)
 
 (deftest stream-key-returns-specified-pathname ()
     (let* ((stored-item "foo")
 	   (expected-pathname (pathname "foo")))
       (should be equal
 	      (stream-key *test-string-provider* stored-item)
 	      expected-pathname)))
 
 
 
 (deftest stream-key-for-file-provider-is-relative-to-root ()
     (let* ((stored-item "/nowhere/foo")
 	   (expected-pathname (pathname "foo")))
       (should be equal
 	      expected-pathname
 	      (stream-key *test-file-provider* stored-item))))
 
 (defclass object-to-store ()
   ((%name :reader name :initarg :name :initform (error "need a name"))
    (%value :reader value :initarg :value :initform (error "need a value"))))
 
 (defclass test-provider (string-provider)
   ())
 
 (defmethod stream-key ((provider test-provider) (item object-to-store))
   (name item))
 
 (defun store (provider item)
   (with-storage-stream (s item provider)
     (write-sequence (value item) s)))
 
 (deftest with-storage-stream-writes-to-right-place ()
     (let* ((name "foo")
 	   (value "bar bar")
 	   (object (make-instance 'object-to-store
 				  :name name
 				  :value value))
 	   (provider (make-instance 'test-provider)))
       (should be equal
 	      (store provider object)
 	      value
 	      (babel:octets-to-string
 	       (gethash (stream-key provider object)
 			(streams provider))))))