aboutsummaryrefslogtreecommitdiffstats
path: root/test/src/fns-tests.el
diff options
context:
space:
mode:
Diffstat (limited to 'test/src/fns-tests.el')
-rw-r--r--test/src/fns-tests.el28
1 files changed, 26 insertions, 2 deletions
diff --git a/test/src/fns-tests.el b/test/src/fns-tests.el
index 2623b4c1b93..6e8f1a1da9b 100644
--- a/test/src/fns-tests.el
+++ b/test/src/fns-tests.el
@@ -219,7 +219,7 @@
219 (should (equal 219 (should (equal
220 (sort (append (make-vector 100 1) nil) (lambda (x y) (> x y))) 220 (sort (append (make-vector 100 1) nil) (lambda (x y) (> x y)))
221 (append (make-vector 100 1) nil))) 221 (append (make-vector 100 1) nil)))
222 ;; sort a long list and vector with every pair reversed. 222 ;; Sort a long list and vector with every pair reversed.
223 (let ((vec (make-vector 100000 nil)) 223 (let ((vec (make-vector 100000 nil))
224 (logxor-vec (make-vector 100000 nil))) 224 (logxor-vec (make-vector 100000 nil)))
225 (dotimes (i 100000) 225 (dotimes (i 100000)
@@ -231,7 +231,7 @@
231 (should (equal 231 (should (equal
232 (sort (append logxor-vec nil) (lambda (x y) (< x y))) 232 (sort (append logxor-vec nil) (lambda (x y) (< x y)))
233 (append vec nil)))) 233 (append vec nil))))
234 ;; sort a list and vector with seven swaps 234 ;; Sort a list and vector with seven swaps.
235 (let ((vec (make-vector 100 nil)) 235 (let ((vec (make-vector 100 nil))
236 (swap-vec (make-vector 100 nil))) 236 (swap-vec (make-vector 100 nil)))
237 (dotimes (i 100) 237 (dotimes (i 100)
@@ -249,6 +249,30 @@
249 (should (equal 249 (should (equal
250 (sort (append swap-vec nil) (lambda (x y) (< x y))) 250 (sort (append swap-vec nil) (lambda (x y) (< x y)))
251 (append vec nil)))) 251 (append vec nil))))
252 ;; Check for possible corruption after GC.
253 (let* ((size 3000)
254 (complex-vec (make-vector size nil))
255 (vec (make-vector size nil))
256 (counter 0)
257 (my-counter (lambda ()
258 (if (< counter 500)
259 (cl-incf counter)
260 (setq counter 0)
261 (garbage-collect))))
262 (rand 1)
263 (generate-random
264 (lambda () (setq rand
265 (logand (+ (* rand 1103515245) 12345) 2147483647)))))
266 ;; Make a complex vector and its sorted version.
267 (dotimes (i size)
268 (let ((r (funcall generate-random)))
269 (aset complex-vec i (cons r "a"))
270 (aset vec i (cons r "a"))))
271 ;; Sort it.
272 (should (equal
273 (sort complex-vec
274 (lambda (x y) (funcall my-counter) (< (car x) (car y))))
275 (sort complex-vec 'car-less-than-car))))
252 ;; Check for sorting stability. 276 ;; Check for sorting stability.
253 (should (equal 277 (should (equal
254 (sort 278 (sort