1 ;;; -*- coding: iso-8859-1 -*-
3 ;; Copyright (C) 2000 Free Software Foundation, Inc.
5 ;; Author: Yoshiki Hayashi <yoshiki@xemacs.org>
6 ;; Maintainer: Yoshiki Hayashi <yoshiki@xemacs.org>
10 ;; This file is part of XEmacs.
12 ;; XEmacs is free software; you can redistribute it and/or modify it
13 ;; under the terms of the GNU General Public License as published by
14 ;; the Free Software Foundation; either version 2, or (at your option)
17 ;; XEmacs is distributed in the hope that it will be useful, but
18 ;; WITHOUT ANY WARRANTY; without even the implied warranty of
19 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
20 ;; General Public License for more details.
22 ;; You should have received a copy of the GNU General Public License
23 ;; along with XEmacs; see the file COPYING. If not, write to the Free
24 ;; Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
27 ;;; Synched up with: Not in FSF.
31 ;; Test regular expression.
33 (Check-Error-Message error "Trailing backslash"
34 (string-match "\\" "a"))
35 (Check-Error-Message error "Invalid preceding regular expression"
36 (string-match "a++" "a"))
37 (Check-Error-Message error "Invalid preceding regular expression"
38 (string-match "a**" "a"))
39 (Check-Error-Message error "Invalid preceding regular expression"
40 (string-match "a???" "a"))
41 (Check-Error-Message error "Unmatched \\[ or \\[^"
42 (string-match "[" "a"))
43 (Check-Error-Message error "Unmatched \\[ or \\[^"
44 (string-match "[abc" "a"))
45 (Check-Error-Message error "Unmatched ) or \\\\)"
46 (string-match "\\)" "a"))
47 (Check-Error-Message error "Invalid regular expression"
48 (string-match "\\(?.\\)" "a"))
49 (Check-Error-Message error "Unmatched \\\\{"
50 (string-match "a\\{" "a"))
51 (Check-Error-Message error "Invalid content of \\\\{\\\\}"
52 (string-match "a\\{a\\}" "a"))
59 (Assert (string-match "ä" "ä"))
60 (Assert (string-match "ä" "Ä"))
61 (Assert (string-match "Ä" "Ä"))
62 (Assert (string-match "Ä" "ä"))
64 (setq case-fold-search nil)
65 (Assert (string-match "ä" "ä"))
66 (Assert (not (string-match "ä" "Ä")))
67 (Assert (string-match "Ä" "Ä"))
68 (Assert (not (string-match "Ä" "ä"))))
74 (goto-char (point-min))
75 (Assert (looking-at "ä"))
76 (Assert (looking-at "Ä"))
78 (Assert (looking-at "ä"))
79 (Assert (looking-at "Ä"))
81 (setq case-fold-search nil)
82 (goto-char (point-min))
83 (Assert (looking-at "ä"))
84 (Assert (not (looking-at "Ä")))
86 (Assert (not (looking-at "ä")))
87 (Assert (looking-at "Ä")))
89 ;; re-search-forward and re-search-backward
94 (goto-char (point-min))
95 ;; Avoid trivial regexp.
96 (Assert (eq 2 (re-search-forward "ä\\|a" nil t)))
97 (goto-char (point-min))
98 (Assert (eq 2 (re-search-forward "Ä\\|a" nil t)))
99 (goto-char (1+ (point-min)))
100 (Assert (eq 3 (re-search-forward "ä\\|a" nil t)))
101 (goto-char (1+ (point-min)))
102 (Assert (eq 3 (re-search-forward "Ä\\|a" nil t)))
104 (goto-char (point-max))
105 (Assert (eq 2 (re-search-backward "ä\\|a" nil t)))
106 (goto-char (point-max))
107 (Assert (eq 2 (re-search-backward "Ä\\|a" nil t)))
108 (goto-char (1- (point-max)))
109 (Assert (eq 1 (re-search-backward "ä\\|a" nil t)))
110 (goto-char (1- (point-max)))
111 (Assert (eq 1 (re-search-backward "Ä\\|a" nil t)))
113 (setq case-fold-search nil)
115 (goto-char (point-min))
116 (Assert (eq 2 (re-search-forward "ä\\|a" nil t)))
117 (goto-char (point-min))
118 (Assert (eq 3 (re-search-forward "Ä\\|a" nil t)))
119 (goto-char (1+ (point-min)))
120 (Assert (not (re-search-forward "ä\\|a" nil t)))
121 (goto-char (1+ (point-min)))
122 (Assert (eq 3 (re-search-forward "Ä\\|a" nil t)))
124 (goto-char (point-max))
125 (Assert (eq 1 (re-search-backward "ä\\|a" nil t)))
126 (goto-char (point-max))
127 (Assert (eq 2 (re-search-backward "Ä\\|a" nil t)))
128 (goto-char (1- (point-max)))
129 (Assert (eq 1 (re-search-backward "ä\\|a" nil t)))
130 (goto-char (1- (point-max)))
131 (Assert (not (re-search-backward "Ä\\|a" nil t))))
136 (Assert (string-match "^\\(ä\\)\\1$" "ää"))
137 (Assert (string-match "^\\(ä\\)\\1$" "äÄ"))
138 (Assert (string-match "^\\(ä\\)\\1$" "ÄÄ"))
139 (Assert (string-match "^\\(ä\\)\\1$" "Ää"))
140 (Assert (string-match "^\\(Ä\\)\\1$" "ää"))
141 (Assert (string-match "^\\(Ä\\)\\1$" "äÄ"))
142 (Assert (string-match "^\\(Ä\\)\\1$" "ÄÄ"))
143 (Assert (string-match "^\\(Ä\\)\\1$" "Ää"))
145 (setq case-fold-search nil)
146 (Assert (string-match "^\\(ä\\)\\1$" "ää"))
147 (Assert (not (string-match "^\\(ä\\)\\1$" "äÄ")))
148 (Assert (not (string-match "^\\(ä\\)\\1$" "ÄÄ")))
149 (Assert (not (string-match "^\\(ä\\)\\1$" "Ää")))
150 (Assert (not (string-match "^\\(Ä\\)\\1$" "ää")))
151 (Assert (not (string-match "^\\(Ä\\)\\1$" "äÄ")))
152 (Assert (string-match "^\\(Ä\\)\\1$" "ÄÄ"))
153 (Assert (not (string-match "^\\(Ä\\)\\1$" "Ää"))))
155 ;; charset, charset_not
156 ;; Not called because it takes too much time.
157 (defun test-regexp-charset-paranoid ()
159 (max (expt 2 (if (featurep 'mule) 19 8)))
164 (when (setq char (int-to-char i))
165 (setq string (char-to-string char))
166 (if (or (and (<= 65 i)
171 (Assert (string-match range string))
172 (Assert (not (string-match range-not string))))
173 (Assert (not (string-match range string)))
174 (Assert (string-match range-not string))))
177 ;; (test-regexp-charset-paranoid)
179 ;; charset_mule, charset_mule_not
180 ;; Not called because it takes too much time.
181 (defun test-regex-charset-mule-paranoid ()
185 (range (format "[%c-%c]"
186 (make-char 'japanese-jisx0208 36 34)
187 (make-char 'japanese-jisx0208 36 42)))
188 (range-not (format "[^%c-%c]"
189 (make-char 'japanese-jisx0208 36 34)
190 (make-char 'japanese-jisx0208 36 42)))
191 (min-int (char-to-int (make-char 'japanese-jisx0208 36 34)))
192 (max-int (char-to-int (make-char 'japanese-jisx0208 36 42)))
195 (when (setq char (int-to-char i))
196 (setq string (char-to-string char))
197 (if (and (<= min-int i)
200 (Assert (string-match range string))
201 (Assert (not (string-match range-not string))))
202 (Assert (not (string-match range string)))
203 (Assert (string-match range-not string))))
206 ;; (test-regex-charset-mule-paranoid)