comparison tests/automated/lisp-tests.el @ 5300:9f738305f80f

Accept sequences generally, not just lists, #'reverse, #'nreverse. src/ChangeLog addition: 2010-11-06 Aidan Kehoe <kehoea@parhasard.net> * bytecode.c (bytecode_nreverse): Call Fnreverse() if SEQUENCE is not a cons in this function. (Fnreverse, Freverse): Accept sequences, not just lists, in these functions. man/ChangeLog addition: 2010-11-06 Aidan Kehoe <kehoea@parhasard.net> * lispref/lists.texi (Rearrangement, Building Lists): Document that #'nreverse and #'reverse now accept sequences, not just lists, in this file. tests/ChangeLog addition: 2010-11-06 Aidan Kehoe <kehoea@parhasard.net> * automated/lisp-tests.el (list-nreverse): Check that #'reverse and #'nreverse handle non-list sequences properly.
author Aidan Kehoe <kehoea@parhasard.net>
date Sat, 06 Nov 2010 21:18:52 +0000
parents 28651c24b3f8
children c096d8051f89 46491edfd94a
comparison
equal deleted inserted replaced
5299:28651c24b3f8 5300:9f738305f80f
2482 (list (map-into (make-list 2048 nil) #'(lambda () (decf count)))) 2482 (list (map-into (make-list 2048 nil) #'(lambda () (decf count))))
2483 (expected (append list '(1)))) 2483 (expected (append list '(1))))
2484 (Assert (equal expected (merge 'list list '(1) #'<)) 2484 (Assert (equal expected (merge 'list list '(1) #'<))
2485 "checking merge's circularity checks are sane")) 2485 "checking merge's circularity checks are sane"))
2486 2486
2487 (flet ((list-nreverse (list)
2488 (do ((list1 list (cdr list1))
2489 (list2 nil (prog1 list1 (setcdr list1 list2))))
2490 ((atom list1) list2))))
2491 (let* ((integers (loop for i from 0 to 6000 collect i))
2492 (characters (mapcan #'(lambda (integer)
2493 (if (char-int-p integer)
2494 (list (int-char integer)))) integers))
2495 (fourth-bit #'(lambda (integer) (ash (logand #x10 integer) -4)))
2496 (bits (mapcar fourth-bit integers))
2497 (vector (vconcat integers))
2498 (string (concat characters))
2499 (bit-vector (bvconcat bits)))
2500 (Assert (equal (reverse vector)
2501 (vconcat (list-nreverse (copy-list integers)))))
2502 (Assert (eq vector (nreverse vector)))
2503 (Assert (equal vector (vconcat (list-nreverse (copy-list integers)))))
2504 (Assert (equal (reverse string)
2505 (concat (list-nreverse (copy-list characters)))))
2506 (Assert (eq string (nreverse string)))
2507 (Assert (equal string (concat (list-nreverse (copy-list characters)))))
2508 (Assert (eq bit-vector (nreverse bit-vector)))
2509 (Assert (equal (bvconcat (list-nreverse (copy-list bits))) bit-vector))
2510 (Assert (not (equal bit-vector
2511 (mapcar fourth-bit
2512 (loop for i from 0 to 6000 collect i)))))))
2513
2487 ;;; end of lisp-tests.el 2514 ;;; end of lisp-tests.el