diff --git a/ansi-tests/remove-duplicates.lsp b/ansi-tests/remove-duplicates.lsp index 28a8d6ad53f9825e07a3d72614aa96495b85a98d..90d61b545985ea370c4bb840c5240824bc16c661 100644 --- a/ansi-tests/remove-duplicates.lsp +++ b/ansi-tests/remove-duplicates.lsp @@ -329,7 +329,134 @@ (assert (string= s2 "abcdefgz")))) nil) +;;; Order of elements kept under EQUAL, EQUALP tests +(deftest remove-duplicates.2 + (let* ((x (list 'a)) + (y (list 'a)) + (result (remove-duplicates (list x y) :test 'equal))) + (values + result + (notnot (eql (car result) x)) + (notnot (eql (car result) y)))) + ((a)) nil t) + +(deftest remove-duplicates.2a + (let* ((x (list 'a)) + (y (list 'a)) + (result (remove-duplicates (list x 'x y) :test 'equal))) + (values + result + (notnot (eql (cadr result) x)) + (notnot (eql (cadr result) y)))) + (x (a)) nil t) + +(deftest remove-duplicates.3 + (let* ((x (list 'a)) + (y (list 'a)) + (result (remove-duplicates (list x y) :test 'equal :from-end t))) + (values + result + (notnot (eql (car result) x)) + (notnot (eql (car result) y)))) + ((a)) t nil) + +(deftest remove-duplicates.3a + (let* ((x (list 'a)) + (y (list 'a)) + (result (remove-duplicates (list x 'u 'v y) :test 'equal :from-end t))) + (values + result + (notnot (eql (car result) x)) + (notnot (eql (car result) y)))) + ((a) u v) t nil) + +(deftest remove-duplicates.4 + (let* ((x (list 'a)) + (y (list 'a)) + (result (remove-duplicates (list x y) :test 'equalp))) + (values + result + (notnot (eql (car result) x)) + (notnot (eql (car result) y)))) + ((a)) nil t) + +(deftest remove-duplicates.5 + (let* ((x (list 'a)) + (y (list 'a)) + (result (remove-duplicates (list x y) :test 'equalp :from-end t))) + (values + result + (notnot (eql (car result) x)) + (notnot (eql (car result) y)))) + ((a)) t nil) + +;;; Similar, but destructive + +(deftest delete-duplicates.2 + (let* ((x (list 'a)) + (y (list 'a)) + (result (delete-duplicates (list x y) :test 'equal))) + (values + result + (notnot (eql (car result) x)) + (notnot (eql (car result) y)))) + ((a)) nil t) + +(deftest delete-duplicates.2a + (let* ((x (list 'a)) + (y (list 'a)) + (result (delete-duplicates (list x 'x y) :test 'equal))) + (values + result + (notnot (eql (cadr result) x)) + (notnot (eql (cadr result) y)))) + (x (a)) nil t) + +(deftest delete-duplicates.3 + (let* ((x (list 'a)) + (y (list 'a)) + (result (delete-duplicates (list x y) :test 'equal :from-end t))) + (values + result + (notnot (eql (car result) x)) + (notnot (eql (car result) y)))) + ((a)) t nil) + +(deftest delete-duplicates.3a + (let* ((x (list 'a)) + (y (list 'a)) + (result (delete-duplicates (list x 'u 'v y) :test 'equal :from-end t))) + (values + result + (notnot (eql (car result) x)) + (notnot (eql (car result) y)))) + ((a) u v) t nil) + +(deftest delete-duplicates.4 + (let* ((x (list 'a)) + (y (list 'a)) + (result (delete-duplicates (list x y) :test 'equalp))) + (values + result + (notnot (eql (car result) x)) + (notnot (eql (car result) y)))) + ((a)) nil t) + +(deftest delete-duplicates.5 + (let* ((x (list 'a)) + (y (list 'a)) + (result (delete-duplicates (list x y) :test 'equalp :from-end t))) + (values + result + (notnot (eql (car result) x)) + (notnot (eql (car result) y)))) + ((a)) t nil) + + + + + \ No newline at end of file