annotate tests/automated/syntax-tests.el @ 589:37fe04af1590

[xemacs-hg @ 2001-05-31 02:00:29 by wmperry] Regenerated some .c files from their lisp equivalents for GTK bindings. Fix buttons as modifiers code so that text selection works in GTK event loop.
author wmperry
date Thu, 31 May 2001 02:00:31 +0000
parents 223736d75acb
children ea6a06f7bf2c
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)
223736d75acb Import from CVS: tag r21-2-45
cvs
parents: 398
diff changeset
110 (goto-char (point-max))
223736d75acb Import from CVS: tag r21-2-45
cvs
parents: 398
diff changeset
111 (unless (consp apply-pos)
223736d75acb Import from CVS: tag r21-2-45
cvs
parents: 398
diff changeset
112 (setq apply-pos `(,apply-pos . ,(+ 1 apply-pos))))
223736d75acb Import from CVS: tag r21-2-45
cvs
parents: 398
diff changeset
113 (let ((point (point)))
223736d75acb Import from CVS: tag r21-2-45
cvs
parents: 398
diff changeset
114 (insert string)
223736d75acb Import from CVS: tag r21-2-45
cvs
parents: 398
diff changeset
115 (put-text-property (+ point (car apply-pos)) (+ point (cdr apply-pos))
223736d75acb Import from CVS: tag r21-2-45
cvs
parents: 398
diff changeset
116 'syntax-table apply-syntax)
223736d75acb Import from CVS: tag r21-2-45
cvs
parents: 398
diff changeset
117 (goto-char point)
223736d75acb Import from CVS: tag r21-2-45
cvs
parents: 398
diff changeset
118 (forward-word 1)
223736d75acb Import from CVS: tag r21-2-45
cvs
parents: 398
diff changeset
119 (Assert (eq (point) (+ point stop)))))
223736d75acb Import from CVS: tag r21-2-45
cvs
parents: 398
diff changeset
120
223736d75acb Import from CVS: tag r21-2-45
cvs
parents: 398
diff changeset
121 ;; test syntax-table extents
223736d75acb Import from CVS: tag r21-2-45
cvs
parents: 398
diff changeset
122 (with-temp-buffer
223736d75acb Import from CVS: tag r21-2-45
cvs
parents: 398
diff changeset
123 ;; Apply punctuation to word
223736d75acb Import from CVS: tag r21-2-45
cvs
parents: 398
diff changeset
124 (test-syntax-table "WO" 1 `(,(syntax-string-to-code ".")) 1)
223736d75acb Import from CVS: tag r21-2-45
cvs
parents: 398
diff changeset
125 ;; Apply word to punctuation
223736d75acb Import from CVS: tag r21-2-45
cvs
parents: 398
diff changeset
126 (test-syntax-table "W." 1 `(,(syntax-string-to-code "w")) 2))
223736d75acb Import from CVS: tag r21-2-45
cvs
parents: 398
diff changeset
127
223736d75acb Import from CVS: tag r21-2-45
cvs
parents: 398
diff changeset
128 ;; Test forward-comment at buffer boundaries
223736d75acb Import from CVS: tag r21-2-45
cvs
parents: 398
diff changeset
129 (with-temp-buffer
223736d75acb Import from CVS: tag r21-2-45
cvs
parents: 398
diff changeset
130 (c-mode)
223736d75acb Import from CVS: tag r21-2-45
cvs
parents: 398
diff changeset
131 (insert "// comment\n")
223736d75acb Import from CVS: tag r21-2-45
cvs
parents: 398
diff changeset
132 (forward-comment -2)
223736d75acb Import from CVS: tag r21-2-45
cvs
parents: 398
diff changeset
133 (Assert (eq (point) (point-min)))
223736d75acb Import from CVS: tag r21-2-45
cvs
parents: 398
diff changeset
134
223736d75acb Import from CVS: tag r21-2-45
cvs
parents: 398
diff changeset
135 (let ((point (point)))
223736d75acb Import from CVS: tag r21-2-45
cvs
parents: 398
diff changeset
136 (insert "/* comment */")
223736d75acb Import from CVS: tag r21-2-45
cvs
parents: 398
diff changeset
137 (goto-char point)
223736d75acb Import from CVS: tag r21-2-45
cvs
parents: 398
diff changeset
138 (forward-comment 2)
223736d75acb Import from CVS: tag r21-2-45
cvs
parents: 398
diff changeset
139 (Assert (eq (point) (point-max)))
223736d75acb Import from CVS: tag r21-2-45
cvs
parents: 398
diff changeset
140
223736d75acb Import from CVS: tag r21-2-45
cvs
parents: 398
diff changeset
141 ;; this last used to crash
223736d75acb Import from CVS: tag r21-2-45
cvs
parents: 398
diff changeset
142 (parse-partial-sexp point (point-max))))