annotate tests/automated/syntax-tests.el @ 2362:6aa56b089139

[xemacs-hg @ 2004-11-02 09:51:04 by ben] To: xemacs-patches@xemacs.org internals/index.texi: Deleted. Incorporated into internals.texi. Having a separate index file messes up texinfo-master-menu. internals/internals.texi: Add bunches and bunches and bunches and bunches of stuff, taken from documentation floating around in various places -- text.c, file-coding.c, other .c and .h files, stuff that I wrote up for an old XEmacs contract, proposals written up in the process of an e-mail discussion, etc. Fix up some mistakes, esp. in CCL. Extra crap from CCL, duplicated with Lispref, removed. Sections on Old Future Work and Future Work Discussion added. Bunches of other work. Add bunches of documentation taken from the source code. Fixup various places to use @strong{}, @code{}, @file{}. Create new Text chapter, split off from Buffers and Textual Representation. Create new chapter for MS Windows, mostly written from scratch. Consolidate all Mule info under "Multilingual Support". Break up chapter on modules and move some parts to the sections discussing the modules, for consolidation purposes. Add a big cross-reference table for all the modules to where they're discussed (or not). New chapter Asynchronous Events; Quit Checking. (Taken from various parts of the code.) New Introduction. New section on Focus Handling (from the code). NOTE that in the process, I discovered that we essentially have FOUR redundant introductions to Mule issues! Someone really needs to go through and clean them up and integrate them (sjt?).
author ben
date Tue, 02 Nov 2004 09:51:18 +0000
parents 0d33547d9ed3
children a7ef4b25b467
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
398
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
1 ;; Copyright (C) 1999 Free Software Foundation, Inc.
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
2
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
3 ;; Author: Yoshiki Hayashi <t90553@mail.ecc.u-tokyo.ac.jp>
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
4 ;; Maintainer: Yoshiki Hayashi <t90553@mail.ecc.u-tokyo.ac.jp>
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
5 ;; Created: 1999
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
6 ;; Keywords: tests
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
7
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
8 ;; This file is part of XEmacs.
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
9
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
10 ;; XEmacs is free software; you can redistribute it and/or modify it
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
11 ;; under the terms of the GNU General Public License as published by
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
12 ;; the Free Software Foundation; either version 2, or (at your option)
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
13 ;; any later version.
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
14
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
15 ;; XEmacs is distributed in the hope that it will be useful, but
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
16 ;; WITHOUT ANY WARRANTY; without even the implied warranty of
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
17 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
18 ;; General Public License for more details.
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
19
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
20 ;; You should have received a copy of the GNU General Public License
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
21 ;; along with XEmacs; see the file COPYING. If not, write to the Free
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
22 ;; Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
23 ;; 02111-1307, USA.
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
24
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
25 ;;; Synched up with: Not in FSF.
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
26
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
27 ;;; Commentary:
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
28
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
29 ;; Test syntax related functions.
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
30 ;; Right now it tests scan_words using forward-word and backward-word.
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
31 ;; See test-harness.el for instructions on how to run these tests.
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
32
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
33 ;;; Notation
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
34 ;; W: word constituent character.
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
35 ;; NW: non word constituent character.
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
36 ;; -!-: current point.
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
37 ;; EOB: end of buffer
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
38 ;; BOB: beginning of buffer.
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
39
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
40 ;; Algorithm of scan_words is simple. It just searches SW and then
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
41 ;; moves to NW. When with MULE, it also stops at word boundary. Word
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
42 ;; boundary is tricky and listing all possible cases will be huge.
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
43 ;; Those test are omitted here as it doesn't affect core
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
44 ;; functionality.
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
45
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
46 (defun test-forward-word (string stop)
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
47 (goto-char (point-max))
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
48 (let ((point (point)))
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
49 (insert string)
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
50 (goto-char point)
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
51 (forward-word 1)
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
52 (Assert (eq (point) (+ point stop)))))
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
53
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
54 (with-temp-buffer
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
55 ;; -!- W NW
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
56 (test-forward-word "W " 1)
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
57 (test-forward-word "WO " 2)
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
58 ;; -!- W EOB
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
59 (test-forward-word "W" 1)
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
60 (test-forward-word "WO" 2)
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
61 ;; -!- NW EOB
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
62 (test-forward-word " " 1)
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
63 (test-forward-word " !" 2)
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
64 ;; -!- NW W NW
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
65 (test-forward-word " W " 2)
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
66 (test-forward-word " WO " 3)
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
67 (test-forward-word " !W " 3)
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
68 (test-forward-word " !WO " 4)
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
69 ;; -!- NW W EOB
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
70 (test-forward-word " W" 2)
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
71 (test-forward-word " WO" 3)
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
72 (test-forward-word " !W" 3)
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
73 (test-forward-word " !WO" 4))
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
74
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
75 (defun test-backward-word (string stop)
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
76 (goto-char (point-min))
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
77 (insert string)
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
78 (let ((point (point)))
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
79 (backward-word 1)
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
80 (Assert (eq (point) (- point stop)))))
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
81
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
82 (with-temp-buffer
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
83 ;; NW W -!-
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
84 (test-backward-word " W" 1)
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
85 (test-backward-word " WO" 2)
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
86 ;; BOB W -!-
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
87 (test-backward-word "W" 1)
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
88 (test-backward-word "WO" 2)
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
89 ;; BOB NW -!-
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
90 ;; -!-NW EOB
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
91 (test-backward-word " " 1)
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
92 (test-backward-word " !" 2)
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
93 ;; NW W NW -!-
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
94 (test-backward-word " W " 2)
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
95 (test-backward-word " WO " 3)
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
96 (test-backward-word " W !" 3)
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
97 (test-backward-word " WO !" 4)
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
98 ;; BOB W NW -!-
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
99 (test-backward-word "W " 2)
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
100 (test-backward-word "WO " 3)
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
101 (test-backward-word "W !" 3)
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
102 (test-backward-word "WO !" 4))
460
223736d75acb Import from CVS: tag r21-2-45
cvs
parents: 398
diff changeset
103
223736d75acb Import from CVS: tag r21-2-45
cvs
parents: 398
diff changeset
104 ;; Works like test-forward-word, except for the following:
223736d75acb Import from CVS: tag r21-2-45
cvs
parents: 398
diff changeset
105 ;; after <string> is inserted, the syntax-table <apply-syntax>
223736d75acb Import from CVS: tag r21-2-45
cvs
parents: 398
diff changeset
106 ;; is applied to position <apply-pos>.
223736d75acb Import from CVS: tag r21-2-45
cvs
parents: 398
diff changeset
107 ;; <apply-pos> can be in the form (start . end), or can be a
223736d75acb Import from CVS: tag r21-2-45
cvs
parents: 398
diff changeset
108 ;; character position.
223736d75acb Import from CVS: tag r21-2-45
cvs
parents: 398
diff changeset
109 (defun test-syntax-table (string apply-pos apply-syntax stop)
1024
ccaf90c5a53a [xemacs-hg @ 2002-10-02 09:29:37 by stephent]
stephent
parents: 973
diff changeset
110 ;; We don't necessarily have syntax-table properties ...
ccaf90c5a53a [xemacs-hg @ 2002-10-02 09:29:37 by stephent]
stephent
parents: 973
diff changeset
111 (when (fboundp 'lookup-syntax-properties) ; backwards compatible kludge
ccaf90c5a53a [xemacs-hg @ 2002-10-02 09:29:37 by stephent]
stephent
parents: 973
diff changeset
112 ;; ... and they may not be enabled by default if we do.
ccaf90c5a53a [xemacs-hg @ 2002-10-02 09:29:37 by stephent]
stephent
parents: 973
diff changeset
113 (setq lookup-syntax-properties t)
ccaf90c5a53a [xemacs-hg @ 2002-10-02 09:29:37 by stephent]
stephent
parents: 973
diff changeset
114 (goto-char (point-max))
ccaf90c5a53a [xemacs-hg @ 2002-10-02 09:29:37 by stephent]
stephent
parents: 973
diff changeset
115 (unless (consp apply-pos)
ccaf90c5a53a [xemacs-hg @ 2002-10-02 09:29:37 by stephent]
stephent
parents: 973
diff changeset
116 (setq apply-pos `(,apply-pos . ,(+ 1 apply-pos))))
ccaf90c5a53a [xemacs-hg @ 2002-10-02 09:29:37 by stephent]
stephent
parents: 973
diff changeset
117 (let ((point (point)))
ccaf90c5a53a [xemacs-hg @ 2002-10-02 09:29:37 by stephent]
stephent
parents: 973
diff changeset
118 (insert string)
ccaf90c5a53a [xemacs-hg @ 2002-10-02 09:29:37 by stephent]
stephent
parents: 973
diff changeset
119 (put-text-property (+ point (car apply-pos)) (+ point (cdr apply-pos))
ccaf90c5a53a [xemacs-hg @ 2002-10-02 09:29:37 by stephent]
stephent
parents: 973
diff changeset
120 'syntax-table apply-syntax)
ccaf90c5a53a [xemacs-hg @ 2002-10-02 09:29:37 by stephent]
stephent
parents: 973
diff changeset
121 (goto-char point)
ccaf90c5a53a [xemacs-hg @ 2002-10-02 09:29:37 by stephent]
stephent
parents: 973
diff changeset
122 (forward-word 1)
ccaf90c5a53a [xemacs-hg @ 2002-10-02 09:29:37 by stephent]
stephent
parents: 973
diff changeset
123 (Assert (eq (point) (+ point stop))))))
460
223736d75acb Import from CVS: tag r21-2-45
cvs
parents: 398
diff changeset
124
223736d75acb Import from CVS: tag r21-2-45
cvs
parents: 398
diff changeset
125 ;; test syntax-table extents
223736d75acb Import from CVS: tag r21-2-45
cvs
parents: 398
diff changeset
126 (with-temp-buffer
223736d75acb Import from CVS: tag r21-2-45
cvs
parents: 398
diff changeset
127 ;; Apply punctuation to word
223736d75acb Import from CVS: tag r21-2-45
cvs
parents: 398
diff changeset
128 (test-syntax-table "WO" 1 `(,(syntax-string-to-code ".")) 1)
223736d75acb Import from CVS: tag r21-2-45
cvs
parents: 398
diff changeset
129 ;; Apply word to punctuation
223736d75acb Import from CVS: tag r21-2-45
cvs
parents: 398
diff changeset
130 (test-syntax-table "W." 1 `(,(syntax-string-to-code "w")) 2))
223736d75acb Import from CVS: tag r21-2-45
cvs
parents: 398
diff changeset
131
223736d75acb Import from CVS: tag r21-2-45
cvs
parents: 398
diff changeset
132 ;; Test forward-comment at buffer boundaries
1024
ccaf90c5a53a [xemacs-hg @ 2002-10-02 09:29:37 by stephent]
stephent
parents: 973
diff changeset
133 ;; #### The second Assert fails (once interpreted, once compiled) on 21.4.9
ccaf90c5a53a [xemacs-hg @ 2002-10-02 09:29:37 by stephent]
stephent
parents: 973
diff changeset
134 ;; with sjt's version of Andy's syntax-text-property-killer patch.
460
223736d75acb Import from CVS: tag r21-2-45
cvs
parents: 398
diff changeset
135 (with-temp-buffer
1095
0d33547d9ed3 [xemacs-hg @ 2002-11-11 15:39:03 by stephent]
stephent
parents: 1024
diff changeset
136 (Skip-Test-Unless (fboundp 'c-mode)
0d33547d9ed3 [xemacs-hg @ 2002-11-11 15:39:03 by stephent]
stephent
parents: 1024
diff changeset
137 "c-mode unavailable"
0d33547d9ed3 [xemacs-hg @ 2002-11-11 15:39:03 by stephent]
stephent
parents: 1024
diff changeset
138 "comment and parse-partial-sexp tests"
973
ea6a06f7bf2c [xemacs-hg @ 2002-08-22 14:56:23 by stephent]
stephent
parents: 460
diff changeset
139 (c-mode)
ea6a06f7bf2c [xemacs-hg @ 2002-08-22 14:56:23 by stephent]
stephent
parents: 460
diff changeset
140
ea6a06f7bf2c [xemacs-hg @ 2002-08-22 14:56:23 by stephent]
stephent
parents: 460
diff changeset
141 (insert "// comment\n")
ea6a06f7bf2c [xemacs-hg @ 2002-08-22 14:56:23 by stephent]
stephent
parents: 460
diff changeset
142 (forward-comment -2)
ea6a06f7bf2c [xemacs-hg @ 2002-08-22 14:56:23 by stephent]
stephent
parents: 460
diff changeset
143 (Assert (eq (point) (point-min)))
460
223736d75acb Import from CVS: tag r21-2-45
cvs
parents: 398
diff changeset
144
973
ea6a06f7bf2c [xemacs-hg @ 2002-08-22 14:56:23 by stephent]
stephent
parents: 460
diff changeset
145 (let ((point (point)))
ea6a06f7bf2c [xemacs-hg @ 2002-08-22 14:56:23 by stephent]
stephent
parents: 460
diff changeset
146 (insert "/* comment */")
ea6a06f7bf2c [xemacs-hg @ 2002-08-22 14:56:23 by stephent]
stephent
parents: 460
diff changeset
147 (goto-char point)
ea6a06f7bf2c [xemacs-hg @ 2002-08-22 14:56:23 by stephent]
stephent
parents: 460
diff changeset
148 (forward-comment 2)
ea6a06f7bf2c [xemacs-hg @ 2002-08-22 14:56:23 by stephent]
stephent
parents: 460
diff changeset
149 (Assert (eq (point) (point-max)))
460
223736d75acb Import from CVS: tag r21-2-45
cvs
parents: 398
diff changeset
150
973
ea6a06f7bf2c [xemacs-hg @ 2002-08-22 14:56:23 by stephent]
stephent
parents: 460
diff changeset
151 ;; this last used to crash
ea6a06f7bf2c [xemacs-hg @ 2002-08-22 14:56:23 by stephent]
stephent
parents: 460
diff changeset
152 (parse-partial-sexp point (point-max)))))