3 ;;; File: unittests-data-clos.lisp
4 ;;; Author: AJ Rossini <blindglobe@gmail.com>
5 ;;; Copyright: (c)2008, AJ Rossini. BSD, LLGPL, or GPLv2, depending
7 ;;; Purpose: unittests for the data-clos package
8 ;;; Time-stamp: <2009-03-25 08:02:27 tony>
9 ;;; Creation: <2008-05-09 14:18:19 tony>
11 ;;; What is this talk of 'release'? Klingons do not make software
12 ;;; 'releases'. Our software 'escapes', leaving a bloody trail of
13 ;;; designers and quality assurance people in its wake.
15 (in-package :lisp-stat-unittests
)
17 (deftestsuite lisp-stat-ut-dataclos
(lisp-stat-ut) ())
19 ;; Ensure helper-function support
21 (addtest (lisp-stat-ut-dataclos) genseq
23 (equal (lisp-stat-data-clos::gen-seq
4)
26 (addtest (lisp-stat-ut-dataclos) genseq-null
28 (equal (lisp-stat-data-clos::gen-seq
0)
31 (addtest (lisp-stat-ut-dataclos) genseq-offset
33 (equal (lisp-stat-data-clos::gen-seq
4 2)
36 (addtest (lisp-stat-ut-dataclos) equaltestnameData
38 (equal (lisp-stat-data-clos::dataset
39 (make-instance 'dataframe-array
47 "test ds for experiment.")
48 (setf my-ds-1
(make-instance 'dataframe-array
))
53 "test ds for experiment.")
55 (setf my-ds-2
(make-instance 'dataframe-array
56 :storage
#2A
((1 2 3 4 5)
58 :doc
"This is an interesting dataframe-array"
59 :case-labels
(list "a" "b" "c" "d" "e")
60 :var-labels
(list "x" "y")))
62 (make-array (list 3 5))
64 (array-dimensions (lisp-stat-data-clos::dataset my-ds-2
))
67 (addtest (lisp-stat-ut-dataclos) consData
69 (consistent-dataframe-like-p my-ds-2
)))
71 (addtest (lisp-stat-ut-dataclos) badAccess1
73 (slot-value my-ds-2
'store
)))
75 (addtest (lisp-stat-ut-dataclos) badAccess2
77 (slot-value my-ds-2
'store
)))
79 (addtest (lisp-stat-ut-dataclos) badAccess3
81 (lisp-stat-data-clos::dataset my-ds-2
)))
83 (addtest (lisp-stat-ut-dataclos) badAccess4
86 (slot-value my-ds-2
'lisp-stat-data-clos
::store
)
87 (lisp-stat-data-clos::dataset my-ds-2
))))
90 (addtest (lisp-stat-ut-dataclos) badAccess5
92 (eq (lisp-stat-data-clos::dataset my-ds-2
)
93 (slot-value my-ds-2
'lisp-stat-data-clos
::store
))))
96 ;; NEVER DO THE FOLLOWING, UNLESS YOU WANT TO MUCK UP STRUCTURES...
97 (addtest (lisp-stat-ut-dataclos) badAccess6
99 (lisp-stat-data-clos::doc-string my-ds-2
)))
101 (addtest (lisp-stat-ut-dataclos) badAccess7
103 (lisp-stat-data-clos::case-labels my-ds-2
)))
105 (addtest (lisp-stat-ut-dataclos) badAccess8
107 (lisp-stat-data-clos::var-labels my-ds-2
)))
109 ;; need to ensure that for things like the following, that we protect
110 ;; this a bit more so that the results are not going to to be wrong.
111 ;; That would be a bit nasty if the dataframe-array becomes
114 (addtest (lisp-stat-ut-dataclos) badAccess9
116 (setf (lisp-stat-data-clos::var-labels my-ds-2
)
119 (addtest (lisp-stat-ut-dataclos) badAccess10
122 ;; no error, but corrupts structure
123 (setf (lisp-stat-data-clos::var-labels my-ds-2
)
125 ;; error happens here
126 (not (consistent-dataframe-like-p my-ds-2
))))) ;; Nil
128 (addtest (lisp-stat-ut-dataclos) badAccess12
130 (setf (lisp-stat-data-clos::var-labels my-ds-2
)
133 (addtest (lisp-stat-ut-dataclos) badAccess13
135 (consistent-dataframe-like-p my-ds-2
))) ;; T
137 ;; This is now done by:
138 (addtest (lisp-stat-ut-dataclos) badAccess14
140 (let ((old-varnames (varNames my-ds-2
)))
141 (setf (varNames my-ds-2
) (list "a" "b")) ;; should error
142 (setf (varNames my-ds-2
) old-varnames
)
143 (error "don't reach this point in badaccess14"))))
146 (defvar origCaseNames nil
)
148 (addtest (lisp-stat-ut-dataclos) badAccess15
151 (setf origCaseNames
(caseNames my-ds-2
))
152 (setf (caseNames my-ds-2
) (list "a" "b" "c" 4 5))
155 (setf (caseNames my-ds-2
)
157 (setf (caseNames my-ds-2
) origCaseNames
))))
161 ;; (describe (run-tests))