annotate tests/automated/weak-tests.el @ 4465:732b87cfabf2

Document Win32 symlink behaviour; adjust tests to take it into a/c. src/ChangeLog addition: 2008-05-21 Aidan Kehoe <kehoea@parhasard.net> * fileio.c (Fmake_symbolic_link): Document behaviour when the underlying OS doesn't support symbolic links. tests/ChangeLog addition: 2008-05-21 Aidan Kehoe <kehoea@parhasard.net> * automated/mule-tests.el (featurep): Make sure that working symlinks are available before testing their functionality. Also, don't bomb out on deleting the other temporary files if deleting the first threw an error.
author Aidan Kehoe <kehoea@parhasard.net>
date Wed, 21 May 2008 16:55:14 +0200
parents 7b628daa39d4
children 189fb67ca31a
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
890
7532e276a83a [xemacs-hg @ 2002-06-28 14:24:43 by michaels]
michaels
parents:
diff changeset
1 ;; Copyright (C) 1998 Free Software Foundation, Inc.
7532e276a83a [xemacs-hg @ 2002-06-28 14:24:43 by michaels]
michaels
parents:
diff changeset
2
7532e276a83a [xemacs-hg @ 2002-06-28 14:24:43 by michaels]
michaels
parents:
diff changeset
3 ;; Author: Mike Sperber <mike@xemacs.org>
7532e276a83a [xemacs-hg @ 2002-06-28 14:24:43 by michaels]
michaels
parents:
diff changeset
4 ;; Maintainer: Mike Sperber <mike@xemacs.org>
7532e276a83a [xemacs-hg @ 2002-06-28 14:24:43 by michaels]
michaels
parents:
diff changeset
5 ;; Created: 2002
7532e276a83a [xemacs-hg @ 2002-06-28 14:24:43 by michaels]
michaels
parents:
diff changeset
6 ;; Keywords: tests, database
7532e276a83a [xemacs-hg @ 2002-06-28 14:24:43 by michaels]
michaels
parents:
diff changeset
7
7532e276a83a [xemacs-hg @ 2002-06-28 14:24:43 by michaels]
michaels
parents:
diff changeset
8 ;; This file is part of XEmacs.
7532e276a83a [xemacs-hg @ 2002-06-28 14:24:43 by michaels]
michaels
parents:
diff changeset
9
7532e276a83a [xemacs-hg @ 2002-06-28 14:24:43 by michaels]
michaels
parents:
diff changeset
10 ;; XEmacs is free software; you can redistribute it and/or modify it
7532e276a83a [xemacs-hg @ 2002-06-28 14:24:43 by michaels]
michaels
parents:
diff changeset
11 ;; under the terms of the GNU General Public License as published by
7532e276a83a [xemacs-hg @ 2002-06-28 14:24:43 by michaels]
michaels
parents:
diff changeset
12 ;; the Free Software Foundation; either version 2, or (at your option)
7532e276a83a [xemacs-hg @ 2002-06-28 14:24:43 by michaels]
michaels
parents:
diff changeset
13 ;; any later version.
7532e276a83a [xemacs-hg @ 2002-06-28 14:24:43 by michaels]
michaels
parents:
diff changeset
14
7532e276a83a [xemacs-hg @ 2002-06-28 14:24:43 by michaels]
michaels
parents:
diff changeset
15 ;; XEmacs is distributed in the hope that it will be useful, but
7532e276a83a [xemacs-hg @ 2002-06-28 14:24:43 by michaels]
michaels
parents:
diff changeset
16 ;; WITHOUT ANY WARRANTY; without even the implied warranty of
7532e276a83a [xemacs-hg @ 2002-06-28 14:24:43 by michaels]
michaels
parents:
diff changeset
17 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
7532e276a83a [xemacs-hg @ 2002-06-28 14:24:43 by michaels]
michaels
parents:
diff changeset
18 ;; General Public License for more details.
7532e276a83a [xemacs-hg @ 2002-06-28 14:24:43 by michaels]
michaels
parents:
diff changeset
19
7532e276a83a [xemacs-hg @ 2002-06-28 14:24:43 by michaels]
michaels
parents:
diff changeset
20 ;; You should have received a copy of the GNU General Public License
7532e276a83a [xemacs-hg @ 2002-06-28 14:24:43 by michaels]
michaels
parents:
diff changeset
21 ;; along with XEmacs; see the file COPYING. If not, write to the Free
7532e276a83a [xemacs-hg @ 2002-06-28 14:24:43 by michaels]
michaels
parents:
diff changeset
22 ;; Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
7532e276a83a [xemacs-hg @ 2002-06-28 14:24:43 by michaels]
michaels
parents:
diff changeset
23 ;; 02111-1307, USA.
7532e276a83a [xemacs-hg @ 2002-06-28 14:24:43 by michaels]
michaels
parents:
diff changeset
24
7532e276a83a [xemacs-hg @ 2002-06-28 14:24:43 by michaels]
michaels
parents:
diff changeset
25 ;;; Synched up with: Not in FSF.
7532e276a83a [xemacs-hg @ 2002-06-28 14:24:43 by michaels]
michaels
parents:
diff changeset
26
7532e276a83a [xemacs-hg @ 2002-06-28 14:24:43 by michaels]
michaels
parents:
diff changeset
27 ;;; Commentary:
7532e276a83a [xemacs-hg @ 2002-06-28 14:24:43 by michaels]
michaels
parents:
diff changeset
28
1636
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
29 ;;; Test implementation of weak boxes, ephemerons, and weak lists
890
7532e276a83a [xemacs-hg @ 2002-06-28 14:24:43 by michaels]
michaels
parents:
diff changeset
30 ;;; See test-harness.el
7532e276a83a [xemacs-hg @ 2002-06-28 14:24:43 by michaels]
michaels
parents:
diff changeset
31
7532e276a83a [xemacs-hg @ 2002-06-28 14:24:43 by michaels]
michaels
parents:
diff changeset
32 (condition-case err
7532e276a83a [xemacs-hg @ 2002-06-28 14:24:43 by michaels]
michaels
parents:
diff changeset
33 (require 'test-harness)
7532e276a83a [xemacs-hg @ 2002-06-28 14:24:43 by michaels]
michaels
parents:
diff changeset
34 (file-error
7532e276a83a [xemacs-hg @ 2002-06-28 14:24:43 by michaels]
michaels
parents:
diff changeset
35 (when (and (boundp 'load-file-name) (stringp load-file-name))
7532e276a83a [xemacs-hg @ 2002-06-28 14:24:43 by michaels]
michaels
parents:
diff changeset
36 (push (file-name-directory load-file-name) load-path)
7532e276a83a [xemacs-hg @ 2002-06-28 14:24:43 by michaels]
michaels
parents:
diff changeset
37 (require 'test-harness))))
7532e276a83a [xemacs-hg @ 2002-06-28 14:24:43 by michaels]
michaels
parents:
diff changeset
38
7532e276a83a [xemacs-hg @ 2002-06-28 14:24:43 by michaels]
michaels
parents:
diff changeset
39 (garbage-collect)
1636
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
40
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
41 ;; tests for weak-boxes
890
7532e276a83a [xemacs-hg @ 2002-06-28 14:24:43 by michaels]
michaels
parents:
diff changeset
42 (let ((w (make-weak-box (cons 2 3))))
7532e276a83a [xemacs-hg @ 2002-06-28 14:24:43 by michaels]
michaels
parents:
diff changeset
43 (Assert (equal (cons 2 3) (weak-box-ref w)))
7532e276a83a [xemacs-hg @ 2002-06-28 14:24:43 by michaels]
michaels
parents:
diff changeset
44 (garbage-collect)
7532e276a83a [xemacs-hg @ 2002-06-28 14:24:43 by michaels]
michaels
parents:
diff changeset
45 (Assert (not (weak-box-ref w))))
7532e276a83a [xemacs-hg @ 2002-06-28 14:24:43 by michaels]
michaels
parents:
diff changeset
46
7532e276a83a [xemacs-hg @ 2002-06-28 14:24:43 by michaels]
michaels
parents:
diff changeset
47 (garbage-collect)
7532e276a83a [xemacs-hg @ 2002-06-28 14:24:43 by michaels]
michaels
parents:
diff changeset
48
1636
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
49 ;; tests for ephemerons
890
7532e276a83a [xemacs-hg @ 2002-06-28 14:24:43 by michaels]
michaels
parents:
diff changeset
50 (let* ((p (cons 3 4))
7532e276a83a [xemacs-hg @ 2002-06-28 14:24:43 by michaels]
michaels
parents:
diff changeset
51 (finalized-p nil)
7532e276a83a [xemacs-hg @ 2002-06-28 14:24:43 by michaels]
michaels
parents:
diff changeset
52 (eph1 (make-ephemeron (cons 1 2) p
4021
cef5f57bb9e2 [xemacs-hg @ 2007-06-21 13:39:08 by aidan]
aidan
parents: 1773
diff changeset
53 #'(lambda (value)
cef5f57bb9e2 [xemacs-hg @ 2007-06-21 13:39:08 by aidan]
aidan
parents: 1773
diff changeset
54 (setq finalized-p t))))
890
7532e276a83a [xemacs-hg @ 2002-06-28 14:24:43 by michaels]
michaels
parents:
diff changeset
55 (eph2 (make-ephemeron p p)))
7532e276a83a [xemacs-hg @ 2002-06-28 14:24:43 by michaels]
michaels
parents:
diff changeset
56 (Assert (eq p (ephemeron-ref (make-ephemeron (cons 1 2) p))))
7532e276a83a [xemacs-hg @ 2002-06-28 14:24:43 by michaels]
michaels
parents:
diff changeset
57 (Assert (ephemeron-p (make-ephemeron (cons 1 2) p)))
7532e276a83a [xemacs-hg @ 2002-06-28 14:24:43 by michaels]
michaels
parents:
diff changeset
58
7532e276a83a [xemacs-hg @ 2002-06-28 14:24:43 by michaels]
michaels
parents:
diff changeset
59 (garbage-collect)
7532e276a83a [xemacs-hg @ 2002-06-28 14:24:43 by michaels]
michaels
parents:
diff changeset
60 (garbage-collect) ; ensure the post-gc hook runs
7532e276a83a [xemacs-hg @ 2002-06-28 14:24:43 by michaels]
michaels
parents:
diff changeset
61
7532e276a83a [xemacs-hg @ 2002-06-28 14:24:43 by michaels]
michaels
parents:
diff changeset
62 (Assert finalized-p)
7532e276a83a [xemacs-hg @ 2002-06-28 14:24:43 by michaels]
michaels
parents:
diff changeset
63 (Assert (not (ephemeron-ref eph1)))
7532e276a83a [xemacs-hg @ 2002-06-28 14:24:43 by michaels]
michaels
parents:
diff changeset
64
7532e276a83a [xemacs-hg @ 2002-06-28 14:24:43 by michaels]
michaels
parents:
diff changeset
65 (garbage-collect)
7532e276a83a [xemacs-hg @ 2002-06-28 14:24:43 by michaels]
michaels
parents:
diff changeset
66
7532e276a83a [xemacs-hg @ 2002-06-28 14:24:43 by michaels]
michaels
parents:
diff changeset
67 (Assert (eq p (ephemeron-ref eph2))))
7532e276a83a [xemacs-hg @ 2002-06-28 14:24:43 by michaels]
michaels
parents:
diff changeset
68
1636
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
69 (garbage-collect)
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
70
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
71 ;; tests for simple weak-lists
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
72 (let* ((a (cons 23 42))
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
73 (b (cons 42 65))
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
74 (testlist (list a b))
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
75 (weaklist1 (make-weak-list 'simple))
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
76 (weaklist2 (make-weak-list 'simple))
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
77 (weaklist3 (make-weak-list 'simple))
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
78 (weaklist4 (make-weak-list 'simple)))
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
79 (set-weak-list-list weaklist1 testlist)
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
80 (set-weak-list-list weaklist2 (list (cons 1 2) a b))
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
81 (set-weak-list-list weaklist3 (list a (cons 1 2) b))
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
82 (set-weak-list-list weaklist4 (list a b (cons 1 2)))
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
83 (Assert (weak-list-p weaklist1))
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
84 (Assert (eq (weak-list-type weaklist1) 'simple))
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
85 (Assert (weak-list-p weaklist2))
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
86 (Assert (eq (weak-list-type weaklist2) 'simple))
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
87 (Assert (weak-list-p weaklist3))
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
88 (Assert (eq (weak-list-type weaklist3) 'simple))
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
89 (Assert (weak-list-p weaklist4))
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
90 (Assert (eq (weak-list-type weaklist4) 'simple))
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
91
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
92 (garbage-collect)
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
93
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
94 (Assert (eq (weak-list-list weaklist1) testlist))
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
95 (Assert (equal (weak-list-list weaklist2) testlist))
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
96 (Assert (equal (weak-list-list weaklist3) testlist))
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
97 (Assert (equal (weak-list-list weaklist4) testlist)))
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
98
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
99 (garbage-collect)
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
100
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
101 ;; tests for assoc weak-lists
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
102 (let* ((a (cons 23 42))
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
103 (b (cons a a))
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
104 (testlist (list b b))
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
105 (weaklist1 (make-weak-list 'assoc))
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
106 (weaklist2 (make-weak-list 'assoc))
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
107 (weaklist3 (make-weak-list 'assoc))
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
108 (weaklist4 (make-weak-list 'assoc)))
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
109 (set-weak-list-list weaklist1 testlist)
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
110 (set-weak-list-list weaklist2 (list b (cons (cons 1 2) a) b))
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
111 (set-weak-list-list weaklist3 (list b (cons a (cons 1 2)) b))
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
112 (set-weak-list-list weaklist4 (list b (cons (cons 1 2) (cons 3 4)) b))
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
113 (Assert (weak-list-p weaklist1))
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
114 (Assert (eq (weak-list-type weaklist1) 'assoc))
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
115 (Assert (weak-list-p weaklist2))
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
116 (Assert (eq (weak-list-type weaklist2) 'assoc))
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
117 (Assert (weak-list-p weaklist3))
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
118 (Assert (eq (weak-list-type weaklist3) 'assoc))
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
119 (Assert (weak-list-p weaklist4))
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
120 (Assert (eq (weak-list-type weaklist4) 'assoc))
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
121
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
122 (garbage-collect)
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
123
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
124 (Assert (eq (weak-list-list weaklist1) testlist))
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
125 (Assert (equal (weak-list-list weaklist2) testlist))
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
126 (Assert (equal (weak-list-list weaklist3) testlist))
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
127 (Assert (equal (weak-list-list weaklist4) testlist)))
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
128
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
129 (garbage-collect)
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
130
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
131 ;; tests for key-assoc weak-lists
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
132 (let* ((a (cons 23 42))
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
133 (b (cons a a))
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
134 (testlist (list b b))
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
135 (weaklist1 (make-weak-list 'key-assoc))
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
136 (weaklist2 (make-weak-list 'key-assoc))
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
137 (weaklist3 (make-weak-list 'key-assoc))
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
138 (weaklist4 (make-weak-list 'key-assoc)))
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
139 (set-weak-list-list weaklist1 testlist)
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
140 (set-weak-list-list weaklist2 (list b (cons (cons 1 2) a) b))
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
141 (set-weak-list-list weaklist3 (list b (cons a (cons 1 2)) b))
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
142 (set-weak-list-list weaklist4 (list b (cons (cons 1 2) (cons 3 4)) b))
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
143 (Assert (weak-list-p weaklist1))
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
144 (Assert (eq (weak-list-type weaklist1) 'key-assoc))
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
145 (Assert (weak-list-p weaklist2))
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
146 (Assert (eq (weak-list-type weaklist2) 'key-assoc))
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
147 (Assert (weak-list-p weaklist3))
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
148 (Assert (eq (weak-list-type weaklist3) 'key-assoc))
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
149 (Assert (weak-list-p weaklist4))
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
150 (Assert (eq (weak-list-type weaklist4) 'key-assoc))
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
151
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
152 (garbage-collect)
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
153
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
154 (Assert (eq (weak-list-list weaklist1) testlist))
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
155 (Assert (equal (weak-list-list weaklist2) testlist))
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
156 (Assert (equal (weak-list-list weaklist3) (list b (cons a (cons 1 2)) b)))
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
157 (Assert (equal (weak-list-list weaklist4) testlist)))
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
158
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
159 (garbage-collect)
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
160
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
161 ;; tests for value-assoc weak-lists
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
162 (let* ((a (cons 23 42))
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
163 (b (cons a a))
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
164 (testlist (list b b))
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
165 (weaklist1 (make-weak-list 'value-assoc))
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
166 (weaklist2 (make-weak-list 'value-assoc))
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
167 (weaklist3 (make-weak-list 'value-assoc))
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
168 (weaklist4 (make-weak-list 'value-assoc)))
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
169 (set-weak-list-list weaklist1 testlist)
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
170 (set-weak-list-list weaklist2 (list b (cons (cons 1 2) a) b))
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
171 (set-weak-list-list weaklist3 (list b (cons a (cons 1 2)) b))
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
172 (set-weak-list-list weaklist4 (list b (cons (cons 1 2) (cons 3 4)) b))
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
173 (Assert (weak-list-p weaklist1))
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
174 (Assert (eq (weak-list-type weaklist1) 'value-assoc))
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
175 (Assert (weak-list-p weaklist2))
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
176 (Assert (eq (weak-list-type weaklist2) 'value-assoc))
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
177 (Assert (weak-list-p weaklist3))
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
178 (Assert (eq (weak-list-type weaklist3) 'value-assoc))
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
179 (Assert (weak-list-p weaklist4))
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
180 (Assert (eq (weak-list-type weaklist4) 'value-assoc))
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
181
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
182 (garbage-collect)
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
183
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
184 (Assert (eq (weak-list-list weaklist1) testlist))
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
185 (Assert (equal (weak-list-list weaklist2) (list b (cons (cons 1 2) a) b)))
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
186 (Assert (equal (weak-list-list weaklist3) testlist))
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
187 (Assert (equal (weak-list-list weaklist4) testlist)))
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
188
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
189 (garbage-collect)
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
190
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
191 ;; tests for full-assoc weak-lists
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
192 (let* ((a (cons 23 42))
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
193 (b (cons a a))
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
194 (testlist (list b b))
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
195 (weaklist1 (make-weak-list 'full-assoc))
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
196 (weaklist2 (make-weak-list 'full-assoc))
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
197 (weaklist3 (make-weak-list 'full-assoc))
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
198 (weaklist4 (make-weak-list 'full-assoc)))
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
199 (set-weak-list-list weaklist1 testlist)
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
200 (set-weak-list-list weaklist2 (list b (cons (cons 1 2) a) b))
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
201 (set-weak-list-list weaklist3 (list b (cons a (cons 1 2)) b))
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
202 (set-weak-list-list weaklist4 (list b (cons (cons 1 2) (cons 3 4)) b))
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
203 (Assert (weak-list-p weaklist1))
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
204 (Assert (eq (weak-list-type weaklist1) 'full-assoc))
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
205 (Assert (weak-list-p weaklist2))
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
206 (Assert (eq (weak-list-type weaklist2) 'full-assoc))
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
207 (Assert (weak-list-p weaklist3))
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
208 (Assert (eq (weak-list-type weaklist3) 'full-assoc))
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
209 (Assert (weak-list-p weaklist4))
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
210 (Assert (eq (weak-list-type weaklist4) 'full-assoc))
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
211
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
212 (garbage-collect)
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
213
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
214 (Assert (eq (weak-list-list weaklist1) testlist))
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
215 (Assert (equal (weak-list-list weaklist2) (list b (cons (cons 1 2) a) b)))
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
216 (Assert (equal (weak-list-list weaklist3) (list b (cons a (cons 1 2)) b)))
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
217 (Assert (equal (weak-list-list weaklist4) testlist)))
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
218
f062c28f4a11 [xemacs-hg @ 2003-08-20 11:53:41 by crestani]
crestani
parents: 890
diff changeset
219 (garbage-collect)
1773
aa0db78e67c4 [xemacs-hg @ 2003-11-01 14:54:53 by kaltenbach]
kaltenbach
parents: 1758
diff changeset
220
aa0db78e67c4 [xemacs-hg @ 2003-11-01 14:54:53 by kaltenbach]
kaltenbach
parents: 1758
diff changeset
221 ;; test the intended functionality of the fixpoint iteration used for marking
aa0db78e67c4 [xemacs-hg @ 2003-11-01 14:54:53 by kaltenbach]
kaltenbach
parents: 1758
diff changeset
222 ;; weak data structures like the ephermerons. Basically this tests gc_internals
aa0db78e67c4 [xemacs-hg @ 2003-11-01 14:54:53 by kaltenbach]
kaltenbach
parents: 1758
diff changeset
223 ;; to work properly but it also ensures the ephemerons behave according to the
aa0db78e67c4 [xemacs-hg @ 2003-11-01 14:54:53 by kaltenbach]
kaltenbach
parents: 1758
diff changeset
224 ;; specification
aa0db78e67c4 [xemacs-hg @ 2003-11-01 14:54:53 by kaltenbach]
kaltenbach
parents: 1758
diff changeset
225
aa0db78e67c4 [xemacs-hg @ 2003-11-01 14:54:53 by kaltenbach]
kaltenbach
parents: 1758
diff changeset
226 (let* ((inner_cons (cons 1 2))
aa0db78e67c4 [xemacs-hg @ 2003-11-01 14:54:53 by kaltenbach]
kaltenbach
parents: 1758
diff changeset
227 (weak1 (make-ephemeron inner_cons
aa0db78e67c4 [xemacs-hg @ 2003-11-01 14:54:53 by kaltenbach]
kaltenbach
parents: 1758
diff changeset
228 (make-ephemeron inner_cons
aa0db78e67c4 [xemacs-hg @ 2003-11-01 14:54:53 by kaltenbach]
kaltenbach
parents: 1758
diff changeset
229 (cons 1 2)
aa0db78e67c4 [xemacs-hg @ 2003-11-01 14:54:53 by kaltenbach]
kaltenbach
parents: 1758
diff changeset
230 '(lambda (v) t))
4021
cef5f57bb9e2 [xemacs-hg @ 2007-06-21 13:39:08 by aidan]
aidan
parents: 1773
diff changeset
231 #'(lambda (v) t))))
1773
aa0db78e67c4 [xemacs-hg @ 2003-11-01 14:54:53 by kaltenbach]
kaltenbach
parents: 1758
diff changeset
232 (Assert (ephemeron-ref (ephemeron-ref weak1)))
aa0db78e67c4 [xemacs-hg @ 2003-11-01 14:54:53 by kaltenbach]
kaltenbach
parents: 1758
diff changeset
233 (garbage-collect)
aa0db78e67c4 [xemacs-hg @ 2003-11-01 14:54:53 by kaltenbach]
kaltenbach
parents: 1758
diff changeset
234 ;; assure the inner ephis are still there
aa0db78e67c4 [xemacs-hg @ 2003-11-01 14:54:53 by kaltenbach]
kaltenbach
parents: 1758
diff changeset
235 (Assert (ephemeron-ref (ephemeron-ref weak1)))
aa0db78e67c4 [xemacs-hg @ 2003-11-01 14:54:53 by kaltenbach]
kaltenbach
parents: 1758
diff changeset
236 ;; delete the key reference and force cleaning up the garbage
aa0db78e67c4 [xemacs-hg @ 2003-11-01 14:54:53 by kaltenbach]
kaltenbach
parents: 1758
diff changeset
237 (setq inner_cons (cons 3 4))
aa0db78e67c4 [xemacs-hg @ 2003-11-01 14:54:53 by kaltenbach]
kaltenbach
parents: 1758
diff changeset
238 (garbage-collect)
aa0db78e67c4 [xemacs-hg @ 2003-11-01 14:54:53 by kaltenbach]
kaltenbach
parents: 1758
diff changeset
239 (Assert (not (ephemeron-ref weak1)))
aa0db78e67c4 [xemacs-hg @ 2003-11-01 14:54:53 by kaltenbach]
kaltenbach
parents: 1758
diff changeset
240 )
aa0db78e67c4 [xemacs-hg @ 2003-11-01 14:54:53 by kaltenbach]
kaltenbach
parents: 1758
diff changeset
241
aa0db78e67c4 [xemacs-hg @ 2003-11-01 14:54:53 by kaltenbach]
kaltenbach
parents: 1758
diff changeset
242 (garbage-collect)