1
0
mirror of synced 2026-01-27 04:41:54 +00:00
Files
Interlisp.medley/internal/test/LANGUAGE/AUTO/7-2-ROTATEF.TEST

856 lines
42 KiB
Plaintext

;; Function To Be Tested: ROTATEF
;;
;; Source: Steele's book
;; Section 7.2: Generalized Varibles Page: 93
;;
;; Created By: Jim Blum
;;
;;
;; Creation Date: Nov 4, 1986
;;
;; Last Update: Nov 25, 1986, Changes were made to ROTATEF-PUTHSH and
;; ROTATEF-CHAR by John Park
;;
;;
;; Filed As: {ERIS}<LISPCORE>CML>TEST>7-2-ROTATEF.TEST
;;
;;
;; Syntax: (rotatef {place}*)
;;
;;
;; Function Description:
;;
;; Each place form may be any form acceptable as a generalized variable
;; to setf. In the form (rotatef place1 place2 ... placen), the values
;; in place1 through placen are accessed and saved. Values 2 through n
;; and value 1 are then store into place1 through placen. It is as if all
;; the places form an end-around shift register that is rotated one place
;; to the left, with value of place1 being shifted around the end to
;; placen. Note that (rotatef place1 place2) exchanges the contents of
;; place1 and place2.
;;
;;
;; Argument(s): PLACE - when evaluated accesses a data object in
;; some location and "inverts" it to produce
;; corresponding form to update the location
;;
;;
;; Returns: NIL
;;
;;
(DO-TEST ROTATEF-OF-A-SYMBOL
(AND (SETQ FOO 1)
(SETQ BAR 2)
(SETQ BAZ 3)
(SETQ BLETCH 4)
(NOT (ROTATEF BAR FOO BAZ BLETCH))
(EQ FOO 3) (EQ BAR 1) (EQ BAZ 4)
(EQ BLETCH 2)))
(DO-TEST ROTATEF-CAR
(AND (SETQ FOO '(A . A))
(SETQ BAR '(B . B))
(SETQ BAZ '(C . C))
(SETQ BLETCH '(D . D))
(NOT (ROTATEF (CAR FOO) (CAR BAR) (CAR BAZ) (CAR BLETCH)))
(EQUAL FOO '(B . A))
(EQUAL BAR '(C . B))
(EQUAL BAZ '(D . C))
(EQUAL BLETCH '(A . D))))
(DO-TEST ROTATEF-CDR
(AND (SETQ FOO '(A . A))
(SETQ BAR '(B . B))
(SETQ BAZ '(C . C))
(SETQ BLETCH '(D . D))
(NOT (ROTATEF (CDR FOO) (CDR BAR) (CDR BAZ) (CDR BLETCH)))
(EQUAL FOO '(A . B))
(EQUAL BAR '(B . C))
(EQUAL BAZ '(C . D))
(EQUAL BLETCH '(D . A))))
(DO-TEST ROTATEF-CAAR
(AND (SETQ FOO '((A . B) C . D))
(SETQ BAR '((E . F) G . H))
(SETQ BAZ '((I . J) K . L))
(SETQ BLETCH '((M . N) O . P))
(NOT (ROTATEF (CAAR FOO) (CAAR BAR) (CAAR BAZ) (CAAR BLETCH)))
(EQUAL FOO '((E . B) C . D))
(EQUAL BAR '((I . F) G . H))
(EQUAL BAZ '((M . J) K . L))
(EQUAL BLETCH '((A . N) O . P))))
(DO-TEST ROTATEF-CADR
(AND (SETQ FOO '((A . B) C . D))
(SETQ BAR '((E . F) G . H))
(SETQ BAZ '((I . J) K . L))
(SETQ BLETCH '((M . N) O . P))
(NOT (ROTATEF (CADR FOO) (CADR BAR) (CADR BAZ) (CADR BLETCH)))
(EQUAL FOO '((A . B) G . D))
(EQUAL BAR '((E . F) K . H))
(EQUAL BAZ '((I . J) O . L))
(EQUAL BLETCH '((M . N) C . P))))
(DO-TEST ROTATEF-CDAR
(AND (SETQ FOO '((A . B) C . D))
(SETQ BAR '((E . F) G . H))
(SETQ BAZ '((I . J) K . L))
(SETQ BLETCH '((M . N) O . P))
(NOT (ROTATEF (CDAR FOO) (CDAR BAR) (CDAR BAZ) (CDAR BLETCH)))
(EQUAL FOO '((A . F) C . D))
(EQUAL BAR '((E . J) G . H))
(EQUAL BAZ '((I . N) K . L))
(EQUAL BLETCH '((M . B) O . P))))
(DO-TEST ROTATEF-CDDR
(AND (SETQ FOO '((A . B) C . D))
(SETQ BAR '((E . F) G . H))
(SETQ BAZ '((I . J) K . L))
(SETQ BLETCH '((M . N) O . P))
(NOT (ROTATEF (CDDR FOO) (CDDR BAR) (CDDR BAZ) (CDDR BLETCH)))
(EQUAL FOO '((A . B) C . H))
(EQUAL BAR '((E . F) G . L))
(EQUAL BAZ '((I . J) K . P))
(EQUAL BLETCH '((M . N) O . D))))
(DO-TEST ROTATEF-CAAAR
(AND (SETQ FOO '(((A . B) C . D) (E . F) G . H))
(SETQ BAR '(((I . J) K . L) (M . N) O . P))
(SETQ BAZ '(((Q . R) S . T) (U . V) W . X))
(SETQ BLETCH '(((1 . 2) 3 . 4) (5 . 6) 7 . 8))
(NOT (ROTATEF (CAAAR FOO) (CAAAR BAR) (CAAAR BAZ) (CAAAR BLETCH)))
(EQUAL FOO '(((I . B) C . D) (E . F) G . H))
(EQUAL BAR '(((Q . J) K . L) (M . N) O . P))
(EQUAL BAZ '(((1 . R) S . T) (U . V) W . X))
(EQUAL BLETCH '(((A . 2) 3 . 4) (5 . 6) 7 . 8))))
(DO-TEST ROTATEF-CAADR
(AND (SETQ FOO '(((A . B) C . D) (E . F) G . H))
(SETQ BAR '(((I . J) K . L) (M . N) O . P))
(SETQ BAZ '(((Q . R) S . T) (U . V) W . X))
(SETQ BLETCH '(((1 . 2) 3 . 4) (5 . 6) 7 . 8))
(NOT (ROTATEF (CAADR FOO) (CAADR BAR) (CAADR BAZ) (CAADR BLETCH)))
(EQUAL FOO '(((A . B) C . D) (M . F) G . H))
(EQUAL BAR '(((I . J) K . L) (U . N) O . P))
(EQUAL BAZ '(((Q . R) S . T) (5 . V) W . X))
(EQUAL BLETCH '(((1 . 2) 3 . 4) (E . 6) 7 . 8))))
(DO-TEST ROTATEF-CADAR
(AND (SETQ FOO '(((A . B) C . D) (E . F) G . H))
(SETQ BAR '(((I . J) K . L) (M . N) O . P))
(SETQ BAZ '(((Q . R) S . T) (U . V) W . X))
(SETQ BLETCH '(((1 . 2) 3 . 4) (5 . 6) 7 . 8))
(NOT (ROTATEF (CADAR FOO) (CADAR BAR) (CADAR BAZ) (CADAR BLETCH)))
(EQUAL FOO '(((A . B) K . D) (E . F) G . H))
(EQUAL BAR '(((I . J) S . L) (M . N) O . P))
(EQUAL BAZ '(((Q . R) 3 . T) (U . V) W . X))
(EQUAL BLETCH '(((1 . 2) C . 4) (5 . 6) 7 . 8))))
(DO-TEST ROTATEF-CADDR
(AND (SETQ FOO '(((A . B) C . D) (E . F) G . H))
(SETQ BAR '(((I . J) K . L) (M . N) O . P))
(SETQ BAZ '(((Q . R) S . T) (U . V) W . X))
(SETQ BLETCH '(((1 . 2) 3 . 4) (5 . 6) 7 . 8))
(NOT (ROTATEF (CADDR FOO) (CADDR BAR) (CADDR BAZ) (CADDR BLETCH)))
(EQUAL FOO '(((A . B) C . D) (E . F) O . H))
(EQUAL BAR '(((I . J) K . L) (M . N) W . P))
(EQUAL BAZ '(((Q . R) S . T) (U . V) 7 . X))
(EQUAL BLETCH '(((1 . 2) 3 . 4) (5 . 6) G . 8))))
(DO-TEST ROTATEF-CDAAR
(AND (SETQ FOO '(((A . B) C . D) (E . F) G . H))
(SETQ BAR '(((I . J) K . L) (M . N) O . P))
(SETQ BAZ '(((Q . R) S . T) (U . V) W . X))
(SETQ BLETCH '(((1 . 2) 3 . 4) (5 . 6) 7 . 8))
(NOT (ROTATEF (CDAAR FOO) (CDAAR BAR) (CDAAR BAZ) (CDAAR BLETCH)))
(EQUAL FOO '(((A . J) C . D) (E . F) G . H))
(EQUAL BAR '(((I . R) K . L) (M . N) O . P))
(EQUAL BAZ '(((Q . 2) S . T) (U . V) W . X))
(EQUAL BLETCH '(((1 . B) 3 . 4) (5 . 6) 7 . 8))))
(DO-TEST ROTATEF-CDADR
(AND (SETQ FOO '(((A . B) C . D) (E . F) G . H))
(SETQ BAR '(((I . J) K . L) (M . N) O . P))
(SETQ BAZ '(((Q . R) S . T) (U . V) W . X))
(SETQ BLETCH '(((1 . 2) 3 . 4) (5 . 6) 7 . 8))
(NOT (ROTATEF (CDADR FOO) (CDADR BAR) (CDADR BAZ) (CDADR BLETCH)))
(EQUAL FOO '(((A . B) C . D) (E . N) G . H))
(EQUAL BAR '(((I . J) K . L) (M . V) O . P))
(EQUAL BAZ '(((Q . R) S . T) (U . 6) W . X))
(EQUAL BLETCH '(((1 . 2) 3 . 4) (5 . F) 7 . 8))))
(DO-TEST ROTATEF-CDDAR
(AND (SETQ FOO '(((A . B) C . D) (E . F) G . H))
(SETQ BAR '(((I . J) K . L) (M . N) O . P))
(SETQ BAZ '(((Q . R) S . T) (U . V) W . X))
(SETQ BLETCH '(((1 . 2) 3 . 4) (5 . 6) 7 . 8))
(NOT (ROTATEF (CDDAR FOO) (CDDAR BAR) (CDDAR BAZ) (CDDAR BLETCH)))
(EQUAL FOO '(((A . B) C . L) (E . F) G . H))
(EQUAL BAR '(((I . J) K . T) (M . N) O . P))
(EQUAL BAZ '(((Q . R) S . 4) (U . V) W . X))
(EQUAL BLETCH '(((1 . 2) 3 . D) (5 . 6) 7 . 8))))
(DO-TEST ROTATEF-CDDDR
(AND (SETQ FOO '(((A . B) C . D) (E . F) G . H))
(SETQ BAR '(((I . J) K . L) (M . N) O . P))
(SETQ BAZ '(((Q . R) S . T) (U . V) W . X))
(SETQ BLETCH '(((1 . 2) 3 . 4) (5 . 6) 7 . 8))
(NOT (ROTATEF (CDDDR FOO) (CDDDR BAR) (CDDDR BAZ) (CDDDR BLETCH)))
(EQUAL FOO '(((A . B) C . D) (E . F) G . P))
(EQUAL BAR '(((I . J) K . L) (M . N) O . X))
(EQUAL BAZ '(((Q . R) S . T) (U . V) W . 8))
(EQUAL BLETCH '(((1 . 2) 3 . 4) (5 . 6) 7 . H))))
(DO-TEST ROTATEF-CAAAAR
(AND (SETQ FOO '((((A . B) C . D) (E . F) G . H) ((I . J) K . L) (M . N)
O . P))
(SETQ BAR '((((AA . BB) CC . DD) (EE . FF) GG . HH)
((II . JJ) KK . LL) (MM . NN) OO . PP))
(SETQ BAZ '((((AAA . BBB) CCC . DDD) (EEE . FFF) GGG . HHH)
((III . JJJ) KKK . LLL) (MMM . NNN) OOO . PPP))
(SETQ BLETCH '((((AAAA . BBBB) CCCC . DDDD) (EEEE . FFFF)
GGGG . HHHH)
((IIII . JJJJ) KKKK . LLLL) (MMMM . NNNN)
OOOO . PPPP))
(NOT (ROTATEF (CAAAAR FOO) (CAAAAR BAR) (CAAAAR BAZ)
(CAAAAR BLETCH)))
(EQUAL FOO
'((((AA . B) C . D) (E . F) G . H) ((I . J) K . L) (M . N)
O . P))
(EQUAL BAR
'((((AAA . BB) CC . DD) (EE . FF) GG . HH)
((II . JJ) KK . LL) (MM . NN) OO . PP))
(EQUAL BAZ
'((((AAAA . BBB) CCC . DDD) (EEE . FFF) GGG . HHH)
((III . JJJ) KKK . LLL) (MMM . NNN) OOO . PPP))
(EQUAL BLETCH
'((((A . BBBB) CCCC . DDDD) (EEEE . FFFF) GGGG . HHHH)
((IIII . JJJJ) KKKK . LLLL) (MMMM . NNNN) OOOO . PPPP))))
(DO-TEST ROTATEF-CAAADR
(AND (SETQ FOO '((((A . B) C . D) (E . F) G . H) ((I . J) K . L) (M . N)
O . P))
(SETQ BAR '((((AA . BB) CC . DD) (EE . FF) GG . HH)
((II . JJ) KK . LL) (MM . NN) OO . PP))
(SETQ BAZ '((((AAA . BBB) CCC . DDD) (EEE . FFF) GGG . HHH)
((III . JJJ) KKK . LLL) (MMM . NNN) OOO . PPP))
(SETQ BLETCH '((((AAAA . BBBB) CCCC . DDDD) (EEEE . FFFF)
GGGG . HHHH)
((IIII . JJJJ) KKKK . LLLL) (MMMM . NNNN)
OOOO . PPPP))
(NOT (ROTATEF (CAAADR FOO) (CAAADR BAR) (CAAADR BAZ)
(CAAADR BLETCH)))
(EQUAL FOO
'((((A . B) C . D) (E . F) G . H) ((II . J) K . L) (M . N)
O . P))
(EQUAL BAR
'((((AA . BB) CC . DD) (EE . FF) GG . HH)
((III . JJ) KK . LL) (MM . NN) OO . PP))
(EQUAL BAZ
'((((AAA . BBB) CCC . DDD) (EEE . FFF) GGG . HHH)
((IIII . JJJ) KKK . LLL) (MMM . NNN) OOO . PPP))
(EQUAL BLETCH
'((((AAAA . BBBB) CCCC . DDDD) (EEEE . FFFF) GGGG . HHHH)
((I . JJJJ) KKKK . LLLL) (MMMM . NNNN) OOOO . PPPP))))
(DO-TEST ROTATEF-CAADAR
(AND (SETQ FOO '((((A . B) C . D) (E . F) G . H) ((I . J) K . L) (M . N)
O . P))
(SETQ BAR '((((AA . BB) CC . DD) (EE . FF) GG . HH)
((II . JJ) KK . LL) (MM . NN) OO . PP))
(SETQ BAZ '((((AAA . BBB) CCC . DDD) (EEE . FFF) GGG . HHH)
((III . JJJ) KKK . LLL) (MMM . NNN) OOO . PPP))
(SETQ BLETCH '((((AAAA . BBBB) CCCC . DDDD) (EEEE . FFFF)
GGGG . HHHH)
((IIII . JJJJ) KKKK . LLLL) (MMMM . NNNN)
OOOO . PPPP))
(NOT (ROTATEF (CAADAR FOO) (CAADAR BAR) (CAADAR BAZ)
(CAADAR BLETCH)))
(EQUAL FOO
'((((A . B) C . D) (EE . F) G . H) ((I . J) K . L) (M . N)
O . P))
(EQUAL BAR
'((((AA . BB) CC . DD) (EEE . FF) GG . HH)
((II . JJ) KK . LL) (MM . NN) OO . PP))
(EQUAL BAZ
'((((AAA . BBB) CCC . DDD) (EEEE . FFF) GGG . HHH)
((III . JJJ) KKK . LLL) (MMM . NNN) OOO . PPP))
(EQUAL BLETCH
'((((AAAA . BBBB) CCCC . DDDD) (E . FFFF) GGGG . HHHH)
((IIII . JJJJ) KKKK . LLLL) (MMMM . NNNN) OOOO . PPPP))))
(DO-TEST ROTATEF-CAADDR
(AND (SETQ FOO '((((A . B) C . D) (E . F) G . H) ((I . J) K . L) (M . N)
O . P))
(SETQ BAR '((((AA . BB) CC . DD) (EE . FF) GG . HH)
((II . JJ) KK . LL) (MM . NN) OO . PP))
(SETQ BAZ '((((AAA . BBB) CCC . DDD) (EEE . FFF) GGG . HHH)
((III . JJJ) KKK . LLL) (MMM . NNN) OOO . PPP))
(SETQ BLETCH '((((AAAA . BBBB) CCCC . DDDD) (EEEE . FFFF)
GGGG . HHHH)
((IIII . JJJJ) KKKK . LLLL) (MMMM . NNNN)
OOOO . PPPP))
(NOT (ROTATEF (CAADDR FOO) (CAADDR BAR) (CAADDR BAZ)
(CAADDR BLETCH)))
(EQUAL FOO
'((((A . B) C . D) (E . F) G . H) ((I . J) K . L) (MM . N)
O . P))
(EQUAL BAR
'((((AA . BB) CC . DD) (EE . FF) GG . HH) ((II . JJ) KK . LL)
(MMM . NN) OO . PP))
(EQUAL BAZ
'((((AAA . BBB) CCC . DDD) (EEE . FFF) GGG . HHH)
((III . JJJ) KKK . LLL) (MMMM . NNN) OOO . PPP))
(EQUAL BLETCH
'((((AAAA . BBBB) CCCC . DDDD) (EEEE . FFFF) GGGG . HHHH)
((IIII . JJJJ) KKKK . LLLL) (M . NNNN) OOOO . PPPP))))
(DO-TEST ROTATEF-CADAAR
(AND (SETQ FOO '((((A . B) C . D) (E . F) G . H) ((I . J) K . L) (M . N)
O . P))
(SETQ BAR '((((AA . BB) CC . DD) (EE . FF) GG . HH)
((II . JJ) KK . LL) (MM . NN) OO . PP))
(SETQ BAZ '((((AAA . BBB) CCC . DDD) (EEE . FFF) GGG . HHH)
((III . JJJ) KKK . LLL) (MMM . NNN) OOO . PPP))
(SETQ BLETCH '((((AAAA . BBBB) CCCC . DDDD) (EEEE . FFFF)
GGGG . HHHH)
((IIII . JJJJ) KKKK . LLLL) (MMMM . NNNN)
OOOO . PPPP))
(NOT (ROTATEF (CADAAR FOO) (CADAAR BAR) (CADAAR BAZ)
(CADAAR BLETCH)))
(EQUAL FOO
'((((A . B) CC . D) (E . F) G . H) ((I . J) K . L) (M . N)
O . P))
(EQUAL BAR
'((((AA . BB) CCC . DD) (EE . FF) GG . HH)
((II . JJ) KK . LL) (MM . NN) OO . PP))
(EQUAL BAZ
'((((AAA . BBB) CCCC . DDD) (EEE . FFF) GGG . HHH)
((III . JJJ) KKK . LLL) (MMM . NNN) OOO . PPP))
(EQUAL BLETCH
'((((AAAA . BBBB) C . DDDD) (EEEE . FFFF) GGGG . HHHH)
((IIII . JJJJ) KKKK . LLLL) (MMMM . NNNN) OOOO . PPPP))))
(DO-TEST ROTATEF-CADADR
(AND (SETQ FOO '((((A . B) C . D) (E . F) G . H) ((I . J) K . L) (M . N)
O . P))
(SETQ BAR '((((AA . BB) CC . DD) (EE . FF) GG . HH)
((II . JJ) KK . LL) (MM . NN) OO . PP))
(SETQ BAZ '((((AAA . BBB) CCC . DDD) (EEE . FFF) GGG . HHH)
((III . JJJ) KKK . LLL) (MMM . NNN) OOO . PPP))
(SETQ BLETCH '((((AAAA . BBBB) CCCC . DDDD) (EEEE . FFFF)
GGGG . HHHH)
((IIII . JJJJ) KKKK . LLLL) (MMMM . NNNN)
OOOO . PPPP))
(NOT (ROTATEF (CADADR FOO) (CADADR BAR) (CADADR BAZ)
(CADADR BLETCH)))
(EQUAL FOO
'((((A . B) C . D) (E . F) G . H) ((I . J) KK . L) (M . N)
O . P))
(EQUAL BAR
'((((AA . BB) CC . DD) (EE . FF) GG . HH)
((II . JJ) KKK . LL) (MM . NN) OO . PP))
(EQUAL BAZ
'((((AAA . BBB) CCC . DDD) (EEE . FFF) GGG . HHH)
((III . JJJ) KKKK . LLL) (MMM . NNN) OOO . PPP))
(EQUAL BLETCH
'((((AAAA . BBBB) CCCC . DDDD) (EEEE . FFFF) GGGG . HHHH)
((IIII . JJJJ) K . LLLL) (MMMM . NNNN) OOOO . PPPP))))
(DO-TEST ROTATEF-CADDAR
(AND (SETQ FOO '((((A . B) C . D) (E . F) G . H) ((I . J) K . L) (M . N)
O . P))
(SETQ BAR '((((AA . BB) CC . DD) (EE . FF) GG . HH)
((II . JJ) KK . LL) (MM . NN) OO . PP))
(SETQ BAZ '((((AAA . BBB) CCC . DDD) (EEE . FFF) GGG . HHH)
((III . JJJ) KKK . LLL) (MMM . NNN) OOO . PPP))
(SETQ BLETCH '((((AAAA . BBBB) CCCC . DDDD) (EEEE . FFFF)
GGGG . HHHH)
((IIII . JJJJ) KKKK . LLLL) (MMMM . NNNN)
OOOO . PPPP))
(NOT (ROTATEF (CADDAR FOO) (CADDAR BAR) (CADDAR BAZ)
(CADDAR BLETCH)))
(EQUAL FOO
'((((A . B) C . D) (E . F) GG . H) ((I . J) K . L) (M . N)
O . P))
(EQUAL BAR
'((((AA . BB) CC . DD) (EE . FF) GGG . HH)
((II . JJ) KK . LL) (MM . NN) OO . PP))
(EQUAL BAZ
'((((AAA . BBB) CCC . DDD) (EEE . FFF) GGGG . HHH)
((III . JJJ) KKK . LLL) (MMM . NNN) OOO . PPP))
(EQUAL BLETCH
'((((AAAA . BBBB) CCCC . DDDD) (EEEE . FFFF) G . HHHH)
((IIII . JJJJ) KKKK . LLLL) (MMMM . NNNN) OOOO . PPPP))))
(DO-TEST ROTATEF-CADDDR
(AND (SETQ FOO '((((A . B) C . D) (E . F) G . H) ((I . J) K . L) (M . N)
O . P))
(SETQ BAR '((((AA . BB) CC . DD) (EE . FF) GG . HH)
((II . JJ) KK . LL) (MM . NN) OO . PP))
(SETQ BAZ '((((AAA . BBB) CCC . DDD) (EEE . FFF) GGG . HHH)
((III . JJJ) KKK . LLL) (MMM . NNN) OOO . PPP))
(SETQ BLETCH '((((AAAA . BBBB) CCCC . DDDD) (EEEE . FFFF)
GGGG . HHHH)
((IIII . JJJJ) KKKK . LLLL) (MMMM . NNNN)
OOOO . PPPP))
(NOT (ROTATEF (CADDDR FOO) (CADDDR BAR) (CADDDR BAZ)
(CADDDR BLETCH)))
(EQUAL FOO
'((((A . B) C . D) (E . F) G . H) ((I . J) K . L) (M . N)
OO . P))
(EQUAL BAR
'((((AA . BB) CC . DD) (EE . FF) GG . HH) ((II . JJ) KK . LL)
(MM . NN) OOO . PP))
(EQUAL BAZ
'((((AAA . BBB) CCC . DDD) (EEE . FFF) GGG . HHH)
((III . JJJ) KKK . LLL) (MMM . NNN) OOOO . PPP))
(EQUAL BLETCH
'((((AAAA . BBBB) CCCC . DDDD) (EEEE . FFFF) GGGG . HHHH)
((IIII . JJJJ) KKKK . LLLL) (MMMM . NNNN) O . PPPP))))
(DO-TEST ROTATEF-CDAAAR
(AND (SETQ FOO '((((A . B) C . D) (E . F) G . H) ((I . J) K . L) (M . N)
O . P))
(SETQ BAR '((((AA . BB) CC . DD) (EE . FF) GG . HH)
((II . JJ) KK . LL) (MM . NN) OO . PP))
(SETQ BAZ '((((AAA . BBB) CCC . DDD) (EEE . FFF) GGG . HHH)
((III . JJJ) KKK . LLL) (MMM . NNN) OOO . PPP))
(SETQ BLETCH '((((AAAA . BBBB) CCCC . DDDD) (EEEE . FFFF)
GGGG . HHHH)
((IIII . JJJJ) KKKK . LLLL) (MMMM . NNNN)
OOOO . PPPP))
(NOT (ROTATEF (CDAAAR FOO) (CDAAAR BAR) (CDAAAR BAZ)
(CDAAAR BLETCH)))
(EQUAL FOO
'((((A . BB) C . D) (E . F) G . H) ((I . J) K . L) (M . N)
O . P))
(EQUAL BAR
'((((AA . BBB) CC . DD) (EE . FF) GG . HH)
((II . JJ) KK . LL) (MM . NN) OO . PP))
(EQUAL BAZ
'((((AAA . BBBB) CCC . DDD) (EEE . FFF) GGG . HHH)
((III . JJJ) KKK . LLL) (MMM . NNN) OOO . PPP))
(EQUAL BLETCH
'((((AAAA . B) CCCC . DDDD) (EEEE . FFFF) GGGG . HHHH)
((IIII . JJJJ) KKKK . LLLL) (MMMM . NNNN) OOOO . PPPP))))
(DO-TEST ROTATEF-CDADDR
(AND (SETQ FOO '((((A . B) C . D) (E . F) G . H) ((I . J) K . L) (M . N)
O . P))
(SETQ BAR '((((AA . BB) CC . DD) (EE . FF) GG . HH)
((II . JJ) KK . LL) (MM . NN) OO . PP))
(SETQ BAZ '((((AAA . BBB) CCC . DDD) (EEE . FFF) GGG . HHH)
((III . JJJ) KKK . LLL) (MMM . NNN) OOO . PPP))
(SETQ BLETCH '((((AAAA . BBBB) CCCC . DDDD) (EEEE . FFFF)
GGGG . HHHH)
((IIII . JJJJ) KKKK . LLLL) (MMMM . NNNN)
OOOO . PPPP))
(NOT (ROTATEF (CDADDR FOO) (CDADDR BAR) (CDADDR BAZ)
(CDADDR BLETCH)))
(EQUAL FOO
'((((A . B) C . D) (E . F) G . H) ((I . J) K . L) (M . NN)
O . P))
(EQUAL BAR
'((((AA . BB) CC . DD) (EE . FF) GG . HH) ((II . JJ) KK . LL)
(MM . NNN) OO . PP))
(EQUAL BAZ
'((((AAA . BBB) CCC . DDD) (EEE . FFF) GGG . HHH)
((III . JJJ) KKK . LLL) (MMM . NNNN) OOO . PPP))
(EQUAL BLETCH
'((((AAAA . BBBB) CCCC . DDDD) (EEEE . FFFF) GGGG . HHHH)
((IIII . JJJJ) KKKK . LLLL) (MMMM . N) OOOO . PPPP))))
(DO-TEST ROTATEF-CDDAAR
(AND (SETQ FOO '((((A . B) C . D) (E . F) G . H) ((I . J) K . L) (M . N)
O . P))
(SETQ BAR '((((AA . BB) CC . DD) (EE . FF) GG . HH)
((II . JJ) KK . LL) (MM . NN) OO . PP))
(SETQ BAZ '((((AAA . BBB) CCC . DDD) (EEE . FFF) GGG . HHH)
((III . JJJ) KKK . LLL) (MMM . NNN) OOO . PPP))
(SETQ BLETCH '((((AAAA . BBBB) CCCC . DDDD) (EEEE . FFFF)
GGGG . HHHH)
((IIII . JJJJ) KKKK . LLLL) (MMMM . NNNN)
OOOO . PPPP))
(NOT (ROTATEF (CDDAAR FOO) (CDDAAR BAR) (CDDAAR BAZ)
(CDDAAR BLETCH)))
(EQUAL FOO
'((((A . B) C . DD) (E . F) G . H) ((I . J) K . L) (M . N)
O . P))
(EQUAL BAR
'((((AA . BB) CC . DDD) (EE . FF) GG . HH)
((II . JJ) KK . LL) (MM . NN) OO . PP))
(EQUAL BAZ
'((((AAA . BBB) CCC . DDDD) (EEE . FFF) GGG . HHH)
((III . JJJ) KKK . LLL) (MMM . NNN) OOO . PPP))
(EQUAL BLETCH
'((((AAAA . BBBB) CCCC . D) (EEEE . FFFF) GGGG . HHHH)
((IIII . JJJJ) KKKK . LLLL) (MMMM . NNNN) OOOO . PPPP))))
(DO-TEST ROTATEF-CDDADR
(AND (SETQ FOO '((((A . B) C . D) (E . F) G . H) ((I . J) K . L) (M . N)
O . P))
(SETQ BAR '((((AA . BB) CC . DD) (EE . FF) GG . HH)
((II . JJ) KK . LL) (MM . NN) OO . PP))
(SETQ BAZ '((((AAA . BBB) CCC . DDD) (EEE . FFF) GGG . HHH)
((III . JJJ) KKK . LLL) (MMM . NNN) OOO . PPP))
(SETQ BLETCH '((((AAAA . BBBB) CCCC . DDDD) (EEEE . FFFF)
GGGG . HHHH)
((IIII . JJJJ) KKKK . LLLL) (MMMM . NNNN)
OOOO . PPPP))
(NOT (ROTATEF (CDDADR FOO) (CDDADR BAR) (CDDADR BAZ)
(CDDADR BLETCH)))
(EQUAL FOO
'((((A . B) C . D) (E . F) G . H) ((I . J) K . LL) (M . N)
O . P))
(EQUAL BAR
'((((AA . BB) CC . DD) (EE . FF) GG . HH)
((II . JJ) KK . LLL) (MM . NN) OO . PP))
(EQUAL BAZ
'((((AAA . BBB) CCC . DDD) (EEE . FFF) GGG . HHH)
((III . JJJ) KKK . LLLL) (MMM . NNN) OOO . PPP))
(EQUAL BLETCH
'((((AAAA . BBBB) CCCC . DDDD) (EEEE . FFFF) GGGG . HHHH)
((IIII . JJJJ) KKKK . L) (MMMM . NNNN) OOOO . PPPP))))
(DO-TEST ROTATEF-CDDDAR
(AND (SETQ FOO '((((A . B) C . D) (E . F) G . H) ((I . J) K . L) (M . N)
O . P))
(SETQ BAR '((((AA . BB) CC . DD) (EE . FF) GG . HH)
((II . JJ) KK . LL) (MM . NN) OO . PP))
(SETQ BAZ '((((AAA . BBB) CCC . DDD) (EEE . FFF) GGG . HHH)
((III . JJJ) KKK . LLL) (MMM . NNN) OOO . PPP))
(SETQ BLETCH '((((AAAA . BBBB) CCCC . DDDD) (EEEE . FFFF)
GGGG . HHHH)
((IIII . JJJJ) KKKK . LLLL) (MMMM . NNNN)
OOOO . PPPP))
(NOT (ROTATEF (CDDDAR FOO) (CDDDAR BAR) (CDDDAR BAZ)
(CDDDAR BLETCH)))
(EQUAL FOO
'((((A . B) C . D) (E . F) G . HH) ((I . J) K . L) (M . N)
O . P))
(EQUAL BAR
'((((AA . BB) CC . DD) (EE . FF) GG . HHH)
((II . JJ) KK . LL) (MM . NN) OO . PP))
(EQUAL BAZ
'((((AAA . BBB) CCC . DDD) (EEE . FFF) GGG . HHHH)
((III . JJJ) KKK . LLL) (MMM . NNN) OOO . PPP))
(EQUAL BLETCH
'((((AAAA . BBBB) CCCC . DDDD) (EEEE . FFFF) GGGG . H)
((IIII . JJJJ) KKKK . LLLL) (MMMM . NNNN) OOOO . PPPP))))
(DO-TEST ROTATEF-CDDDDR
(AND (SETQ FOO '((((A . B) C . D) (E . F) G . H) ((I . J) K . L) (M . N)
O . P))
(SETQ BAR '((((AA . BB) CC . DD) (EE . FF) GG . HH)
((II . JJ) KK . LL) (MM . NN) OO . PP))
(SETQ BAZ '((((AAA . BBB) CCC . DDD) (EEE . FFF) GGG . HHH)
((III . JJJ) KKK . LLL) (MMM . NNN) OOO . PPP))
(SETQ BLETCH '((((AAAA . BBBB) CCCC . DDDD) (EEEE . FFFF)
GGGG . HHHH)
((IIII . JJJJ) KKKK . LLLL) (MMMM . NNNN)
OOOO . PPPP))
(NOT (ROTATEF (CDDDDR FOO) (CDDDDR BAR) (CDDDDR BAZ)
(CDDDDR BLETCH)))
(EQUAL FOO
'((((A . B) C . D) (E . F) G . H) ((I . J) K . L) (M . N)
O . PP))
(EQUAL BAR
'((((AA . BB) CC . DD) (EE . FF) GG . HH) ((II . JJ) KK . LL)
(MM . NN) OO . PPP))
(EQUAL BAZ
'((((AAA . BBB) CCC . DDD) (EEE . FFF) GGG . HHH)
((III . JJJ) KKK . LLL) (MMM . NNN) OOO . PPPP))
(EQUAL BLETCH
'((((AAAA . BBBB) CCCC . DDDD) (EEEE . FFFF) GGGG . HHHH)
((IIII . JJJJ) KKKK . LLLL) (MMMM . NNNN) OOOO . P))))
(DO-TEST ROTATEF-FIRST
(AND (SETQ FOO '(A B C D E F G H I J))
(SETQ BAR '(AA BB CC DD EE FF GG HH II JJ))
(SETQ BAZ '(AAA BBB CCC DDD EEE FFF GGG HHH III JJJ))
(SETQ BLETCH '(AAAA BBBB CCCC DDDD EEEE FFFF GGGG HHHH IIII JJJJ))
(NOT (ROTATEF (FIRST FOO) (FIRST BAR) (FIRST BAZ) (FIRST BLETCH)))
(EQUAL FOO '(AA B C D E F G H I J))
(EQUAL BAR '(AAA BB CC DD EE FF GG HH II JJ))
(EQUAL BAZ '(AAAA BBB CCC DDD EEE FFF GGG HHH III JJJ))
(EQUAL BLETCH '(A BBBB CCCC DDDD EEEE FFFF GGGG HHHH IIII JJJJ))))
(DO-TEST ROTATEF-SECOND
(AND (SETQ FOO '(A B C D E F G H I J))
(SETQ BAR '(AA BB CC DD EE FF GG HH II JJ))
(SETQ BAZ '(AAA BBB CCC DDD EEE FFF GGG HHH III JJJ))
(SETQ BLETCH '(AAAA BBBB CCCC DDDD EEEE FFFF GGGG HHHH IIII JJJJ))
(NOT (ROTATEF (SECOND FOO) (SECOND BAR) (SECOND BAZ)
(SECOND BLETCH)))
(EQUAL FOO '(A BB C D E F G H I J))
(EQUAL BAR '(AA BBB CC DD EE FF GG HH II JJ))
(EQUAL BAZ '(AAA BBBB CCC DDD EEE FFF GGG HHH III JJJ))
(EQUAL BLETCH '(AAAA B CCCC DDDD EEEE FFFF GGGG HHHH IIII JJJJ))))
(DO-TEST ROTATEF-THIRD
(AND (SETQ FOO '(A B C D E F G H I J))
(SETQ BAR '(AA BB CC DD EE FF GG HH II JJ))
(SETQ BAZ '(AAA BBB CCC DDD EEE FFF GGG HHH III JJJ))
(SETQ BLETCH '(AAAA BBBB CCCC DDDD EEEE FFFF GGGG HHHH IIII JJJJ))
(NOT (ROTATEF (THIRD FOO) (THIRD BAR) (THIRD BAZ) (THIRD BLETCH)))
(EQUAL FOO '(A B CC D E F G H I J))
(EQUAL BAR '(AA BB CCC DD EE FF GG HH II JJ))
(EQUAL BAZ '(AAA BBB CCCC DDD EEE FFF GGG HHH III JJJ))
(EQUAL BLETCH '(AAAA BBBB C DDDD EEEE FFFF GGGG HHHH IIII JJJJ))))
(DO-TEST ROTATEF-FOURTH
(AND (SETQ FOO '(A B C D E F G H I J))
(SETQ BAR '(AA BB CC DD EE FF GG HH II JJ))
(SETQ BAZ '(AAA BBB CCC DDD EEE FFF GGG HHH III JJJ))
(SETQ BLETCH '(AAAA BBBB CCCC DDDD EEEE FFFF GGGG HHHH IIII JJJJ))
(NOT (ROTATEF (FOURTH FOO) (FOURTH BAR) (FOURTH BAZ)
(FOURTH BLETCH)))
(EQUAL FOO '(A B C DD E F G H I J))
(EQUAL BAR '(AA BB CC DDD EE FF GG HH II JJ))
(EQUAL BAZ '(AAA BBB CCC DDDD EEE FFF GGG HHH III JJJ))
(EQUAL BLETCH '(AAAA BBBB CCCC D EEEE FFFF GGGG HHHH IIII JJJJ))))
(DO-TEST ROTATEF-FIFTH
(AND (SETQ FOO '(A B C D E F G H I J))
(SETQ BAR '(AA BB CC DD EE FF GG HH II JJ))
(SETQ BAZ '(AAA BBB CCC DDD EEE FFF GGG HHH III JJJ))
(SETQ BLETCH '(AAAA BBBB CCCC DDDD EEEE FFFF GGGG HHHH IIII JJJJ))
(NOT (ROTATEF (FIFTH FOO) (FIFTH BAR) (FIFTH BAZ) (FIFTH BLETCH)))
(EQUAL FOO '(A B C D EE F G H I J))
(EQUAL BAR '(AA BB CC DD EEE FF GG HH II JJ))
(EQUAL BAZ '(AAA BBB CCC DDD EEEE FFF GGG HHH III JJJ))
(EQUAL BLETCH '(AAAA BBBB CCCC DDDD E FFFF GGGG HHHH IIII JJJJ))))
(DO-TEST ROTATEF-SIXTH
(AND (SETQ FOO '(A B C D E F G H I J))
(SETQ BAR '(AA BB CC DD EE FF GG HH II JJ))
(SETQ BAZ '(AAA BBB CCC DDD EEE FFF GGG HHH III JJJ))
(SETQ BLETCH '(AAAA BBBB CCCC DDDD EEEE FFFF GGGG HHHH IIII JJJJ))
(NOT (ROTATEF (SIXTH FOO) (SIXTH BAR) (SIXTH BAZ) (SIXTH BLETCH)))
(EQUAL FOO '(A B C D E FF G H I J))
(EQUAL BAR '(AA BB CC DD EE FFF GG HH II JJ))
(EQUAL BAZ '(AAA BBB CCC DDD EEE FFFF GGG HHH III JJJ))
(EQUAL BLETCH '(AAAA BBBB CCCC DDDD EEEE F GGGG HHHH IIII JJJJ))))
(DO-TEST ROTATEF-SEVENTH
(AND (SETQ FOO '(A B C D E F G H I J))
(SETQ BAR '(AA BB CC DD EE FF GG HH II JJ))
(SETQ BAZ '(AAA BBB CCC DDD EEE FFF GGG HHH III JJJ))
(SETQ BLETCH '(AAAA BBBB CCCC DDDD EEEE FFFF GGGG HHHH IIII JJJJ))
(NOT (ROTATEF (SEVENTH FOO) (SEVENTH BAR) (SEVENTH BAZ)
(SEVENTH BLETCH)))
(EQUAL FOO '(A B C D E F GG H I J))
(EQUAL BAR '(AA BB CC DD EE FF GGG HH II JJ))
(EQUAL BAZ '(AAA BBB CCC DDD EEE FFF GGGG HHH III JJJ))
(EQUAL BLETCH '(AAAA BBBB CCCC DDDD EEEE FFFF G HHHH IIII JJJJ))))
(DO-TEST ROTATEF-EIGHTH
(AND (SETQ FOO '(A B C D E F G H I J))
(SETQ BAR '(AA BB CC DD EE FF GG HH II JJ))
(SETQ BAZ '(AAA BBB CCC DDD EEE FFF GGG HHH III JJJ))
(SETQ BLETCH '(AAAA BBBB CCCC DDDD EEEE FFFF GGGG HHHH IIII JJJJ))
(NOT (ROTATEF (EIGHTH FOO) (EIGHTH BAR) (EIGHTH BAZ)
(EIGHTH BLETCH)))
(EQUAL FOO '(A B C D E F G HH I J))
(EQUAL BAR '(AA BB CC DD EE FF GG HHH II JJ))
(EQUAL BAZ '(AAA BBB CCC DDD EEE FFF GGG HHHH III JJJ))
(EQUAL BLETCH '(AAAA BBBB CCCC DDDD EEEE FFFF GGGG H IIII JJJJ))))
(DO-TEST ROTATEF-NINTH
(AND (SETQ FOO '(A B C D E F G H I J))
(SETQ BAR '(AA BB CC DD EE FF GG HH II JJ))
(SETQ BAZ '(AAA BBB CCC DDD EEE FFF GGG HHH III JJJ))
(SETQ BLETCH '(AAAA BBBB CCCC DDDD EEEE FFFF GGGG HHHH IIII JJJJ))
(NOT (ROTATEF (NINTH FOO) (NINTH BAR) (NINTH BAZ) (NINTH BLETCH)))
(EQUAL FOO '(A B C D E F G H II J))
(EQUAL BAR '(AA BB CC DD EE FF GG HH III JJ))
(EQUAL BAZ '(AAA BBB CCC DDD EEE FFF GGG HHH IIII JJJ))
(EQUAL BLETCH '(AAAA BBBB CCCC DDDD EEEE FFFF GGGG HHHH I JJJJ))))
(DO-TEST ROTATEF-TENTH
(AND (SETQ FOO '(A B C D E F G H I J))
(SETQ BAR '(AA BB CC DD EE FF GG HH II JJ))
(SETQ BAZ '(AAA BBB CCC DDD EEE FFF GGG HHH III JJJ))
(SETQ BLETCH '(AAAA BBBB CCCC DDDD EEEE FFFF GGGG HHHH IIII JJJJ))
(NOT (ROTATEF (TENTH FOO) (TENTH BAR) (TENTH BAZ) (TENTH BLETCH)))
(EQUAL FOO '(A B C D E F G H I JJ))
(EQUAL BAR '(AA BB CC DD EE FF GG HH II JJJ))
(EQUAL BAZ '(AAA BBB CCC DDD EEE FFF GGG HHH III JJJJ))
(EQUAL BLETCH '(AAAA BBBB CCCC DDDD EEEE FFFF GGGG HHHH IIII J))))
(DO-TEST ROTATEF-REST
(AND (SETQ FOO '(A B C D E F G H I J))
(SETQ BAR '(AA BB CC DD EE FF GG HH II JJ))
(SETQ BAZ '(AAA BBB CCC DDD EEE FFF GGG HHH III JJJ))
(SETQ BLETCH '(AAAA BBBB CCCC DDDD EEEE FFFF GGGG HHHH IIII JJJJ))
(NOT (ROTATEF (REST FOO) (REST BAR) (REST BAZ) (REST BLETCH)))
(EQUAL FOO '(A BB CC DD EE FF GG HH II JJ))
(EQUAL BAR '(AA BBB CCC DDD EEE FFF GGG HHH III JJJ))
(EQUAL BAZ '(AAA BBBB CCCC DDDD EEEE FFFF GGGG HHHH IIII JJJJ))
(EQUAL BLETCH '(AAAA B C D E F G H I J))))
(DO-TEST ROTATEF-NTH
(AND (SETQ FOO '(A B C D E F G H I J))
(SETQ BAR '(AA BB CC DD EE FF GG HH II JJ))
(SETQ BAZ '(AAA BBB CCC DDD EEE FFF GGG HHH III JJJ))
(SETQ BLETCH '(AAAA BBBB CCCC DDDD EEEE FFFF GGGG HHHH IIII JJJJ))
(NOT (ROTATEF (NTH 6 FOO) (NTH 6 BAR) (NTH 6 BAZ) (NTH 6 BLETCH)))
(EQUAL FOO '(A B C D E F GG H I J))
(EQUAL BAR '(AA BB CC DD EE FF GGG HH II JJ))
(EQUAL BAZ '(AAA BBB CCC DDD EEE FFF GGGG HHH III JJJ))
(EQUAL BLETCH '(AAAA BBBB CCCC DDDD EEEE FFFF G HHHH IIII JJJJ))))
(DO-TEST ROTATEF-NTHCDR
(AND (SETQ FOO '(A B C D E F G H I J))
(SETQ BAR '(AA BB CC DD EE FF GG HH II JJ))
(SETQ BAZ '(AAA BBB CCC DDD EEE FFF GGG HHH III JJJ))
(SETQ BLETCH '(AAAA BBBB CCCC DDDD EEEE FFFF GGGG HHHH IIII JJJJ))
(NOT (ROTATEF (NTHCDR 6 FOO) (NTHCDR 6 BAR) (NTHCDR 6 BAZ)
(NTHCDR 6 BLETCH)))
(EQUAL FOO '(A B C D E F GG HH II JJ))
(EQUAL BAR '(AA BB CC DD EE FF GGG HHH III JJJ))
(EQUAL BAZ '(AAA BBB CCC DDD EEE FFF GGGG HHHH IIII JJJJ))
(EQUAL BLETCH '(AAAA BBBB CCCC DDDD EEEE FFFF G H I J))))
(DO-TEST ROTATEF-AREF
(AND (SETQ FOO (MAKE-ARRAY 10 :INITIAL-CONTENTS '(A B C D E F G H I J)))
(SETQ BAR (MAKE-ARRAY 10 :INITIAL-CONTENTS
'(AA BB CC DD EE FF GG HH II JJ)))
(SETQ BAZ (MAKE-ARRAY 10 :INITIAL-CONTENTS
'(AAA BBB CCC DDD EEE FFF GGG HHHH IIII
JJJJ)))
(SETQ BLETCH (MAKE-ARRAY 10 :INITIAL-CONTENTS
'(AAAA BBBB CCCC DDDD EEEE FFFF GGGG HHHH
IIII JJJJ)))
(NOT (ROTATEF (AREF FOO 6) (AREF BAR 6) (AREF BAZ 6)
(AREF BLETCH 6)))
(EQ (AREF FOO 6) 'GG)
(EQ (AREF BAR 6) 'GGG)
(EQ (AREF BAZ 6) 'GGGG)
(EQ (AREF BLETCH 6) 'G)))
(DO-TEST ROTATEF-SVREF
(AND (SETQ FOO (MAKE-ARRAY 10 :INITIAL-CONTENTS '(A B C D E F G H I J)))
(SETQ BAR (MAKE-ARRAY 10 :INITIAL-CONTENTS
'(AA BB CC DD EE FF GG HH II JJ)))
(SETQ BAZ (MAKE-ARRAY 10 :INITIAL-CONTENTS
'(AAA BBB CCC DDD EEE FFF GGG HHHH IIII
JJJJ)))
(SETQ BLETCH (MAKE-ARRAY 10 :INITIAL-CONTENTS
'(AAAA BBBB CCCC DDDD EEEE FFFF GGGG HHHH
IIII JJJJ)))
(NOT (ROTATEF (SVREF FOO 6) (SVREF BAR 6) (SVREF BAZ 6)
(SVREF BLETCH 6)))
(EQ (SVREF FOO 6) 'GG)
(EQ (SVREF BAR 6) 'GGG)
(EQ (SVREF BAZ 6) 'GGGG)
(EQ (SVREF BLETCH 6) 'G)))
(DO-TEST ROTATEF-GET
(AND (SETF (GET 'FOO 'A) 'B)
(SETF (GET 'BAR 'C) 'D)
(SETF (GET 'BAZ 'E) 'F)
(SETF (GET 'BLETCH 'G) 'H)
(NOT (ROTATEF (GET 'FOO 'A) (GET 'BAR 'C) (GET 'BAZ 'E)
(GET 'BLETCH 'G)))
(EQ (GET 'FOO 'A) 'D)
(EQ (GET 'BAR 'C) 'F)
(EQ (GET 'BAZ 'E) 'H)
(EQ (GET 'BLETCH 'G) 'B)))
(DO-TEST ROTATEF-GETF
(AND (SETQ FOO '(B C D E F))
(SETQ BAR '(H I J K L))
(SETQ BAZ '(M N O P Q))
(SETQ BLETCH '(R S T U V))
(NOT (ROTATEF (GETF FOO 'D) (GETF BAR 'J) (GETF BAZ 'O)
(GETF BLETCH 'T)))
(EQUAL FOO '(B C D K F))
(EQUAL BAR '(H I J P L))
(EQUAL BAZ '(M N O U Q))
(EQUAL BLETCH '(R S T E V))))
(DO-TEST ROTATEF-GETHASH
(AND (SETQ FOO (MAKE-HASH-TABLE))
(SETF (GETHASH 'A FOO) 'B)
(SETF (GETHASH 'C FOO) 'D)
(SETF (GETHASH 'E FOO) 'F)
(SETF (GETHASH 'G FOO) 'H)
(NOT (ROTATEF (GETHASH 'A FOO) (GETHASH 'C FOO) (GETHASH 'E FOO)
(GETHASH 'G FOO)))
(EQ (GETHASH 'A FOO) 'D)
(EQ (GETHASH 'C FOO) 'F)
(EQ (GETHASH 'E FOO) 'H)
(EQ (GETHASH 'G FOO) 'B)))
(DO-TEST ROTATEF-SYMBOL-FUNCTION
(AND (SETF (SYMBOL-FUNCTION 'FOO) '(LAMBDA (A) NIL))
(SETF (SYMBOL-FUNCTION 'BAR) '(LAMBDA (B) NIL))
(SETF (SYMBOL-FUNCTION 'BAZ) '(LAMBDA (C) NIL))
(SETF (SYMBOL-FUNCTION 'BLETCH) '(LAMBDA (D) NIL))
(NOT (ROTATEF (SYMBOL-FUNCTION 'FOO) (SYMBOL-FUNCTION 'BAR)
(SYMBOL-FUNCTION 'BAZ) (SYMBOL-FUNCTION 'BLETCH)))
(EQUAL (SYMBOL-FUNCTION 'FOO) '(LAMBDA (B) NIL))
(EQUAL (SYMBOL-FUNCTION 'BAR) '(LAMBDA (C) NIL))
(EQUAL (SYMBOL-FUNCTION 'BAZ) '(LAMBDA (D) NIL))
(EQUAL (SYMBOL-FUNCTION 'BLETCH) '(LAMBDA (A) NIL))))
(DO-TEST ROTATEF-SYMBOL-VALUE
(AND (SETF (SYMBOL-VALUE 'FOO) 1)
(SETF (SYMBOL-VALUE 'BAR) 2)
(SETF (SYMBOL-VALUE 'BAZ) 3)
(SETF (SYMBOL-VALUE 'BLETCH) 4)
(NOT (ROTATEF (SYMBOL-VALUE 'FOO) (SYMBOL-VALUE 'BAR)
(SYMBOL-VALUE 'BAZ) (SYMBOL-VALUE 'BLETCH)))
(EQ (SYMBOL-VALUE 'FOO) 2)
(EQ (SYMBOL-VALUE 'BAR) 3)
(EQ (SYMBOL-VALUE 'BAZ) 4)
(EQ (SYMBOL-VALUE 'BLETCH) 1)))
(DO-TEST ROTATEF-SYMBOL-PLIST
(AND (SETF (SYMBOL-PLIST 'FOO) '(A B C D))
(SETF (SYMBOL-PLIST 'BAR) '(E F G H))
(SETF (SYMBOL-PLIST 'BAZ) '(I J K L))
(SETF (SYMBOL-PLIST 'BLETCH) '(M N O P))
(NOT (ROTATEF (SYMBOL-PLIST 'FOO) (SYMBOL-PLIST 'BAR)
(SYMBOL-PLIST 'BAZ) (SYMBOL-PLIST 'BLETCH)))
(EQUAL (SYMBOL-PLIST 'FOO) '(E F G H))
(EQUAL (SYMBOL-PLIST 'BAR) '(I J K L))
(EQUAL (SYMBOL-PLIST 'BAZ) '(M N O P))
(EQUAL (SYMBOL-PLIST 'BLETCH) '(A B C D))))
(DO-TEST ROTATEF-MACRO-FUNCTION
(AND (SETQ FOO (GENTEMP "FOO"))
(SETQ BAR (GENTEMP "BAR"))
(SETQ BAZ (GENTEMP "BAZ"))
(SETQ BLETCH (GENTEMP "BLETCH"))
(SETF (MACRO-FUNCTION FOO) '(LAMBDA (A)
(BQUOTE (CONS (|,| A) (|,| A)))))
(SETF (MACRO-FUNCTION BAR) '(LAMBDA (B)
(BQUOTE (CONS (|,| B) (|,| B)))))
(SETF (MACRO-FUNCTION BAZ) '(LAMBDA (C)
(BQUOTE (CONS (|,| C) (|,| C)))))
(SETF (MACRO-FUNCTION BLETCH) '(LAMBDA
(D)
(BQUOTE (CONS (|,| D) (|,| D)))))
(NOT (ROTATEF (MACRO-FUNCTION FOO) (MACRO-FUNCTION BAR)
(MACRO-FUNCTION BAZ) (MACRO-FUNCTION BLETCH)))
(EQUAL (MACRO-FUNCTION FOO)
'(LAMBDA (B) (BQUOTE (CONS (|,| B) (|,| B)))))
(EQUAL (MACRO-FUNCTION BAR)
'(LAMBDA (C) (BQUOTE (CONS (|,| C) (|,| C)))))
(EQUAL (MACRO-FUNCTION BAZ)
'(LAMBDA (D) (BQUOTE (CONS (|,| D) (|,| D)))))
(EQUAL (MACRO-FUNCTION BLETCH)
'(LAMBDA (A) (BQUOTE (CONS (|,| A) (|,| A)))))))
(DO-TEST ROTATEF-CHAR
(AND (SETQ FOO "A-STRING")
(SETQ BAR "B-STRING")
(SETQ BAZ "C-STRING")
(SETQ BLETCH "D-STRING")
(NOT (ROTATEF (CHAR FOO 0) (CHAR BAR 0) (CHAR BAZ 0)
(CHAR BLETCH 0)))
(EQL (CHAR FOO 0) #\B)
(EQL (CHAR BAR 0) #\C)
(EQL (CHAR BAZ 0) #\D)
(EQL (CHAR BLETCH 0) #\A)))
(DO-TEST ROTATEF-SCHAR
(AND (SETQ FOO "A-STRING")
(SETQ BAR "B-STRING")
(SETQ BAZ "C-STRING")
(SETQ BLETCH "D-STRING")
(NOT (ROTATEF (SCHAR FOO 0) (SCHAR BAR 0) (SCHAR BAZ 0)
(SCHAR BLETCH 0)))
(EQL (SCHAR FOO 0) #\B)
(EQL (SCHAR BAR 0) #\C)
(EQL (SCHAR BAZ 0) #\D)
(EQL (SCHAR BLETCH 0) #\A)))
(DO-TEST ROTATEF-BIT
(AND (SETQ FOO #*01010101)
(SETQ BAR #*10101010)
(SETQ BAZ #*01010101)
(SETQ BLETCH #*10101010)
(NOT (ROTATEF (BIT FOO 1) (BIT BAR 1) (BIT BAZ 1) (BIT BLETCH 1)))
(EQL (BIT FOO 1) 0)
(EQL (BIT BAR 1) 1)
(EQL (BIT BAZ 1) 0)
(EQL (BIT BLETCH 1) 1)))
(DO-TEST ROTATEF-SBIT
(AND (SETQ FOO #*01010101)
(SETQ BAR #*10101010)
(SETQ BAZ #*01010101)
(SETQ BLETCH #*10101010)
(NOT (ROTATEF (SBIT FOO 1) (SBIT BAR 1) (SBIT BAZ 1) (SBIT BLETCH 1)))
(EQL (SBIT FOO 1) 0)
(EQL (SBIT BAR 1) 1)
(EQL (SBIT BAZ 1) 0)
(EQL (SBIT BLETCH 1) 1)))
(DO-TEST ROTATEF-ELT
; make sure setf-inverse optimizations aware of side-effects
(let* ((a '(1 2 3))
(b '(4 5 6))
(c a))
(rotatef (elt a 0) (elt (setq a b) 1))
(and (equal c '(5 2 3))
(equal b '(4 1 6)))))
STOP