Vim window logic, slimv

This commit is contained in:
Ian Keane 2020-02-24 20:27:04 -05:00
parent babcc9e44b
commit 515847d07e
791 changed files with 51552 additions and 86 deletions

View file

@ -0,0 +1,427 @@
;;;; Anaphora: The Anaphoric Macro Package from Hell
;;;;
;;;; This been placed in Public Domain by the author,
;;;; Nikodemus Siivola <nikodemus@random-state.net>
(defpackage :anaphora-test
(:use :cl :anaphora :rt))
(in-package :anaphora-test)
(deftest alet.1
(alet (1+ 1)
(1+ it))
3)
(deftest alet.2
(alet (1+ 1)
it
(1+ it))
3)
(deftest slet.1
(let ((x (list 1 2 3)))
(slet (car x)
(incf it) (values it x)))
2 (2 2 3))
(deftest aand.1
(aand (+ 1 1)
(+ 1 it))
3)
(deftest aand.2
(aand 1 t (values it 2))
1 2)
(deftest aand.3
(let ((x 1))
(aand (incf x) t t (values t it)))
t 2)
(deftest aand.4
(aand 1 (values t it))
t 1)
#+(or)
;;; bug or a feature? forms like this expand to
;;;
;;; (let ((it (values ...))) (and it ...))
;;;
(deftest aand.5
(aand (values nil t) it)
nil t)
(deftest sor.1
(let ((x (list nil)))
(sor (car x)
(setf it t))
x)
(t))
(deftest aif.1
(aif (+ 1 1)
(+ 1 it)
:never)
3)
(deftest aif.2
(let ((x 0))
(aif (incf x)
it
:never))
1)
(deftest aif.3
(let ((x 0))
(aif (eval `(and ,(incf x) nil))
:never
(list it x)))
(nil 1))
(deftest sif.1
(let ((x (list nil)))
(sif (car x)
(setf it :oops)
(setf it :yes!))
(car x))
:yes!)
(deftest sif.2
(let ((x (list t)))
(sif (car x)
(setf it :yes!)
(setf it :oops))
(car x))
:yes!)
(deftest sif.3
(sif (list 1 2 3)
(sif (car it)
(setf it 'a)
:foo))
a)
(deftest sif.4
(progn
(defclass sif.4 ()
((a :initform (list :sif))))
(with-slots (a)
(make-instance 'sif.4)
(sif a
(sif (car it)
it))))
:sif)
(deftest asif.1
(let ((x (list 0)))
(asif (incf (car x))
it
(list :oops it)))
1)
(deftest asif.2
(let ((x (list nil)))
(asif (car x)
(setf x :oops)
(setf it :yes!))
x)
(:yes!))
(deftest awhen.1
(let ((x 0))
(awhen (incf x)
(+ 1 it)))
2)
(deftest awhen.2
(let ((x 0))
(or (awhen (not (incf x))
t)
x))
1)
(deftest swhen.1
(let ((x 0))
(swhen x
(setf it :ok))
x)
:ok)
(deftest swhen.2
(let ((x nil))
(swhen x
(setf it :oops))
x)
nil)
(deftest sunless.1
(let ((x nil))
(sunless x
(setf it :ok))
x)
:ok)
(deftest sunless.2
(let ((x t))
(sunless x
(setf it :oops))
x)
t)
(deftest acase.1
(let ((x 0))
(acase (incf x)
(0 :no)
(1 (list :yes it))
(2 :nono)))
(:yes 1))
(deftest scase.1
(let ((x (list 3)))
(scase (car x)
(0 (setf it :no))
(3 (setf it :yes!))
(t (setf it :nono)))
x)
(:yes!))
(deftest aecase.1
(let ((x (list :x)))
(aecase (car x)
(:y :no)
(:x (list it :yes))))
(:x :yes))
(deftest aecase.2
(nth-value 0 (ignore-errors
(let ((x (list :x)))
(secase (car x)
(:y :no)))
:oops))
nil)
(deftest secase.1
(let ((x (list :x)))
(secase (car x)
(:y (setf it :no))
(:x (setf it :yes)))
x)
(:yes))
(deftest secase.2
(nth-value 0 (ignore-errors
(let ((x (list :x)))
(secase (car x)
(:y (setf it :no)))
:oops)))
nil)
(deftest accase.1
(let ((x (list :x)))
(accase (car x)
(:y :no)
(:x (list it :yes))))
(:x :yes))
(deftest accase.2
(let ((x (list :x)))
(handler-bind ((type-error (lambda (e) (store-value :z e))))
(accase (car x)
(:y (setf x :no))
(:z (setf x :yes))))
x)
:yes)
(deftest accase.3
(let ((x (list :x)))
(accase (car x)
(:x (setf it :foo)))
x)
(:x))
(deftest sccase.1
(let ((x (list :x)))
(sccase (car x)
(:y (setf it :no))
(:x (setf it :yes)))
x)
(:yes))
(deftest sccase.2
(let ((x (list :x)))
(handler-bind ((type-error (lambda (e) (store-value :z e))))
(sccase (car x)
(:y (setf it :no))
(:z (setf it :yes))))
x)
(:yes))
(deftest atypecase.1
(atypecase 1.0
(integer (+ 2 it))
(float (1- it)))
0.0)
(deftest atypecase.2
(atypecase "Foo"
(fixnum :no)
(hash-table :nono))
nil)
(deftest stypecase.1
(let ((x (list 'foo)))
(stypecase (car x)
(vector (setf it :no))
(symbol (setf it :yes)))
x)
(:yes))
(deftest stypecase.2
(let ((x (list :bar)))
(stypecase (car x)
(fixnum (setf it :no)))
x)
(:bar))
(deftest aetypecase.1
(aetypecase 1.0
(fixnum (* 2 it))
(float (+ 2.0 it))
(symbol :oops))
3.0)
(deftest aetypecase.2
(nth-value 0 (ignore-errors
(aetypecase 1.0
(symbol :oops))))
nil)
(deftest setypecase.1
(let ((x (list "Foo")))
(setypecase (car x)
(symbol (setf it :no))
(string (setf it "OK"))
(integer (setf it :noon)))
x)
("OK"))
(deftest setypecase.2
(nth-value 0 (ignore-errors
(setypecase 'foo
(string :nono))))
nil)
(deftest actypecase.1
(actypecase :foo
(string (list :string it))
(keyword (list :keyword it))
(symbol (list :symbol it)))
(:keyword :foo))
(deftest actypecase.2
(handler-bind ((type-error (lambda (e) (store-value "OK" e))))
(actypecase 0
(string it)))
"OK")
(deftest sctypecase.1
(let ((x (list 0)))
(sctypecase (car x)
(symbol (setf it 'symbol))
(bit (setf it 'bit)))
x)
(bit))
(deftest sctypecase.2
(handler-bind ((type-error (lambda (e) (store-value "OK" e))))
(let ((x (list 0)))
(sctypecase (car x)
(string (setf it :ok)))
x))
(:ok))
(deftest acond.1
(acond (:foo))
:foo)
(deftest acond.2
(acond ((null 1) (list :no it))
((+ 1 2) (list :yes it))
(t :nono))
(:yes 3))
(deftest acond.3
(acond ((= 1 2) :no)
(nil :nono)
(t :yes))
:yes)
;; Test COND with multiple forms in the implicit progn.
(deftest acond.4
(let ((foo))
(acond ((+ 2 2) (setf foo 38) (incf foo it) foo)
(t nil)))
42)
(deftest scond.1
(let ((x (list nil))
(y (list t)))
(scond ((car x) (setf it :nono))
((car y) (setf it :yes)))
(values x y))
(nil)
(:yes))
(deftest scond.2
(scond ((= 1 2) :no!))
nil)
(deftest aprog.1
(aprog1 :yes
(unless (eql it :yes) (error "Broken."))
:no)
:yes)
(deftest aif.sif.1
(sif 1 (aif it it))
1)
(deftest aif.sif.2
(aif 1 (sif it it))
1)
(deftest aif.sif.3
(aif (list 1 2 3)
(sif (car it)
(setf it 'a)
:foo))
a)
(deftest alet.slet.1
(slet 42 (alet 43 (slet it it)))
43)
(defun elt-like (index seq)
(elt seq index))
(define-setf-expander elt-like (index seq)
(let ((index-var (gensym "index"))
(seq-var (gensym "seq"))
(store (gensym "store")))
(values (list index-var seq-var)
(list index seq)
(list store)
`(if (listp ,seq-var)
(setf (nth ,index-var ,seq-var) ,store)
(setf (aref ,seq-var ,index-var) ,store))
`(if (listp ,seq-var)
(nth ,index-var ,seq-var)
(aref ,seq-var ,index-var)))))
(deftest symbolic.setf-expansion.1
(let ((cell (list nil)))
(sor (elt-like 0 cell) (setf it 1))
(equal cell '(1)))
t)