changeset 890:7532e276a83a

[xemacs-hg @ 2002-06-28 14:24:43 by michaels] 2002-06-27 Mike Sperber <mike@xemacs.org> * automated/weak-tests.el: Create.
author michaels
date Fri, 28 Jun 2002 14:24:45 +0000
parents aa5a731873df
children bf76db2b446e
files tests/ChangeLog tests/automated/weak-tests.el
diffstat 2 files changed, 69 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/tests/ChangeLog	Fri Jun 28 14:24:23 2002 +0000
+++ b/tests/ChangeLog	Fri Jun 28 14:24:45 2002 +0000
@@ -1,3 +1,7 @@
+2002-06-27  Mike Sperber <mike@xemacs.org>
+
+	* automated/weak-tests.el: Create.
+
 2002-06-23  Stephen J. Turnbull  <stephen@xemacs.org>
 
 	* automated/mule-tests.el ((featurep 'mule)): Fix unicode test.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/automated/weak-tests.el	Fri Jun 28 14:24:45 2002 +0000
@@ -0,0 +1,65 @@
+;; Copyright (C) 1998 Free Software Foundation, Inc.
+
+;; Author: Mike Sperber <mike@xemacs.org>
+;; Maintainer: Mike Sperber <mike@xemacs.org>
+;; Created: 2002
+;; Keywords: tests, database
+
+;; This file is part of XEmacs.
+
+;; XEmacs is free software; you can redistribute it and/or modify it
+;; under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 2, or (at your option)
+;; any later version.
+
+;; XEmacs is distributed in the hope that it will be useful, but
+;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+;; General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with XEmacs; see the file COPYING.  If not, write to the Free
+;; Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+;; 02111-1307, USA.
+
+;;; Synched up with: Not in FSF.
+
+;;; Commentary:
+
+;;; Test implementation of weak boxes and ephemerons
+;;; See test-harness.el
+
+(condition-case err
+    (require 'test-harness)
+  (file-error
+   (when (and (boundp 'load-file-name) (stringp load-file-name))
+     (push (file-name-directory load-file-name) load-path)
+     (require 'test-harness))))
+
+(garbage-collect)
+(let ((w (make-weak-box (cons 2 3))))
+  (Assert (equal (cons 2 3) (weak-box-ref w)))
+  (garbage-collect)
+  (Assert (not (weak-box-ref w))))
+
+(garbage-collect)
+
+(let* ((p (cons 3 4))
+       (finalized-p nil)
+       (eph1 (make-ephemeron (cons 1 2) p
+			     '(lambda (value)
+				(setq finalized-p t))))
+       (eph2 (make-ephemeron p p)))
+  (Assert (eq p (ephemeron-ref (make-ephemeron (cons 1 2) p))))
+  (Assert (ephemeron-p (make-ephemeron (cons 1 2) p)))
+
+  (garbage-collect)
+  (garbage-collect) ; ensure the post-gc hook runs
+
+  (Assert finalized-p)
+  (Assert (not (ephemeron-ref eph1)))
+
+  (garbage-collect)
+  
+  (Assert (eq p (ephemeron-ref eph2))))
+