(use list-utils test data-structures) (test-group "Lists" (define alst1 '((a 1) (b 2) (b 3) (c 4) (b 5) (a 6) (d 7))) (define alst2 '((a . 1) (b . 2) (b . 3) (c . 4) (b . 5) (a . 6) (d . 7))) (test-assert (length=0? '())) (test-assert (not (length=0? '(1)))) (test-assert (length=1? '(1))) (test-assert (not (length=1? '()))) (test-assert (not (length=1? '(1 2)))) (test-assert (length=2? '(1 2))) (test-assert (not (length=2? '()))) (test-assert (not (length=2? '(1)))) (test-assert (not (length=2? '(1 2 3)))) (test-assert (length>1? '(1 2))) (test-assert (not (length>1? '()))) (test-assert (not (length>1? '(1)))) (test '(1) (ensure-list '(1))) (test '(1) (ensure-list 1)) (test '(1) (not-null? '(1))) (test-assert (not (not-null? '()))) (let ((lst '(1 2))) (test 1 (shift!/set lst)) (test '(2) (identity lst)) (test 2 (shift!/set lst)) (test '() (identity lst)) (test-assert (not (shift!/set lst))) (test '() (identity lst)) ) (test '((a b) ((1) (2))) (receive (unzip-alist '((a 1) (b 2))))) (test '((a . 1) (b . 2)) (zip-alist '(a b) '(1 2))) (test '((a 1) (b 2)) (zip-alist '(a b) '((1) (2)))) (test '((a . 1) (b . 2)) (zip-alist '(a b) '(1 2))) (test '(a (1) b (2) b (3) c (4) b (5) a (6) d (7)) (alist->plist alst1)) (test '(a 1 b 2 b 3 c 4 b 5 a 6 d 7) (alist->plist alst2)) (test alst1 (plist->alist '(a (1) b (2) b (3) c (4) b (5) a (6) d (7)))) (test alst2 (plist->alist '(a 1 b 2 b 3 c 4 b 5 a 6 d 7))) (test '((a 1) (c 4) (b 5) (a 6) (d 7)) (alist-delete/count 'b alst1 eq? 2)) (test '((a 1) (c 4) (a 6) (d 7)) (alist-delete/count 'b alst1 eq?)) (test '((a 1) (b 2) (b 3) (c 4) (b 5) (a 6)) (alist-delete/count 'd alst1 eq?)) (test '((a 1) (b 2) (b 3) (b 5) (a 6) (d 7)) (alist-delete/count 'c alst1 eq?)) (test '((b 2) (b 3) (c 4) (b 5) (a 6) (d 7)) (alist-delete/count 'a alst1 eq? 1)) (test '((a 1) (c 4) (b 5) (a 6) (d 7)) (alist-delete!/count 'b alst1 eq? 2)) (test '((a 1) (c 4) (a 6) (d 7)) (alist-delete!/count 'b alst1 eq?)) (test '((a 1) (c 4) (a 6)) (alist-delete!/count 'd alst1 eq?)) (test '((a 1) (a 6)) (alist-delete!/count 'c alst1 eq?)) (test '((a 6)) (alist-delete!/count 'a alst1 eq? 1)) )