X-Git-Url: http://git.kpe.io/?a=blobdiff_plain;f=tests.lisp;h=5f698bd69632e9bef3249918cf2f22f3a9fa467a;hb=90c2e4c13bd89c48de9fe0da126547447b7b9e01;hp=135499690d3d8bc91c5687c89e38f7fffad89b00;hpb=7b3ca1025e0b572b6511c044e948aeab2147af45;p=hyperobject.git diff --git a/tests.lisp b/tests.lisp index 1354996..5f698bd 100644 --- a/tests.lisp +++ b/tests.lisp @@ -7,27 +7,17 @@ ;;;; Programmer: Kevin M. Rosenberg ;;;; Date Started: Apr 2003 ;;;; -;;;; $Id: tests.lisp,v 1.2 2003/04/28 19:06:13 kevin Exp $ -;;;; -;;;; This file is Copyright (c) 2000-2002 by Kevin M. Rosenberg +;;;; $Id$ ;;;; +;;;; This file is Copyright (c) 2000-2003 by Kevin M. Rosenberg ;;;; ************************************************************************* (defpackage #:hyperobject-tests - (:use #:hyperobject #:cl #:rtest)) + (:use #:hyperobject #:cl #:rtest #:kmrcl)) (in-package #:hyperobject-tests) -(defun format-date (ut) - (when (typep ut 'integer) - (multiple-value-bind (sec min hr day mon year dow daylight-p zone) - (decode-universal-time ut) - (declare (ignore daylight-p zone)) - (format nil "~[Mon~;Tue~;Wed~;Thu~;Fri~;Sat~;Sun~], ~d ~[Jan~;Feb~;Mar~;Apr~;May~;Jun~;Jul~;Aug~;Sep~;Oct~;Nov~;Dec~] ~d ~2,'0d:~2,'0d:~2,'0d" - dow - day - (1- mon) - year - hr min sec)))) +(defvar *now* (get-universal-time)) +(defun get-now () *now*) (defclass person (hyperobject) ((first-name :initarg :first-name :accessor first-name @@ -38,11 +28,12 @@ :value-type (varchar 30) :value-constraint stringp :hyperlink find-person-by-last-name + :hyperlink-parameters (("narrow" . "yes")) :null-allowed nil) (full-name :value-type string :stored nil) (dob :initarg :dob :accessor dob :value-type integer - :print-formatter format-date + :print-formatter date-string :value-constraint integerp :input-filter convert-to-date) (resume :initarg :resume :accessor resume @@ -50,9 +41,10 @@ :value-constraint stringp) ;; (addresses :value-type (list-of subobject) :initarg :addresses :accessor addresses)) (addresses :initarg :addresses :accessor addresses - :subobject t)) + :subobject t) + (create-time :accessor create-time :compute-cached-value (get-now))) (:metaclass hyperobject-class) - (:default-initargs :first-name "" :last-name "" :dob 0 :resume nil) + (:default-initargs :first-name "" :last-name "" :dob 0 :resume nil) (:default-print-slots first-name last-name dob resume) (:user-name "Person") (:description "A Person") @@ -68,11 +60,14 @@ :value-type (varchar 30) :value-constraint stringp) (phones :initarg :phones :accessor phones - :subobject t)) + :subobject t) + (years-at-address :initarg :years-at-address :value-type fixnum + :accessor years-at-address + :value-constraint integerp)) (:metaclass hyperobject-class) - (:default-initargs :title nil :street nil) - (:user-name "Address") - (:default-print-slots title street) + (:default-initargs :title nil :street nil) + (:user-name "Address" "Addresses") + (:default-print-slots title street years-at-address) (:description "An address")) (defclass phone (hyperobject) @@ -81,7 +76,8 @@ :value-constraint stringp) (phone-number :initarg :phone-number :accessor phone-number :value-type (varchar 16) - :value-constraint stringp)) + :value-constraint stringp + :hyperlink search-phone-number)) (:metaclass hyperobject-class) (:user-name "Phone Number") (:default-initargs :title nil :phone-number nil) @@ -96,23 +92,20 @@ (defparameter office-phone-3 (make-instance 'phone :title "Fax" :phone-number "123-0005")) (defparameter home (make-instance 'address :title "Home" :street "321 Shady Lane" + :years-at-address 10 :phones (list home-phone-1 home-phone-2))) (defparameter office (make-instance 'address :title "Office" :street "113 Main St." + :years-at-address 5 :phones (list office-phone-1 office-phone-2 office-phone-3))) - + (defparameter mary (make-instance 'person :first-name "Mary" :last-name "Jackson" :dob (encode-universal-time 1 2 3 4 5 2000) :addresses (list home office) :resume "Style & Grace")) -;(format t "~&Text Format~%") -;(view mary :subobjects t) - -;(format t "~&XML Format with field labels and hyperlinks~%") -;(view mary :subobjects t :category :xml-link-labels) (defun view-to-string (obj &rest args) (with-output-to-string (strm) @@ -120,20 +113,40 @@ (rem-all-tests) -(deftest p1 (view-to-string mary) " Person: +(deftest :p1 (view-to-string mary :vid :compact-text) "Person: Mary Jackson Thu, 4 May 2000 03:02:01 Style & Grace ") -(deftest p2 (view-to-string mary :subobjects t) " Person: +(deftest :p2 (view-to-string mary :subobjects t :vid :compact-text) "Person: Mary Jackson Thu, 4 May 2000 03:02:01 Style & Grace - Addresss: - Home 321 Shady Lane + Addresses: + Home 321 Shady Lane 10 Phone Numbers: Voice 367-9812 Fax 367-9813 - Office 113 Main St. + Office 113 Main St. 5 Phone Numbers: Main line 123-0001 Staff line 123-0002 Fax 123-0005 ") + +(deftest :p3 (view-to-string mary :vid :compact-text-labels) + "Person: + first-name Mary last-name Jackson dob Thu, 4 May 2000 03:02:01 resume Style & Grace +") + +(deftest :p4 (view-to-string mary :vid :compact-text) +"Person: + Mary Jackson Thu, 4 May 2000 03:02:01 Style & Grace +") + +(deftest :s1 (years-at-address home) + 10) + +(deftest :s2 (years-at-address office) + 5) + +(deftest :cv1 (equal (create-time mary) *now*) + t) +