Mercurial > hg > xemacs-beta
diff tests/automated/hash-table-tests.el @ 412:697ef44129c6 r21-2-14
Import from CVS: tag r21-2-14
author | cvs |
---|---|
date | Mon, 13 Aug 2007 11:20:41 +0200 |
parents | 74fd4e045ea6 |
children | 11054d720c21 |
line wrap: on
line diff
--- a/tests/automated/hash-table-tests.el Mon Aug 13 11:19:22 2007 +0200 +++ b/tests/automated/hash-table-tests.el Mon Aug 13 11:20:41 2007 +0200 @@ -37,41 +37,30 @@ (require 'test-harness)))) ;; Test all combinations of make-hash-table keywords -(dolist (test '(eq eql equal)) - (dolist (size '(0 1 100)) - (dolist (rehash-size '(1.1 9.9)) - (dolist (rehash-threshold '(0.2 .9)) - (dolist (weakness '(nil t key value)) +(dolist (type '(non-weak weak key-weak value-weak)) + (dolist (test '(eq eql equal)) + (dolist (size '(0 1 100)) + (dolist (rehash-size '(1.1 9.9)) + (dolist (rehash-threshold '(0.2 .9)) (dolist (data '(() (1 2) (1 2 3 4))) - (let ((ht (make-hash-table - :test test - :size size - :rehash-size rehash-size - :rehash-threshold rehash-threshold - :weakness weakness))) + (let ((ht (make-hash-table :test test + :type type + :size size + :rehash-size rehash-size + :rehash-threshold rehash-threshold))) (Assert (equal ht (car (let ((print-readably t)) (read-from-string (prin1-to-string ht)))))) (Assert (eq test (hash-table-test ht))) + (Assert (eq type (hash-table-type ht))) (Assert (<= size (hash-table-size ht))) (Assert (eql rehash-size (hash-table-rehash-size ht))) - (Assert (eql rehash-threshold (hash-table-rehash-threshold ht))) - (Assert (eq weakness (hash-table-weakness ht)))))))))) - -(loop for (fun weakness) in '((make-hashtable nil) - (make-weak-hashtable t) - (make-key-weak-hashtable key) - (make-value-weak-hashtable value)) - do (Assert (eq weakness (hash-table-weakness (funcall fun 10))))) + (Assert (eql rehash-threshold (hash-table-rehash-threshold ht)))))))))) -(loop for (type weakness) in '((non-weak nil) - (weak t) - (key-weak key) - (value-weak value)) - do (Assert (equal (make-hash-table :type type) - (make-hash-table :weakness weakness)))) - -(Assert (not (equal (make-hash-table :weakness nil) - (make-hash-table :weakness t)))) +(loop for (fun type) in '((make-hashtable non-weak) + (make-weak-hashtable weak) + (make-key-weak-hashtable key-weak) + (make-value-weak-hashtable value-weak)) + do (Assert (eq type (hash-table-type (funcall fun 10))))) (let ((ht (make-hash-table :size 20 :rehash-threshold .75 :test 'eq)) (size 80)) @@ -80,7 +69,6 @@ (Assert (eq 'eq (hash-table-test ht))) (Assert (eq 'non-weak (hash-table-type ht))) (Assert (eq 'non-weak (hashtable-type ht))) - (Assert (eq 'nil (hash-table-weakness ht))) (dotimes (j size) (puthash j (- j) ht) (Assert (eq (gethash j ht) (- j))) @@ -205,13 +193,13 @@ )) ;; Test that weak hash-tables are properly handled -(loop for (weakness expected-count expected-k-sum expected-v-sum) in - '((nil 6 38 25) - (t 3 6 9) - (key 4 38 9) - (value 4 6 25)) +(loop for (type expected-count expected-k-sum expected-v-sum) in + '((non-weak 6 38 25) + (weak 3 6 9) + (key-weak 4 38 9) + (value-weak 4 6 25)) do - (let* ((ht (make-hash-table :weakness weakness)) + (let* ((ht (make-hash-table :type type)) (my-obj (cons ht ht))) (garbage-collect) (puthash my-obj 1 ht) @@ -250,9 +238,9 @@ (Assert (= v-sum k-sum)))) ;;; Test reading and printing of hash-table objects -(let ((h1 #s(hashtable weakness t rehash-size 3.0 rehash-threshold .2 test eq data (1 2 3 4))) - (h2 #s(hash-table weakness t rehash-size 3.0 rehash-threshold .2 test eq data (1 2 3 4))) - (h3 (make-hash-table :weakness t :rehash-size 3.0 :rehash-threshold .2 :test 'eq))) +(let ((h1 #s(hashtable type weak rehash-size 3.0 rehash-threshold .2 test eq data (1 2 3 4))) + (h2 #s(hash-table type weak rehash-size 3.0 rehash-threshold .2 test eq data (1 2 3 4))) + (h3 (make-hash-table :type 'weak :rehash-size 3.0 :rehash-threshold .2 :test 'eq))) (Assert (equal h1 h2)) (Assert (not (equal h1 h3))) (puthash 1 2 h3) @@ -279,7 +267,3 @@ (clrhash h2) (Assert (equal h1 h2)) ) - -;;; Test sxhash -(Assert (= (sxhash "foo") (sxhash "foo"))) -(Assert (= (sxhash '(1 2 3)) (sxhash '(1 2 3))))