# HG changeset patch # User michaels # Date 1025274285 0 # Node ID 7532e276a83aab77808ceaeee0ac5b68fd12d61f # Parent aa5a731873df7c5ce977e719d154e6989f4d49bf [xemacs-hg @ 2002-06-28 14:24:43 by michaels] 2002-06-27 Mike Sperber * automated/weak-tests.el: Create. diff -r aa5a731873df -r 7532e276a83a tests/ChangeLog --- 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 + + * automated/weak-tests.el: Create. + 2002-06-23 Stephen J. Turnbull * automated/mule-tests.el ((featurep 'mule)): Fix unicode test. diff -r aa5a731873df -r 7532e276a83a tests/automated/weak-tests.el --- /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 +;; Maintainer: Mike Sperber +;; 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)))) +