annotate tests/automated/syntax-tests.el @ 788:026c5bf9c134

[xemacs-hg @ 2002-03-21 07:29:57 by ben] chartab.c: Fix bugs in implementation and doc strings. config.h.in: Add foo_checking_assert_at_line() macros. Not clear whether these are actually useful, though; I'll take them out if not. symsinit.h, emacs.c: Some improvements to the timeline. Rearrange a bit the init calls. Add call for reinit_vars_of_object_mswindows() and declare in symsinit.h. event-Xt.c, event-gtk.c, event-msw.c, event-stream.c, event-tty.c, events.c, events.h: Introduce new event methods for printing, comparing, and hashing magic events, to avoid event-type-specific stuff that had crept into events.c. (And was crashing, since the channel in MS Windows magic events may be nil.) Implement the methods in event-{tty,gtk,Xt,mswindows}.c. Make wrapping functions event_stream_{compare,hash,format}_magic_event() to check if everything's OK and call the actual callback. Fix events.c to use the new methods. Add a new event-stream-operation EVENT_STREAM_NOTHING -- event stream not actually required to be able to do anything, just be open. (#### This event-stream-operation stuff needs to be rethought.) Fixed describe_event() in event-Xt.c to print its output to a stream, not always to stderr, so it can be used elsewhere. (e.g. in print-event when a magic event is encountered?) lisp.h, lrecord.h: Define new assert_at_line(), for use in asserts inside of inline functions. The assert will report the line and file of the inline function, which is almost certainly not what you want as it's useless. what you want to see is where the pseudo-macro was called from. So, when error-checking is on, we pass in the line and file into the macros, for accurate printout using assert_at_line(). Happens only when error-checking is defined so doesn't slow down non-error-checking builds. Fix XCHAR, XINT, XCHAR_OR_INT, XFOO, and wrap_foo() in this fashion. lstream.c, lstream.h: Add resizing_buffer_to_lisp_string(). objects-gtk.c: Fix typo. objects-msw.c: Implement a smarter way of determining whether a font matches a charset. Formerly we just looked at the "script" element of the font spec, converted it to a code page, and compared it with the code page derived from the charset. Now, as well as doing this, we ask the font for the list of unicode ranges it supports, see what range the charset falls into (#### bogus! need to do this char-by-char), and see if any of the font's supported ranges include the charset's range. also do some caching in Vfont_signature_data of previous inquiries. charset.h, text.c, mule-charset.c: New fun; extracted out of Fmake_char() and declare prototype in charset.h. text.h: introduce assert_by_line() to make REP_BYTES_BY_FIRST_BYTE report the file and line more accurately in an assertion failure. unicode.c: make non-static (used in objects-msw.c), declare in charset.h. mule\mule-category.el: Start implementing a category API compatible with FSF. Not there yet. We need improvements to char-tables. mule\mule-charset.el: Copy translation table code from FSF 21.1 and fix up. Eventually we'll have them in XEmacs. (used in ccl) Not here quite yet, and we need some improvements to char-tables. mule\cyril-util.el, mule\cyrillic.el, mule\devan-util.el, mule\ethio-util.el, mule\korea-util.el, mule\mule-tty-init.el, mule\tibet-util.el, mule\viet-util.el, mule\vietnamese.el: Fix numerous compilation warnings. Fix up code related to translation tables and other types of char-tables. menubar-items.el: Move the frame commands from the View menu to the File menu, to be consistent with how most other programs do things. Move less-used revert/recover items to a submenu. Make "recover" not prompt for a file, but recover the current buffer. TODO.ben-mule-21-5: Create bug list for latest problems.
author ben
date Thu, 21 Mar 2002 07:31:30 +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))))