changelog shortlog graph tags branches changeset files file revisions raw help

Mercurial > core / annotate lisp/lib/cli/tests/pkg.lisp

changeset 688: 517c65b51e6b
child: 2e7d93b892a5
author: Richard Westhaver <ellis@rwest.io>
date: Tue, 01 Oct 2024 21:52:17 -0400
permissions: -rw-r--r--
description: clap tests
688
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
1
 ;;; cli/tests.lisp --- CLI Tests
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
2
 
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
3
 ;;
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
4
 
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
5
 ;;; Code:
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
6
 (defpackage :cli/tests
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
7
   (:use :cl :std :rt :cli :cli/shell :cli/progress :cli/spark :cli/repl :cli/ansi :cli/prompt :cli/clap :cli/tools/sbcl :dat/sxp))
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
8
 
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
9
 (in-package :cli/tests)
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
10
 (declaim (optimize (debug 3) (safety 3)))
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
11
 (defsuite :cli)
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
12
 (in-suite :cli)
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
13
 
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
14
 (defun ansi-t01 ()
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
15
   (erase)
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
16
     (cursor-position 0 0)
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
17
     (princ "0")
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
18
     (cursor-position 2 2)
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
19
     (princ "1")
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
20
     (cursor-position 5 15)
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
21
     (princ "test")
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
22
     (cursor-position 10 15)
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
23
     (force-output)
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
24
   (with-input-from-string (in (format nil "test~%~%"))
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
25
     (let ((a (read-line in)))
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
26
       (cursor-position 12 15)
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
27
       (princ a)
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
28
       (force-output))))
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
29
 
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
30
 (defun ansi-t02 ()
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
31
   (print "normal")
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
32
   (.sgr 1)
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
33
   (print "bold")
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
34
   (.sgr 4)
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
35
   (print "bold underline")
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
36
   (.sgr 7)
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
37
   (print "bold underline reverse")
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
38
   (.sgr 22)
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
39
   (print "underline reverse")
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
40
   (.sgr 24)
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
41
   (print "reverse")
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
42
   (.sgr 27)
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
43
   (print "normal")
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
44
   (.sgr 1 4 7)
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
45
   (print "bold underline reverse")
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
46
   (.sgr 0)
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
47
   (print "normal")
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
48
   (force-output))
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
49
 
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
50
 (defun ansi-t03 ()
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
51
   "Display the 256 color palette."
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
52
   (clear)
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
53
   (loop for i from 0 to 255 do
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
54
            (.sgr 48 5 i)
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
55
            (princ #\space))
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
56
   (terpri)
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
57
   (.sgr 0)
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
58
   (loop for i from 0 to 255 do
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
59
            (.sgr 38 5 i)
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
60
            (princ "X"))
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
61
   (.sgr 0)
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
62
   (force-output)
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
63
   ;; (sleep 3)
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
64
   (.ris)
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
65
   (force-output))
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
66
 
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
67
 (defun ansi-t04 ()
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
68
   "Hide and show the cursor."
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
69
   (princ "Cursor visible:")
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
70
   (force-output)
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
71
   ;; (sleep 2)
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
72
   (terpri)
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
73
   (princ "Cursor invisible:")
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
74
   (hide-cursor)
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
75
   (force-output)
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
76
   ;; (sleep 2)
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
77
   (terpri)
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
78
   (princ "Cursor visible:")
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
79
   (show-cursor)
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
80
   (force-output)
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
81
   ;; (sleep 2)
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
82
   )
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
83
 
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
84
 (defun ansi-t05 ()
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
85
   "Switch to and back from the alternate screen buffer."
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
86
   (princ "Normal screen buffer. ")
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
87
   (force-output)
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
88
   ;; (sleep 2)
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
89
   (save-cursor-position)
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
90
   (use-alternate-screen-buffer)
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
91
   (clear)
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
92
   (princ "Alternate screen buffer.")
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
93
   (force-output)
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
94
   ;; (sleep 2)
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
95
   (use-normal-screen-buffer)
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
96
   (restore-cursor-position)
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
97
   (princ "Back to Normal screen buffer.")
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
98
   (force-output)
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
99
   ;; (sleep 1)
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
100
   )
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
101
 
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
102
 (defun ansi-t06 ()
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
103
   "Set individual termios flags to enable raw and disable echo mode.
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
104
 
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
105
 Enabling raw mode allows read-char to return immediately after a key is pressed.
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
106
 
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
107
 In the default cooked mode, the entry has to be confirmed by pressing enter."
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
108
   (set-tty-mode t :ignbrk nil
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
109
                   :brkint nil
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
110
                   :parmrk nil
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
111
                   :istrip nil
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
112
                   :inlcr  nil
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
113
                   :igncr  nil
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
114
                   :icrnl  nil
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
115
                   :ixon   nil
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
116
                   :opost  nil
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
117
                   :echo   nil
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
118
                   :echonl nil
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
119
                   :icanon nil
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
120
                   :isig   nil
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
121
                   :iexten nil
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
122
                   :csize  nil
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
123
                   :parenb nil
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
124
                   :vmin 1
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
125
                   :vtime 0)
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
126
   (erase)
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
127
   (cursor-position 1 1)
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
128
   (force-output)
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
129
   (let ((a (read-char)))
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
130
     (cursor-position 10 5)
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
131
     (princ a)
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
132
     (force-output))
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
133
 
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
134
   (set-tty-mode t :echo t
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
135
                   :brkint t
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
136
                   :ignpar t
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
137
                   :istrip t
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
138
                   :icrnl t
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
139
                   :ixon t
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
140
                   :opost t
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
141
                   :isig t
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
142
                   :icanon t
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
143
                   :veol 0))
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
144
 
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
145
 (defun ansi-t07 ()
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
146
   "Use combination modes that consist of several individual flags.
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
147
 
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
148
 Cooked and raw are opposite modes. Enabling cooked disbles raw and vice versa."
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
149
   (set-tty-mode t :cooked nil)
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
150
   (erase)
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
151
   (cursor-position 1 1)
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
152
   (force-output)
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
153
   (let ((a (read-char)))
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
154
     (cursor-position 3 1)
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
155
     (princ a)
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
156
     (force-output))
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
157
   (set-tty-mode t :raw nil))
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
158
 
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
159
 (defun ansi-t08 ()
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
160
   "Why doesnt calling the stty utility work?"
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
161
   (uiop:run-program "stty raw -echo" :ignore-error-status t)
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
162
   (erase)
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
163
   (cursor-position 1 1)
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
164
   (force-output)
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
165
   (let ((a (read-char)))
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
166
     (cursor-position 2 1)
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
167
     (princ a)
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
168
     (force-output))
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
169
   (uiop:run-program "stty -raw echo" :ignore-error-status t))
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
170
 
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
171
 (defun ansi-t09 ()
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
172
   "Query terminal size with ANSI escape sequences."
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
173
   ;; Put the terminal into raw mode so we can read the "user input"
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
174
   ;; of the reply char by char
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
175
   ;; Turn off the echo or the sequence will be displayed
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
176
   (set-tty-mode t :cooked nil :echo nil)
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
177
   (save-cursor-position)
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
178
   ;; Go to the bottom right corner of the terminal by attempting
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
179
   ;; to go to some high value of row and column
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
180
   (cursor-position 999 999)
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
181
   (let (chars)
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
182
     ;; The terminal returns an escape sequence to the standard input
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
183
     (device-status-report)
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
184
     (force-output)
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
185
     ;; The reply isnt immediately available, the terminal does need
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
186
     ;; some time to answer
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
187
     (sleep 0.1)
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
188
     ;; The reply has to be read as if the user typed an escape sequence
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
189
     (loop for i = (read-char-no-hang *standard-input* nil)
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
190
           until (null i)
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
191
           do (push i chars))
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
192
     ;; Put the terminal back into its initial cooked state
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
193
     (set-tty-mode t :raw nil :echo t)
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
194
     (restore-cursor-position)
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
195
     ;; Return the read sequence as a list of characters.
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
196
     (nreverse chars)))
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
197
 
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
198
 (deftest ansi ()
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
199
   (with-input-from-string (in (format nil "~%~%"))
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
200
     (ansi-t01)
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
201
     (ansi-t02)
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
202
     (ansi-t03)
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
203
     (ansi-t04)
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
204
     (ansi-t05)))
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
205
 
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
206
 ;; TODO: needs to be compiled outside scope of test - contender for
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
207
 ;; fixture API
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
208
 (defprompt tpfoo :prompt "testing:")
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
209
 
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
210
 (deftest cli-prompt (:skip t)
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
211
   "Test CLI prompts"
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
212
   (defvar tcoll nil)
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
213
   (defvar thist nil)
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
214
   (let ((*standard-input* (make-string-input-stream 
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
215
 			   (format nil "~A~%~A~%~%" "foobar" "foobar"))))
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
216
     ;; prompts 
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
217
     (is (string= (tpfoo-prompt) "foobar"))
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
218
     (is (string= "foobar"
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
219
                  (completing-read "nothing: " tcoll :history thist :default "foobar")))))
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
220
 
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
221
 (deftest progress ()
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
222
   (flet ((%step () (cli/progress::update 1)))
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
223
     (let ((*progress-bar-enabled* t)
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
224
           (n 100))
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
225
       (with-progress-bar (n "TEST: # of steps = ~a" n)
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
226
         (dotimes (i n) (%step))))))
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
227
 
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
228
 (deftest spark ()
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
229
   (is (string= 
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
230
        (spark '(1 5 22 13 5))
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
231
        "▁▂█▅▂"))
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
232
   (is (string= 
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
233
        (spark '(5.5 20))
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
234
        "▁█"))
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
235
   (is (string=
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
236
        (spark '(1 2 3 4 100 5 10 20 50 300))
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
237
        "▁▁▁▁▃▁▁▁▂█"))
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
238
   (is (string=
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
239
        (spark '(1 50 100))
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
240
        "▁▄█"))
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
241
   (is (string=
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
242
        (spark '(2 4 8))
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
243
        "▁▃█"))
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
244
   (is (string=
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
245
        (spark '(1 2 3 4 5))
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
246
        "▁▂▄▆█"))
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
247
   (is (string=
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
248
        (spark '(0 30 55 80 33 150))
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
249
        "▁▂▃▄▂█"))
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
250
   ;; null
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
251
   (is (string=
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
252
        (spark '())
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
253
        ""))
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
254
   ;; singleton
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
255
   (is (string=
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
256
        (spark '(42))
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
257
        "▁"))
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
258
   ;; constant
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
259
   (is (string=
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
260
        (spark '(42 42))
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
261
        "▁▁"))
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
262
   ;; min/max
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
263
   (is (string=
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
264
        (spark '(0 30 55 80 33 150) :min -100)
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
265
        "▃▄▅▆▄█"))
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
266
   (is (string=
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
267
        (spark '(0 30 55 80 33 150) :max 50)
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
268
        "▁▅██▅█"))
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
269
   (is (string=
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
270
        (spark '(0 30 55 80 33 150) :min 30 :max 80)
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
271
        "▁▁▄█▁█"))
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
272
   ;; double-float, minus
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
273
   (is (string=
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
274
        (spark '(1.000000000005d0 0.000000000005d0 1.0d0))
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
275
        "█▁▇"))
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
276
   (is (string=
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
277
        (spark '(-1 0 -1))
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
278
        "▁█▁"))
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
279
   (is (string=
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
280
        (spark '(-1.000000000005d0 0.000000000005d0 -1.0d0))
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
281
        "▁█▁"))
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
282
   ;; *ticks*
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
283
   (let ((ternary '(-1 0 1 -1 1 0 0 -1 1 1 0)))
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
284
     (is (string=
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
285
          (spark ternary)
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
286
          "▁▄█▁█▄▄▁██▄"))
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
287
     (is (string=
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
288
          (let ((*ticks* #(#\_ #\- #\¯)))
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
289
            (spark ternary))
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
290
          "_-¯_¯--_¯¯-"))
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
291
     (is (string=
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
292
          (let ((*ticks* #(#\▄ #\⎯ #\▀)))
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
293
            (spark ternary))
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
294
          "▄⎯▀▄▀⎯⎯▄▀▀⎯"))
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
295
     (is (string=
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
296
          (let ((*ticks* #(#\E #\O)))
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
297
            (spark '(4 8 15 22 42) :key (lambda (n) (mod n 2))))
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
298
          "EEOEE")))
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
299
   ;; key
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
300
   (flet ((range (start end) (loop for i from start below end collect i))
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
301
          (fib (n) (loop for x = 0 then y
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
302
                         and y = 1 then (+ x y)
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
303
                         repeat n
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
304
                         finally (return x)))
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
305
          (fac (n) (labels ((rec (n acc) (if (<= n 1) acc (rec (1- n) (* n acc)))))
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
306
                     (rec n 1))))
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
307
     (is (string=
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
308
          (spark (range 0 51)
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
309
                 :key (lambda (x) (sin (* x pi 1/4))))
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
310
          "▄▆█▆▄▂▁▂▄▆█▆▄▂▁▂▄▆█▆▄▂▁▂▄▆█▆▄▂▁▂▄▆█▆▄▂▁▂▄▆█▆▄▂▁▂▄▆█"))
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
311
     (is (string=
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
312
          (spark (range 0 51)
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
313
                 :key (lambda (x) (cos (* x pi 1/4))))
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
314
          "█▆▄▂▁▂▄▆█▆▄▂▁▂▄▆█▆▄▂▁▂▄▆█▆▄▂▁▂▄▆█▆▄▂▁▂▄▆█▆▄▂▁▂▄▆█▆▄"))
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
315
 
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
316
     (is (string=
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
317
          (spark (range 0 51)
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
318
                 :key (lambda (x) (abs (cis (* x pi 1/4)))))
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
319
          "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁"))
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
320
     
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
321
     (is (string=
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
322
          (spark (range 0 51)
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
323
                 :key (lambda (x) (float (phase (cis (* x pi 1/4))) 1.0)))
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
324
          "▄▅▆▇█▁▁▂▄▅▆▇█▁▁▂▄▅▆▇█▁▁▂▄▅▆▇█▁▁▂▄▅▆▇█▁▁▂▄▅▆▇█▁▁▂▄▅▆"))
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
325
 
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
326
     (is (string=
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
327
          (spark (range 1 7) :key #'log)   
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
328
          "▁▃▅▆▇█"))
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
329
 
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
330
     (is (string=
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
331
          (spark (range 1 7) :key #'sqrt)  
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
332
          "▁▃▄▅▆█"))
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
333
     (is (string=
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
334
          (spark (range 1 7))              
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
335
          "▁▂▃▅▆█"))
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
336
     (is (string=
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
337
          (spark (range 1 7) :key #'fib)   
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
338
          "▁▁▂▃▅█"))
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
339
     (is (string=
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
340
          (spark (range 1 7) :key #'exp)   
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
341
          "▁▁▁▁▃█"))
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
342
     (is (string=
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
343
          (spark (range 1 7) :key #'fac)   
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
344
          "▁▁▁▁▂█"))
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
345
     (is (string=
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
346
          (spark (range 1 7) :key #'isqrt) 
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
347
          "▁▁▁███"))
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
348
     ;; misc
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
349
     (flet ((lbits (n) (spark (map 'list #'digit-char-p (write-to-string n :base 2)))))
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
350
       (is (string=
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
351
            (lbits 42) 
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
352
            "█▁█▁█▁"))
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
353
       (is (string=
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
354
            (lbits 43) 
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
355
            "█▁█▁██"))
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
356
       (is (string=
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
357
            (lbits 44) 
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
358
            "█▁██▁▁"))
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
359
       (is (string= 
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
360
            (lbits 45) 
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
361
            "█▁██▁█")))
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
362
 
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
363
     ;; VSPARK
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
364
     (is (string=
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
365
          (vspark '())
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
366
          ""))
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
367
     ;; singleton
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
368
     (is (string= 
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
369
          (vspark '(1))
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
370
          "
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
371
 1                      1.5                       2
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
372
 ˫-----------------------+------------------------˧
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
373
 
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
374
 "))
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
375
 
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
376
     ;; constant
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
377
     (is (string= 
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
378
          (vspark '(1 1))
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
379
          "
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
380
 1                      1.5                       2
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
381
 ˫-----------------------+------------------------˧
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
382
 
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
383
 
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
384
 "))
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
385
 
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
386
 
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
387
     (is (string=
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
388
          (vspark '(0 30 55 80 33 150))
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
389
          "
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
390
 0                      75                      150
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
391
 ˫-----------------------+------------------------˧
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
392
 
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
393
 ██████████▏
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
394
 ██████████████████▍
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
395
 ██████████████████████████▋
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
396
 ███████████▏
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
397
 ██████████████████████████████████████████████████
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
398
 "))
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
399
 
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
400
 
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
401
     ;; min, max
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
402
 
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
403
     (is (string=
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
404
          (vspark '(0 30 55 80 33 150) :min -100)
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
405
          "
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
406
 -100                    25                     150
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
407
 ˫-----------------------+------------------------˧
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
408
 ████████████████████▏
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
409
 ██████████████████████████▏
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
410
 ███████████████████████████████▏
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
411
 ████████████████████████████████████▏
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
412
 ██████████████████████████▋
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
413
 ██████████████████████████████████████████████████
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
414
 "))
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
415
 
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
416
     (is (string=
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
417
          (vspark '(0 30 55 80 33 150) :max 50)
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
418
          "
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
419
 0                      25                       50
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
420
 ˫-----------------------+------------------------˧
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
421
 
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
422
 ██████████████████████████████▏
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
423
 ██████████████████████████████████████████████████
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
424
 ██████████████████████████████████████████████████
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
425
 █████████████████████████████████▏
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
426
 ██████████████████████████████████████████████████
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
427
 "))
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
428
 
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
429
 
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
430
     (is (string=
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
431
          (vspark '(0 30 55 80 33 150) :min 30 :max 80)
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
432
          "
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
433
 30                      55                      80
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
434
 ˫-----------------------+------------------------˧
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
435
 
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
436
 
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
437
 █████████████████████████▏
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
438
 ██████████████████████████████████████████████████
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
439
 ███▏
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
440
 ██████████████████████████████████████████████████
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
441
 "))
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
442
 
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
443
     ;; labels
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
444
     (is (string=
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
445
          (vspark '(1 0 .5) :labels '("on" "off" "unknown")
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
446
                            :size 1
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
447
                            :scale? nil)
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
448
          "
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
449
      on █
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
450
     off ▏
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
451
 unknown ▌
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
452
 "))
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
453
 
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
454
     (is (string=
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
455
          (vspark '(1 0 .5) :labels '("on" "off")
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
456
                            :size 1
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
457
                            :scale? nil)
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
458
          "
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
459
  on █
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
460
 off ▏
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
461
 
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
462
 "))
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
463
 
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
464
     (is (string=
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
465
          (vspark '(1 0) :labels '("on" "off" "unknown")
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
466
                         :size 1
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
467
                         :scale? nil)
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
468
          "
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
469
  on █
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
470
 off ▏
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
471
 "))
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
472
 
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
473
     ;; key
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
474
     (is (string=
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
475
          (vspark '(0 1 2 3 4 5 6 7 8) :key (lambda (x) (sin (* x pi 1/4))))
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
476
          "
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
477
 -1.0                    0.0                    1.0
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
478
 ˫-----------------------+------------------------˧
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
479
 █████████████████████████▏
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
480
 ██████████████████████████████████████████▋
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
481
 ██████████████████████████████████████████████████
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
482
 ██████████████████████████████████████████▋
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
483
 █████████████████████████▏
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
484
 ███████▍
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
485
 
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
486
 ███████▍
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
487
 ████████████████████████▉
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
488
 "))
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
489
 
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
490
     ;; size
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
491
     (is (string=
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
492
          (vspark '(0 1 2 3 4 5 6 7 8) :key (lambda (x) (sin (* x pi 1/4)))
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
493
                                       :size 10)
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
494
          "
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
495
 -1.0   1.0
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
496
 ˫--------˧
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
497
 █████▏
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
498
 ████████▌
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
499
 ██████████
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
500
 ████████▌
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
501
 █████▏
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
502
 █▌
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
503
 
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
504
 █▌
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
505
 ████▉
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
506
 "))
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
507
 
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
508
     ;; scale (mid-point)
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
509
     (is (string=
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
510
          (vspark '(0 1 2 3 4 5 6 7 8) :key (lambda (x) (sin (* x pi 1/4)))
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
511
                                       :size 20)
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
512
          "
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
513
 -1.0     0.0     1.0
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
514
 ˫--------+---------˧
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
515
 ██████████▏
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
516
 █████████████████▏
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
517
 ████████████████████
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
518
 █████████████████▏
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
519
 ██████████▏
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
520
 ██▉
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
521
 
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
522
 ██▉
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
523
 █████████▉
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
524
 "))
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
525
 
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
526
     (let ((life-expectancies '(("Africa" 56)
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
527
                                ("Americans" 76)
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
528
                                ("South-East Asia" 67)
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
529
                                ("Europe" 76)
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
530
                                ("Eastern Mediterranean" 68)
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
531
                                ("Western Pacific" 76)
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
532
                                ("Global" 70))))
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
533
 
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
534
       (is (string=
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
535
            (vspark life-expectancies :key #'second)
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
536
            "
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
537
 56                      66                      76
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
538
 ˫-----------------------+------------------------˧
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
539
 
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
540
 ██████████████████████████████████████████████████
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
541
 ███████████████████████████▌
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
542
 ██████████████████████████████████████████████████
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
543
 ██████████████████████████████▏
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
544
 ██████████████████████████████████████████████████
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
545
 ███████████████████████████████████▏
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
546
 "))
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
547
 
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
548
       ;; newline?
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
549
       (is (string=
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
550
            (vspark life-expectancies :key #'second :scale? nil :newline? nil)
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
551
            "▏
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
552
 ██████████████████████████████████████████████████
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
553
 ███████████████████████████▌
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
554
 ██████████████████████████████████████████████████
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
555
 ██████████████████████████████▏
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
556
 ██████████████████████████████████████████████████
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
557
 ███████████████████████████████████▏"))
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
558
 
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
559
       ;; scale?
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
560
       (is (string=
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
561
            (vspark life-expectancies :key #'second :scale? nil)
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
562
            "
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
563
 
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
564
 ██████████████████████████████████████████████████
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
565
 ███████████████████████████▌
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
566
 ██████████████████████████████████████████████████
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
567
 ██████████████████████████████▏
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
568
 ██████████████████████████████████████████████████
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
569
 ███████████████████████████████████▏
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
570
 "))
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
571
 
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
572
       ;; labels
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
573
       (is (string=
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
574
            (vspark life-expectancies
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
575
                    :key   #'second
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
576
                    :labels (mapcar #'first life-expectancies))
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
577
            "
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
578
                       56           66           76
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
579
                       ˫------------+-------------˧
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
580
                Africa ▏
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
581
             Americans ████████████████████████████
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
582
       South-East Asia ███████████████▍
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
583
                Europe ████████████████████████████
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
584
 Eastern Mediterranean ████████████████▊
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
585
       Western Pacific ████████████████████████████
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
586
                Global ███████████████████▋
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
587
 "))
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
588
 
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
589
       ;; title
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
590
       (is (string=
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
591
            (vspark life-expectancies
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
592
                    :min 50 :max 80
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
593
                    :key    #'second
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
594
                    :labels (mapcar #'first life-expectancies)
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
595
                    :title "Life Expectancy")
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
596
            "
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
597
                  Life Expectancy                  
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
598
                       50           65           80
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
599
                       ˫------------+-------------˧
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
600
                Africa █████▋
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
601
             Americans ████████████████████████▎
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
602
       South-East Asia ███████████████▉
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
603
                Europe ████████████████████████▎
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
604
 Eastern Mediterranean ████████████████▊
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
605
       Western Pacific ████████████████████████▎
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
606
                Global ██████████████████▋
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
607
 "))
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
608
 
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
609
       (is (string=
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
610
            (spark (range 0 15) :key #'fib)
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
611
            "▁▁▁▁▁▁▁▁▁▁▂▂▃▅█"))
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
612
 
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
613
       (is (string=
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
614
            (vspark (range 0 15) :key #'fib)
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
615
            "
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
616
 0                    188.5                     377
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
617
 ˫-----------------------+------------------------˧
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
618
 
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
619
 
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
620
 
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
621
 
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
622
 
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
623
 
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
624
 █▏
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
625
 █▊
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
626
 ██▊
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
627
 ████▌
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
628
 ███████▍
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
629
 ███████████▊
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
630
 ███████████████████▏
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
631
 ██████████████████████████████▉
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
632
 ██████████████████████████████████████████████████
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
633
 ")))))
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
634
 
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
635
 (deftest repl ())
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
636
 
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
637
 (deftest env ()
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
638
   (ld-library-path-list)
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
639
   (is (exec-path-list))
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
640
   (is (find-exe "sbcl")))
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
641
 
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
642
 (deftest sbcl-tools ()
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
643
   (with-sbcl (:noinform t :quit t)
517c65b51e6b clap tests
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
644
     (print 1)))