Mercurial > hg > xemacs-beta
annotate src/tests.c @ 5931:8955a38b8ecb cygwin
just barely working
| author | Henry Thompson <ht@markup.co.uk> |
|---|---|
| date | Wed, 09 Dec 2015 12:53:16 +0000 |
| parents | 65d65b52d608 |
| children | e2fae7783046 |
| rev | line source |
|---|---|
| 398 | 1 /* C support for testing XEmacs - see tests/automated/c-tests.el |
| 2 Copyright (C) 2000 Martin Buchholz | |
| 5013 | 3 Copyright (C) 2001, 2002, 2010 Ben Wing. |
| 3417 | 4 Copyright (C) 2006 The Free Software Foundation, Inc. |
| 398 | 5 |
| 6 This file is part of XEmacs. | |
| 7 | |
|
5402
308d34e9f07d
Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents:
5191
diff
changeset
|
8 XEmacs is free software: you can redistribute it and/or modify it |
| 398 | 9 under the terms of the GNU General Public License as published by the |
|
5402
308d34e9f07d
Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents:
5191
diff
changeset
|
10 Free Software Foundation, either version 3 of the License, or (at your |
|
308d34e9f07d
Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents:
5191
diff
changeset
|
11 option) any later version. |
| 398 | 12 |
| 13 XEmacs is distributed in the hope that it will be useful, but WITHOUT | |
| 14 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
| 15 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | |
| 16 for more details. | |
| 17 | |
| 18 You should have received a copy of the GNU General Public License | |
|
5402
308d34e9f07d
Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents:
5191
diff
changeset
|
19 along with XEmacs. If not, see <http://www.gnu.org/licenses/>. */ |
| 398 | 20 |
| 21 /* Author: Martin Buchholz | |
| 22 | |
| 23 This file provides support for running tests for XEmacs that cannot | |
| 24 be written entirely in Lisp. These tests are run automatically via | |
| 25 tests/automated/c-tests.el, or can be run by hand using M-x */ | |
| 26 | |
| 27 | |
| 28 #include <config.h> | |
| 29 #include "lisp.h" | |
| 30 #include "buffer.h" | |
| 31 #include "lstream.h" | |
| 489 | 32 #include "elhash.h" |
| 398 | 33 #include "opaque.h" |
| 3417 | 34 #include "file-coding.h" /* XCODING_SYSTEM_EOL_TYPE and its values */ |
| 398 | 35 |
| 36 static Lisp_Object Vtest_function_list; | |
| 37 | |
| 38 DEFUN ("test-data-format-conversion", Ftest_data_format_conversion, 0, 0, "", /* | |
|
4747
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
39 Return list of results of test TO_EXTERNAL_FORMAT() and TO_INTERNAL_FORMAT(). |
|
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
40 For use by the automated test suite. See tests/automated/c-tests. |
|
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
41 |
|
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
42 Each element is a list (DESCRIPTION, STATUS, REASON). |
|
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
43 DESCRIPTION is a string describing the test. |
|
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
44 STATUS is a symbol, either t (pass) or nil (fail). |
|
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
45 REASON is nil or a string describing the failure (not required). |
| 398 | 46 */ |
| 47 ()) | |
| 48 { | |
| 665 | 49 void *ptr; Bytecount len; |
|
5156
6bff4f219697
fix crash etc. in tests.c/c-tests.el
Ben Wing <ben@xemacs.org>
parents:
5037
diff
changeset
|
50 Lisp_Object string = Qnil, opaque = Qnil, conversion_result = Qnil; |
| 398 | 51 |
| 867 | 52 Ibyte int_foo[] = "\n\nfoo\nbar"; |
| 398 | 53 Extbyte ext_unix[]= "\n\nfoo\nbar"; |
| 54 | |
| 55 Extbyte ext_dos[] = "\r\n\r\nfoo\r\nbar"; | |
| 56 Extbyte ext_mac[] = "\r\rfoo\rbar"; | |
| 57 Lisp_Object opaque_dos = make_opaque (ext_dos, sizeof (ext_dos) - 1); | |
| 58 Lisp_Object string_foo = make_string (int_foo, sizeof (int_foo) - 1); | |
| 59 | |
| 60 Extbyte ext_latin[] = "f\372b\343\340"; | |
| 867 | 61 Ibyte int_latin1[] = "f\200\372b\200\343\200\340"; |
| 62 Ibyte int_latin2[] = "f\201\372b\201\343\201\340"; | |
| 398 | 63 #ifdef MULE |
| 64 Extbyte ext_latin12[]= "f\033-A\372b\343\340\033-B"; | |
| 65 Extbyte ext_tilde[] = "f~b~~"; | |
| 66 Lisp_Object string_latin2 = make_string (int_latin2, sizeof (int_latin2) - 1); | |
| 67 #endif | |
| 68 Lisp_Object opaque_latin = make_opaque (ext_latin, sizeof (ext_latin) - 1); | |
| 69 Lisp_Object opaque0_latin = make_opaque (ext_latin, sizeof (ext_latin)); | |
| 70 Lisp_Object string_latin1 = make_string (int_latin1, sizeof (int_latin1) - 1); | |
| 3417 | 71 int autodetect_eol_p = |
| 72 !NILP (Fsymbol_value (intern ("eol-detection-enabled-p"))); | |
|
5156
6bff4f219697
fix crash etc. in tests.c/c-tests.el
Ben Wing <ben@xemacs.org>
parents:
5037
diff
changeset
|
73 struct gcpro gcpro1, gcpro2, gcpro3, gcpro4, gcpro5; |
|
6bff4f219697
fix crash etc. in tests.c/c-tests.el
Ben Wing <ben@xemacs.org>
parents:
5037
diff
changeset
|
74 struct gcpro ngcpro1, ngcpro2, ngcpro3; |
|
6bff4f219697
fix crash etc. in tests.c/c-tests.el
Ben Wing <ben@xemacs.org>
parents:
5037
diff
changeset
|
75 #ifdef MULE |
|
6bff4f219697
fix crash etc. in tests.c/c-tests.el
Ben Wing <ben@xemacs.org>
parents:
5037
diff
changeset
|
76 struct gcpro ngcpro4; |
|
6bff4f219697
fix crash etc. in tests.c/c-tests.el
Ben Wing <ben@xemacs.org>
parents:
5037
diff
changeset
|
77 #endif |
|
6bff4f219697
fix crash etc. in tests.c/c-tests.el
Ben Wing <ben@xemacs.org>
parents:
5037
diff
changeset
|
78 |
|
6bff4f219697
fix crash etc. in tests.c/c-tests.el
Ben Wing <ben@xemacs.org>
parents:
5037
diff
changeset
|
79 /* DFC conversion inhibits GC, but we have a call2() below which calls |
|
6bff4f219697
fix crash etc. in tests.c/c-tests.el
Ben Wing <ben@xemacs.org>
parents:
5037
diff
changeset
|
80 Lisp, which can trigger GC, so we need to GC-protect everything here. */ |
|
6bff4f219697
fix crash etc. in tests.c/c-tests.el
Ben Wing <ben@xemacs.org>
parents:
5037
diff
changeset
|
81 GCPRO5 (string, opaque, conversion_result, opaque_dos, string_foo); |
|
6bff4f219697
fix crash etc. in tests.c/c-tests.el
Ben Wing <ben@xemacs.org>
parents:
5037
diff
changeset
|
82 #ifdef MULE |
|
6bff4f219697
fix crash etc. in tests.c/c-tests.el
Ben Wing <ben@xemacs.org>
parents:
5037
diff
changeset
|
83 NGCPRO4 (string_latin2, opaque_latin, opaque0_latin, string_latin1); |
|
6bff4f219697
fix crash etc. in tests.c/c-tests.el
Ben Wing <ben@xemacs.org>
parents:
5037
diff
changeset
|
84 #else |
|
6bff4f219697
fix crash etc. in tests.c/c-tests.el
Ben Wing <ben@xemacs.org>
parents:
5037
diff
changeset
|
85 NGCPRO3 (opaque_latin, opaque0_latin, string_latin1); |
|
6bff4f219697
fix crash etc. in tests.c/c-tests.el
Ben Wing <ben@xemacs.org>
parents:
5037
diff
changeset
|
86 #endif |
| 398 | 87 |
| 88 /* Check for expected strings before and after conversion. | |
| 771 | 89 Conversions depend on whether MULE is defined. */ |
|
4318
4d0f773d5e21
Fix the test failures introduced by the non-ISO-2022 coding systems.
Aidan Kehoe <kehoea@parhasard.net>
parents:
3417
diff
changeset
|
90 |
|
4d0f773d5e21
Fix the test failures introduced by the non-ISO-2022 coding systems.
Aidan Kehoe <kehoea@parhasard.net>
parents:
3417
diff
changeset
|
91 /* #### Any code below that uses iso-latin-2-with-esc is ill-conceived. */ |
|
4d0f773d5e21
Fix the test failures introduced by the non-ISO-2022 coding systems.
Aidan Kehoe <kehoea@parhasard.net>
parents:
3417
diff
changeset
|
92 |
| 398 | 93 #ifdef MULE |
| 94 #define DFC_CHECK_DATA_COND_MULE(ptr,len, \ | |
| 95 constant_string_mule, \ | |
|
4747
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
96 constant_string_non_mule, \ |
|
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
97 description) \ |
|
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
98 DFC_CHECK_DATA (ptr, len, constant_string_mule, description) |
| 398 | 99 #define DFC_CHECK_DATA_COND_MULE_NUL(ptr,len, \ |
| 100 constant_string_mule, \ | |
|
4747
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
101 constant_string_non_mule, \ |
|
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
102 description) \ |
|
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
103 DFC_CHECK_DATA_NUL (ptr, len, constant_string_mule, description) |
| 398 | 104 #else |
| 105 #define DFC_CHECK_DATA_COND_MULE(ptr,len, \ | |
| 106 constant_string_mule, \ | |
|
4747
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
107 constant_string_non_mule, \ |
|
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
108 description) \ |
|
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
109 DFC_CHECK_DATA (ptr, len, constant_string_non_mule, description) |
| 398 | 110 #define DFC_CHECK_DATA_COND_MULE_NUL(ptr,len, \ |
| 111 constant_string_mule, \ | |
|
4747
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
112 constant_string_non_mule, \ |
|
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
113 description) \ |
|
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
114 DFC_CHECK_DATA_NUL (ptr, len, constant_string_non_mule, description) |
| 398 | 115 #endif |
| 116 | |
| 3417 | 117 /* These now only apply to base coding systems, and |
| 118 need to test `eol-detection-enabled-p' at runtime. */ | |
|
4747
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
119 #define DFC_CHECK_DATA_COND_EOL(ptr,len, \ |
|
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
120 constant_string_eol, \ |
|
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
121 constant_string_non_eol, \ |
|
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
122 description) do { \ |
|
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
123 if (autodetect_eol_p) \ |
|
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
124 DFC_CHECK_DATA (ptr, len, constant_string_eol, description); \ |
|
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
125 else \ |
|
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
126 DFC_CHECK_DATA (ptr, len, constant_string_non_eol, description); \ |
| 3417 | 127 } while (0) |
|
4747
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
128 #define DFC_CHECK_DATA_COND_EOL_NUL(ptr,len, \ |
|
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
129 constant_string_eol, \ |
|
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
130 constant_string_non_eol, \ |
|
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
131 description) do { \ |
|
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
132 if (autodetect_eol_p) \ |
|
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
133 DFC_CHECK_DATA_NUL (ptr, len, constant_string_eol, description); \ |
|
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
134 else \ |
|
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
135 DFC_CHECK_DATA_NUL (ptr, len, constant_string_non_eol, description); \ |
| 3417 | 136 } while (0) |
| 398 | 137 |
| 138 /* Check for expected strings before and after conversion. */ | |
|
4747
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
139 #define DFC_CHECK_DATA(ptr,len,constant_string,test) do { \ |
|
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
140 DFC_INITIALIZE (test); \ |
|
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
141 DFC_CHECK_LENGTH (len, sizeof (constant_string) - 1, test); \ |
|
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
142 DFC_CHECK_CONTENT (ptr, constant_string, len, test); \ |
|
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
143 DFC_RESULT_PASS (test); \ |
| 398 | 144 } while (0) |
| 145 | |
| 146 /* Macro version that includes the trailing NULL byte. */ | |
|
4747
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
147 #define DFC_CHECK_DATA_NUL(ptr,len,constant_string,test) do { \ |
|
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
148 DFC_INITIALIZE (test); \ |
|
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
149 DFC_CHECK_LENGTH (len, sizeof (constant_string), test); \ |
|
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
150 DFC_CHECK_CONTENT (ptr, constant_string, len, test); \ |
|
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
151 DFC_RESULT_PASS (test); \ |
| 398 | 152 } while (0) |
| 153 | |
|
4747
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
154 /* WARNING WARNING WARNING! |
|
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
155 The following macros are NOT protected by "do { ... } while (0)"!! |
|
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
156 */ |
|
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
157 |
|
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
158 #define DFC_INITIALIZE(test_name) if (0) |
|
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
159 |
|
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
160 #define DFC_CHECK_LENGTH(len1,len2,str1) \ |
|
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
161 else if ((len1) != (len2)) \ |
|
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
162 conversion_result = \ |
|
4953
304aebb79cd3
function renamings to track names of char typedefs
Ben Wing <ben@xemacs.org>
parents:
4952
diff
changeset
|
163 Fcons (list3 (build_cistring(str1), Qnil, build_ascstring("wrong length")), \ |
|
4747
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
164 conversion_result) |
|
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
165 |
|
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
166 #define DFC_CHECK_CONTENT(str1,str2,len1,str3) \ |
|
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
167 else if (memcmp (str1, str2, len1)) \ |
|
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
168 conversion_result = \ |
|
4953
304aebb79cd3
function renamings to track names of char typedefs
Ben Wing <ben@xemacs.org>
parents:
4952
diff
changeset
|
169 Fcons (list3 (build_cistring(str3), Qnil, \ |
|
4952
19a72041c5ed
Mule-izing, various fixes related to char * arguments
Ben Wing <ben@xemacs.org>
parents:
4752
diff
changeset
|
170 build_ascstring("octet comparison failed")), \ |
|
4747
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
171 conversion_result) |
|
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
172 |
|
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
173 #define DFC_RESULT_PASS(str1) \ |
|
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
174 else \ |
|
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
175 conversion_result = \ |
|
4953
304aebb79cd3
function renamings to track names of char typedefs
Ben Wing <ben@xemacs.org>
parents:
4952
diff
changeset
|
176 Fcons (list3 (build_cistring(str1), Qt, Qnil), \ |
|
4747
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
177 conversion_result) |
|
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
178 |
| 398 | 179 #ifdef MULE |
| 180 ptr = NULL, len = rand(); | |
| 181 TO_EXTERNAL_FORMAT (DATA, (int_latin2, sizeof (int_latin2)), | |
| 182 ALLOCA, (ptr, len), | |
| 771 | 183 intern ("iso-8859-2")); |
|
4747
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
184 DFC_CHECK_DATA_NUL (ptr, len, ext_latin, |
|
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
185 "Latin-2 DATA, ALLOCA, Latin 2/NUL"); |
| 398 | 186 |
| 187 ptr = NULL, len = rand(); | |
| 188 TO_EXTERNAL_FORMAT (LISP_STRING, string_latin2, | |
| 189 ALLOCA, (ptr, len), | |
| 771 | 190 intern ("iso-8859-2")); |
|
4747
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
191 DFC_CHECK_DATA (ptr, len, ext_latin, |
|
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
192 "Latin-2 Lisp string, ALLOCA, Latin 2"); |
| 398 | 193 |
| 194 ptr = NULL, len = rand(); | |
| 195 TO_EXTERNAL_FORMAT (LISP_STRING, string_latin1, | |
| 196 ALLOCA, (ptr, len), | |
|
4318
4d0f773d5e21
Fix the test failures introduced by the non-ISO-2022 coding systems.
Aidan Kehoe <kehoea@parhasard.net>
parents:
3417
diff
changeset
|
197 intern ("iso-latin-2-with-esc")); |
|
4747
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
198 DFC_CHECK_DATA (ptr, len, ext_latin12, |
|
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
199 "Latin-1 Lisp string, ALLOCA, Latin 2/ESC"); |
| 398 | 200 |
| 201 ptr = NULL, len = rand(); | |
| 202 TO_EXTERNAL_FORMAT (DATA, (int_latin2, sizeof (int_latin2) - 1), | |
| 203 MALLOC, (ptr, len), | |
| 771 | 204 intern ("iso-8859-2")); |
|
4747
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
205 DFC_CHECK_DATA (ptr, len, ext_latin, "Latin-2 DATA, MALLOC, Latin-2"); |
|
4976
16112448d484
Rename xfree(FOO, TYPE) -> xfree(FOO)
Ben Wing <ben@xemacs.org>
parents:
4953
diff
changeset
|
206 xfree (ptr); |
| 398 | 207 |
| 208 TO_EXTERNAL_FORMAT (DATA, (int_latin2, sizeof (int_latin2) - 1), | |
| 209 LISP_OPAQUE, opaque, | |
| 771 | 210 intern ("iso-8859-2")); |
|
4747
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
211 DFC_CHECK_DATA (XOPAQUE_DATA (opaque), XOPAQUE_SIZE (opaque), ext_latin, |
|
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
212 "Latin-2 DATA, Lisp opaque, Latin-2"); |
| 398 | 213 |
| 214 ptr = NULL, len = rand(); | |
| 215 TO_INTERNAL_FORMAT (DATA, (ext_latin, sizeof (ext_latin) - 1), | |
| 216 ALLOCA, (ptr, len), | |
|
4318
4d0f773d5e21
Fix the test failures introduced by the non-ISO-2022 coding systems.
Aidan Kehoe <kehoea@parhasard.net>
parents:
3417
diff
changeset
|
217 intern ("iso-latin-2-with-esc")); |
|
4747
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
218 DFC_CHECK_DATA (ptr, len, int_latin2, |
|
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
219 "Latin-2/ESC, ALLOCA, Latin-1 DATA"); |
| 398 | 220 |
| 221 ptr = NULL, len = rand(); | |
| 222 TO_INTERNAL_FORMAT (DATA, (ext_latin, sizeof (ext_latin) - 1), | |
| 223 MALLOC, (ptr, len), | |
|
4318
4d0f773d5e21
Fix the test failures introduced by the non-ISO-2022 coding systems.
Aidan Kehoe <kehoea@parhasard.net>
parents:
3417
diff
changeset
|
224 intern ("iso-latin-2-with-esc")); |
|
4747
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
225 DFC_CHECK_DATA (ptr, len, int_latin2, |
|
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
226 "Latin-2/ESC, MALLOC, Latin-1 DATA"); |
|
4976
16112448d484
Rename xfree(FOO, TYPE) -> xfree(FOO)
Ben Wing <ben@xemacs.org>
parents:
4953
diff
changeset
|
227 xfree (ptr); |
| 398 | 228 |
| 229 TO_INTERNAL_FORMAT (DATA, (ext_latin, sizeof (ext_latin) - 1), | |
| 230 LISP_STRING, string, | |
|
4318
4d0f773d5e21
Fix the test failures introduced by the non-ISO-2022 coding systems.
Aidan Kehoe <kehoea@parhasard.net>
parents:
3417
diff
changeset
|
231 intern ("iso-latin-2-with-esc")); |
|
4747
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
232 DFC_CHECK_DATA (XSTRING_DATA (string), XSTRING_LENGTH (string), int_latin2, |
|
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
233 "Latin-2/ESC, Lisp string, Latin-2"); |
| 398 | 234 |
| 235 TO_INTERNAL_FORMAT (LISP_OPAQUE, opaque_latin, | |
| 236 LISP_STRING, string, | |
|
4318
4d0f773d5e21
Fix the test failures introduced by the non-ISO-2022 coding systems.
Aidan Kehoe <kehoea@parhasard.net>
parents:
3417
diff
changeset
|
237 intern ("iso-latin-2-with-esc")); |
|
4747
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
238 DFC_CHECK_DATA (XSTRING_DATA (string), XSTRING_LENGTH (string), int_latin2, |
|
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
239 "Lisp opaque, Lisp string, Latin-2/ESC"); |
| 398 | 240 |
| 241 TO_INTERNAL_FORMAT (LISP_OPAQUE, opaque0_latin, | |
| 242 LISP_STRING, string, | |
|
4318
4d0f773d5e21
Fix the test failures introduced by the non-ISO-2022 coding systems.
Aidan Kehoe <kehoea@parhasard.net>
parents:
3417
diff
changeset
|
243 intern ("iso-latin-2-with-esc")); |
|
4747
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
244 DFC_CHECK_DATA_NUL (XSTRING_DATA (string), XSTRING_LENGTH (string), int_latin2, |
|
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
245 "Lisp opaque, Lisp string, Latin-2/ESC/NUL"); |
| 398 | 246 |
| 247 TO_INTERNAL_FORMAT (LISP_OPAQUE, opaque0_latin, | |
| 248 LISP_BUFFER, Fcurrent_buffer(), | |
|
4318
4d0f773d5e21
Fix the test failures introduced by the non-ISO-2022 coding systems.
Aidan Kehoe <kehoea@parhasard.net>
parents:
3417
diff
changeset
|
249 intern ("iso-latin-2-with-esc")); |
| 398 | 250 DFC_CHECK_DATA_NUL (BUF_BYTE_ADDRESS (current_buffer, BUF_PT (current_buffer)), |
|
4747
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
251 sizeof (int_latin2), int_latin2, |
|
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
252 "Lisp opaque, Lisp buffer, Latin-2/ESC/NUL"); |
| 398 | 253 |
| 254 TO_INTERNAL_FORMAT (LISP_OPAQUE, opaque_latin, | |
| 255 LISP_BUFFER, Fcurrent_buffer(), | |
| 256 intern ("iso-8859-1")); | |
| 257 DFC_CHECK_DATA (BUF_BYTE_ADDRESS (current_buffer, BUF_PT (current_buffer)), | |
|
4747
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
258 sizeof (int_latin1) - 1, int_latin1, |
|
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
259 "Lisp opaque, Lisp buffer, Latin-1"); |
| 398 | 260 |
| 261 TO_INTERNAL_FORMAT (DATA, (ext_latin12, sizeof (ext_latin12) - 1), | |
| 262 ALLOCA, (ptr, len), | |
|
4318
4d0f773d5e21
Fix the test failures introduced by the non-ISO-2022 coding systems.
Aidan Kehoe <kehoea@parhasard.net>
parents:
3417
diff
changeset
|
263 intern ("iso-latin-2-with-esc")); |
|
4747
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
264 DFC_CHECK_DATA (ptr, len, int_latin1, "DATA, ALLOCA, Latin-1"); |
| 398 | 265 |
| 266 #endif /* MULE */ | |
| 267 | |
| 268 ptr = NULL, len = rand(); | |
| 269 TO_EXTERNAL_FORMAT (DATA, (int_latin1, sizeof (int_latin1) - 1), | |
| 270 ALLOCA, (ptr, len), | |
| 271 Qbinary); | |
|
4747
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
272 DFC_CHECK_DATA_COND_MULE (ptr, len, ext_latin, int_latin1, |
|
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
273 "Latin-1 DATA, ALLOCA, binary"); |
| 398 | 274 |
| 275 ptr = NULL, len = rand(); | |
| 276 TO_EXTERNAL_FORMAT (DATA, (int_latin1, sizeof (int_latin1)), | |
| 277 ALLOCA, (ptr, len), | |
| 278 Qbinary); | |
|
4747
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
279 DFC_CHECK_DATA_COND_MULE_NUL (ptr, len, ext_latin, int_latin1, |
|
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
280 "Latin-1 DATA, ALLOCA, binary/NUL"); |
| 398 | 281 |
| 282 ptr = NULL, len = rand(); | |
| 283 TO_EXTERNAL_FORMAT (DATA, (int_latin2, sizeof (int_latin2) - 1), | |
| 284 ALLOCA, (ptr, len), | |
| 771 | 285 Qbinary); |
|
4747
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
286 DFC_CHECK_DATA_COND_MULE (ptr, len, ext_tilde, int_latin2, |
|
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
287 "Latin-2 DATA, ALLOCA, binary"); |
| 398 | 288 |
| 289 ptr = NULL, len = rand(); | |
| 290 TO_EXTERNAL_FORMAT (DATA, (int_latin1, sizeof (int_latin1) - 1), | |
| 291 ALLOCA, (ptr, len), | |
| 292 intern ("iso-8859-1")); | |
|
4747
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
293 DFC_CHECK_DATA_COND_MULE (ptr, len, ext_latin, int_latin1, |
|
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
294 "Latin-1 DATA, ALLOCA, Latin-1"); |
| 398 | 295 |
| 296 | |
| 297 ptr = NULL, len = rand(); | |
| 298 TO_EXTERNAL_FORMAT (LISP_STRING, string_latin1, | |
| 299 ALLOCA, (ptr, len), | |
| 300 Qbinary); | |
|
4747
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
301 DFC_CHECK_DATA_COND_MULE (ptr, len, ext_latin, int_latin1, |
|
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
302 "Latin-1 Lisp string, ALLOCA, binary"); |
| 398 | 303 |
| 304 ptr = NULL, len = rand(); | |
| 305 TO_EXTERNAL_FORMAT (LISP_STRING, string_latin1, | |
| 306 ALLOCA, (ptr, len), | |
| 771 | 307 Qbinary); |
|
4747
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
308 DFC_CHECK_DATA_COND_MULE (ptr, len, ext_latin, int_latin1, |
|
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
309 "Latin-1 Lisp string, ALLOCA, binary"); |
| 398 | 310 |
| 311 ptr = NULL, len = rand(); | |
| 312 TO_EXTERNAL_FORMAT (LISP_STRING, string_latin1, | |
| 313 ALLOCA, (ptr, len), | |
| 314 intern ("iso-8859-1")); | |
|
4747
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
315 DFC_CHECK_DATA_COND_MULE (ptr, len, ext_latin, int_latin1, |
|
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
316 "Latin-1 Lisp string, ALLOCA, Latin-1"); |
| 398 | 317 |
| 318 ptr = NULL, len = rand(); | |
| 319 TO_EXTERNAL_FORMAT (DATA, (int_latin1, sizeof (int_latin1) - 1), | |
| 320 MALLOC, (ptr, len), | |
| 321 Qbinary); | |
|
4747
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
322 DFC_CHECK_DATA_COND_MULE (ptr, len, ext_latin, int_latin1, |
|
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
323 "Latin-1 DATA, MALLOC, binary"); |
|
4976
16112448d484
Rename xfree(FOO, TYPE) -> xfree(FOO)
Ben Wing <ben@xemacs.org>
parents:
4953
diff
changeset
|
324 xfree (ptr); |
| 398 | 325 |
| 326 ptr = NULL, len = rand(); | |
| 327 TO_EXTERNAL_FORMAT (DATA, (int_latin2, sizeof (int_latin2)), | |
| 328 MALLOC, (ptr, len), | |
| 771 | 329 Qbinary); |
|
4747
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
330 DFC_CHECK_DATA_COND_MULE_NUL (ptr, len, ext_tilde, int_latin2, |
|
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
331 "Latin-2 DATA, MALLOC, binary/NUL"); |
|
4976
16112448d484
Rename xfree(FOO, TYPE) -> xfree(FOO)
Ben Wing <ben@xemacs.org>
parents:
4953
diff
changeset
|
332 xfree (ptr); |
| 398 | 333 |
| 334 ptr = NULL, len = rand(); | |
| 335 TO_EXTERNAL_FORMAT (DATA, (int_latin1, sizeof (int_latin1) - 1), | |
| 336 MALLOC, (ptr, len), | |
| 337 intern ("iso-8859-1")); | |
|
4747
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
338 DFC_CHECK_DATA_COND_MULE (ptr, len, ext_latin, int_latin1, |
|
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
339 "Latin-1 DATA, MALLOC, Latin-1"); |
|
4976
16112448d484
Rename xfree(FOO, TYPE) -> xfree(FOO)
Ben Wing <ben@xemacs.org>
parents:
4953
diff
changeset
|
340 xfree (ptr); |
| 398 | 341 |
| 342 TO_EXTERNAL_FORMAT (DATA, (int_latin1, sizeof (int_latin1) - 1), | |
| 343 LISP_OPAQUE, opaque, | |
| 344 Qbinary); | |
| 345 DFC_CHECK_DATA_COND_MULE (XOPAQUE_DATA (opaque), | |
|
4747
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
346 XOPAQUE_SIZE (opaque), ext_latin, int_latin1, |
|
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
347 "Latin-1 DATA, Lisp opaque, binary"); |
| 398 | 348 |
| 349 TO_EXTERNAL_FORMAT (DATA, (int_latin2, sizeof (int_latin2)), | |
| 350 LISP_OPAQUE, opaque, | |
| 771 | 351 Qbinary); |
| 398 | 352 DFC_CHECK_DATA_COND_MULE_NUL (XOPAQUE_DATA (opaque), |
|
4747
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
353 XOPAQUE_SIZE (opaque), ext_tilde, int_latin2, |
|
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
354 "Latin-2 DATA, Lisp opaque, binary"); |
| 398 | 355 |
| 356 TO_EXTERNAL_FORMAT (DATA, (int_latin1, sizeof (int_latin1) - 1), | |
| 357 LISP_OPAQUE, opaque, | |
| 358 intern ("iso-8859-1")); | |
| 359 DFC_CHECK_DATA_COND_MULE (XOPAQUE_DATA (opaque), | |
|
4747
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
360 XOPAQUE_SIZE (opaque), ext_latin, int_latin1, |
|
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
361 "Latin-1 DATA, Lisp opaque, Latin-1"); |
| 398 | 362 |
| 363 ptr = NULL, len = rand(); | |
| 364 TO_INTERNAL_FORMAT (DATA, (ext_latin, sizeof (ext_latin) - 1), | |
| 365 ALLOCA, (ptr, len), | |
| 366 Qbinary); | |
|
4747
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
367 DFC_CHECK_DATA_COND_MULE (ptr, len, int_latin1, ext_latin, |
|
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
368 "Latin-1 DATA, ALLOCA, binary"); |
| 398 | 369 |
| 370 ptr = NULL, len = rand(); | |
| 371 TO_INTERNAL_FORMAT (DATA, (ext_latin, sizeof (ext_latin)), | |
| 372 ALLOCA, (ptr, len), | |
| 373 intern ("iso-8859-1")); | |
|
4747
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
374 DFC_CHECK_DATA_COND_MULE_NUL (ptr, len, int_latin1, ext_latin, |
|
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
375 "Latin-1 DATA, ALLOCA, Latin-1"); |
| 398 | 376 |
| 377 ptr = NULL, len = rand(); | |
| 378 TO_INTERNAL_FORMAT (DATA, (ext_latin, sizeof (ext_latin)), | |
| 379 MALLOC, (ptr, len), | |
| 380 intern ("iso-8859-1")); | |
|
4747
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
381 DFC_CHECK_DATA_COND_MULE_NUL (ptr, len, int_latin1, ext_latin, |
|
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
382 "Latin-1 DATA, MALLOC, Latin-1"); |
|
4976
16112448d484
Rename xfree(FOO, TYPE) -> xfree(FOO)
Ben Wing <ben@xemacs.org>
parents:
4953
diff
changeset
|
383 xfree (ptr); |
| 398 | 384 |
| 385 ptr = NULL, len = rand(); | |
| 386 TO_INTERNAL_FORMAT (DATA, (ext_latin, sizeof (ext_latin)), | |
| 387 MALLOC, (ptr, len), | |
| 388 Qnil); | |
|
4747
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
389 DFC_CHECK_DATA_COND_MULE_NUL (ptr, len, int_latin1, ext_latin, |
|
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
390 "Latin-1 DATA, MALLOC, nil"); |
|
4976
16112448d484
Rename xfree(FOO, TYPE) -> xfree(FOO)
Ben Wing <ben@xemacs.org>
parents:
4953
diff
changeset
|
391 xfree (ptr); |
| 398 | 392 |
| 393 TO_INTERNAL_FORMAT (DATA, (ext_latin, sizeof (ext_latin) - 1), | |
| 394 LISP_STRING, string, | |
| 395 intern ("iso-8859-1")); | |
| 396 DFC_CHECK_DATA_COND_MULE (XSTRING_DATA (string), | |
|
4747
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
397 XSTRING_LENGTH (string), int_latin1, ext_latin, |
|
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
398 "Latin-1 DATA, Lisp stirng, Latin-1"); |
| 398 | 399 |
| 400 TO_INTERNAL_FORMAT (LISP_OPAQUE, opaque_latin, | |
| 401 LISP_STRING, string, | |
| 402 intern ("iso-8859-1")); | |
| 403 DFC_CHECK_DATA_COND_MULE (XSTRING_DATA (string), | |
|
4747
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
404 XSTRING_LENGTH (string), int_latin1, ext_latin, |
|
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
405 "Latin-1 Lisp opaque, Lisp string, Latin-1"); |
| 398 | 406 |
| 407 TO_INTERNAL_FORMAT (LISP_OPAQUE, opaque0_latin, | |
| 408 LISP_STRING, string, | |
| 409 intern ("iso-8859-1")); | |
| 410 DFC_CHECK_DATA_COND_MULE_NUL (XSTRING_DATA (string), | |
|
4747
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
411 XSTRING_LENGTH (string), int_latin1, ext_latin, |
|
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
412 "Latin-1 Lisp opaque, Lisp string, Latin-1/NUL"); |
| 398 | 413 |
| 3417 | 414 /* This next group used to use the COND_EOL macros, but with the new Mule, |
| 415 they all specify an EOL convention, and all XEmacsen can grok them. */ | |
| 398 | 416 ptr = NULL, len = rand(); |
| 417 TO_EXTERNAL_FORMAT (DATA, (int_foo, sizeof (int_foo)), | |
| 418 MALLOC, (ptr, len), | |
| 771 | 419 Qbinary); |
|
4747
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
420 DFC_CHECK_DATA_NUL (ptr, len, ext_unix, |
|
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
421 "ASCII DATA, MALLOC, binary/LF/NUL"); |
|
4976
16112448d484
Rename xfree(FOO, TYPE) -> xfree(FOO)
Ben Wing <ben@xemacs.org>
parents:
4953
diff
changeset
|
422 xfree (ptr); |
| 398 | 423 |
| 424 ptr = NULL, len = rand(); | |
| 425 TO_EXTERNAL_FORMAT (DATA, (int_foo, sizeof (int_foo) - 1), | |
| 426 LISP_OPAQUE, opaque, | |
| 427 intern ("raw-text-mac")); | |
|
4747
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
428 DFC_CHECK_DATA (XOPAQUE_DATA (opaque), XOPAQUE_SIZE (opaque), ext_mac, |
|
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
429 "ASCII DATA, Lisp opaque, binary/CR"); |
| 398 | 430 |
| 431 ptr = NULL, len = rand(); | |
| 432 TO_EXTERNAL_FORMAT (LISP_STRING, string_foo, | |
| 433 ALLOCA, (ptr, len), | |
| 434 intern ("raw-text-dos")); | |
|
4747
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
435 DFC_CHECK_DATA (ptr, len, ext_dos, "ASCII Lisp string, ALLOCA, binary/CRLF"); |
| 398 | 436 |
| 437 ptr = NULL, len = rand(); | |
| 438 TO_EXTERNAL_FORMAT (DATA, (int_foo, sizeof (int_foo) - 1), | |
| 439 ALLOCA, (ptr, len), | |
| 440 intern ("raw-text-unix")); | |
|
4747
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
441 DFC_CHECK_DATA (ptr, len, ext_unix, "ASCII DATA, ALLOCA, binary/LF"); |
| 398 | 442 |
| 443 ptr = NULL, len = rand(); | |
| 444 TO_EXTERNAL_FORMAT (LISP_STRING, string_foo, | |
| 445 MALLOC, (ptr, len), | |
| 446 intern ("no-conversion-mac")); | |
|
4747
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
447 DFC_CHECK_DATA (ptr, len, ext_mac, "ASCII Lisp string, MALLOC, binary/CR"); |
|
4976
16112448d484
Rename xfree(FOO, TYPE) -> xfree(FOO)
Ben Wing <ben@xemacs.org>
parents:
4953
diff
changeset
|
448 xfree (ptr); |
| 398 | 449 |
| 450 ptr = NULL, len = rand(); | |
| 451 TO_EXTERNAL_FORMAT (DATA, (int_foo, sizeof (int_foo) - 1), | |
| 452 ALLOCA, (ptr, len), | |
| 771 | 453 intern ("no-conversion-dos")); |
|
4747
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
454 DFC_CHECK_DATA (ptr, len, ext_dos, "ASCII DATA, ALLOCA, binary/CRLF"); |
| 398 | 455 |
| 456 ptr = NULL, len = rand(); | |
| 457 TO_EXTERNAL_FORMAT (DATA, (int_foo, sizeof (int_foo)), | |
| 458 ALLOCA, (ptr, len), | |
| 459 intern ("no-conversion-unix")); | |
|
4747
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
460 DFC_CHECK_DATA_NUL (ptr, len, ext_unix, "ASCII DATA, ALLOCA, binary/LF/NUL"); |
| 3417 | 461 |
| 462 /* Oh, Lawdy, Lawdy, Lawdy, this done broke mah heart! | |
| 463 | |
| 464 I tried using the technique | |
| 465 | |
| 466 Fget_coding_system (call2 | |
| 467 (intern ("coding-system-change-eol-conversion"), | |
| 468 intern ("undecided"), $EOL_TYPE)); | |
| 469 XCODING_SYSTEM_EOL_TYPE (cs_to_use) = $EOL_DETECT_TYPE; | |
| 470 | |
| 471 with EOL_TYPE = Qlf (for no-detect) and Qnil (for auto-detect), | |
| 472 and with EOL_DETECT_TYPE = EOL_LF and EOL_AUTODETECT | |
| 473 respectively, but this doesn't seem to work on the `undecided' | |
| 474 coding system. The coding-system-eol-type attribute on the | |
| 475 coding system itself needs to be changed, too. I'm not sure at | |
| 476 the moment how `set-eol-detection' works its magic, but the code | |
| 477 below gives correct test results without default EOL detection, | |
| 478 with default EOL detection, and with Mule. Ship it! | |
| 479 | |
| 480 Mule. You'll envy the dead. | |
| 481 */ | |
| 398 | 482 |
| 3417 | 483 { |
| 484 /* Check eol autodetection doesn't happen when disabled -- cheat. */ | |
| 485 Lisp_Object cs_to_use = Fget_coding_system (intern ("undecided-unix")); | |
| 486 TO_INTERNAL_FORMAT (LISP_OPAQUE, opaque_dos, | |
| 487 LISP_BUFFER, Fcurrent_buffer(), | |
| 488 cs_to_use); | |
| 489 DFC_CHECK_DATA (BUF_BYTE_ADDRESS (current_buffer, BUF_PT (current_buffer)), | |
|
4747
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
490 sizeof (ext_dos) - 1, ext_dos, |
|
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
491 "DOS Lisp opaque, Lisp buffer, undecided-unix"); |
| 3417 | 492 |
| 493 /* Check eol autodetection works when enabled -- honest. */ | |
| 494 cs_to_use = | |
| 495 Fget_coding_system (call2 | |
| 496 (intern ("coding-system-change-eol-conversion"), | |
| 497 intern ("undecided"), Qnil)); | |
| 498 XCODING_SYSTEM_EOL_TYPE (cs_to_use) = EOL_AUTODETECT; | |
| 499 TO_INTERNAL_FORMAT (LISP_OPAQUE, opaque_dos, | |
| 500 LISP_BUFFER, Fcurrent_buffer(), | |
| 501 cs_to_use); | |
| 502 DFC_CHECK_DATA (BUF_BYTE_ADDRESS (current_buffer, BUF_PT (current_buffer)), | |
|
4747
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
503 sizeof (int_foo) - 1, int_foo, |
|
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
504 "DOS Lisp opaque, Lisp buffer, undecided"); |
| 3417 | 505 /* reset to default */ |
| 506 XCODING_SYSTEM_EOL_TYPE (cs_to_use) = | |
| 507 autodetect_eol_p ? EOL_AUTODETECT : EOL_LF; | |
| 508 } | |
| 509 | |
| 510 /* Does eol-detection-enabled-p reflect the actual state of affairs? | |
| 511 This probably could be tested in Lisp somehow. Should it? */ | |
| 398 | 512 TO_INTERNAL_FORMAT (LISP_OPAQUE, opaque_dos, |
| 513 LISP_BUFFER, Fcurrent_buffer(), | |
| 514 intern ("undecided")); | |
| 3417 | 515 if (autodetect_eol_p) |
| 516 DFC_CHECK_DATA (BUF_BYTE_ADDRESS (current_buffer, | |
| 517 BUF_PT (current_buffer)), | |
|
4747
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
518 sizeof (int_foo) - 1, int_foo, |
|
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
519 "DOS Lisp opaque, Lisp buffer, autodetect eol"); |
| 3417 | 520 else |
| 521 DFC_CHECK_DATA (BUF_BYTE_ADDRESS (current_buffer, | |
| 522 BUF_PT (current_buffer)), | |
|
4747
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
523 sizeof (ext_dos) - 1, ext_dos, |
|
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
524 "DOS Lisp opaque, Lisp buffer, no autodetect eol"); |
| 398 | 525 |
| 526 TO_INTERNAL_FORMAT (DATA, (ext_mac, sizeof (ext_mac) - 1), | |
| 527 LISP_STRING, string, | |
| 528 intern ("iso-8859-1")); | |
| 529 DFC_CHECK_DATA_COND_EOL (XSTRING_DATA (string), | |
|
4747
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
530 XSTRING_LENGTH (string), int_foo, ext_mac, |
|
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
531 "Mac DATA, Lisp string, Latin-1/EOL"); |
| 398 | 532 { |
| 533 Lisp_Object stream = | |
| 534 make_fixed_buffer_input_stream (ext_dos, sizeof (ext_dos) - 1); | |
| 535 TO_INTERNAL_FORMAT (LISP_LSTREAM, stream, | |
| 536 LISP_STRING, string, | |
| 537 intern ("iso-8859-1")); | |
| 538 DFC_CHECK_DATA_COND_EOL (XSTRING_DATA (string), | |
|
4747
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
539 XSTRING_LENGTH (string), int_foo, ext_dos, |
|
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
540 "DOS lstream, Lisp string, Latin-1/EOL"); |
| 398 | 541 } |
| 542 | |
| 543 TO_INTERNAL_FORMAT (DATA, (ext_unix, sizeof (ext_unix) - 1), | |
| 544 LISP_STRING, string, | |
| 545 intern ("no-conversion")); | |
| 546 DFC_CHECK_DATA_COND_EOL (XSTRING_DATA (string), | |
|
4747
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
547 XSTRING_LENGTH (string), int_foo, ext_unix, |
|
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
548 "Unix DATA, Lisp string, no-conversion"); |
| 398 | 549 |
| 550 ptr = NULL, len = rand(); | |
| 551 TO_EXTERNAL_FORMAT (LISP_OPAQUE, opaque_dos, | |
| 552 ALLOCA, (ptr, len), | |
| 553 Qbinary); | |
|
4747
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
554 DFC_CHECK_DATA (ptr, len, ext_dos, "DOS Lisp opaque, ALLOCA, binary"); |
| 398 | 555 |
|
5156
6bff4f219697
fix crash etc. in tests.c/c-tests.el
Ben Wing <ben@xemacs.org>
parents:
5037
diff
changeset
|
556 NUNGCPRO; |
|
6bff4f219697
fix crash etc. in tests.c/c-tests.el
Ben Wing <ben@xemacs.org>
parents:
5037
diff
changeset
|
557 UNGCPRO; |
|
4747
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
558 return conversion_result; |
| 398 | 559 } |
| 560 | |
|
5776
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
561 DEFUN ("test-character-tell", Ftest_character_tell, 0, 0, "", /* |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
562 Return list of results of tests of the stream character offset code. |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
563 For use by the automated test suite. See tests/automated/c-tests. |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
564 |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
565 Each element is a list (DESCRIPTION, STATUS, REASON). |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
566 DESCRIPTION is a string describing the test. |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
567 STATUS is a symbol, either t (pass) or nil (fail). |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
568 REASON is nil or a string describing the failure (not required). |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
569 */ |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
570 ()) |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
571 { |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
572 Extbyte ext_unix[]= "\n\nfoo\nbar\n\nf\372b\343\340\nfoo\nbar\n"; |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
573 /* Previous string in UTF-8. */ |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
574 Extbyte ext_utf_8_unix[] |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
575 = "\n\nfoo\nbar\n\nf\303\272b\303\243\303\240\nfoo\nbar\n"; |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
576 Charcount ext_utf_8_unix_char_len = 25; |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
577 Ibyte shortbuf[13], longbuf[512]; |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
578 Lisp_Object stream = |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
579 make_fixed_buffer_input_stream (ext_unix, sizeof (ext_unix) - 1); |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
580 Lisp_Object result = Qnil, string = Qnil; |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
581 Charcount count; |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
582 Bytecount bytecount; |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
583 struct gcpro gcpro1, gcpro2, gcpro3; |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
584 |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
585 #define CHARACTER_TELL_ASSERT(assertion, description, failing_case) \ |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
586 do \ |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
587 { \ |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
588 if (assertion) \ |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
589 result = Fcons (list3 (build_cistring (description), \ |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
590 Qt, Qnil), result); \ |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
591 else \ |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
592 result = Fcons (list3 (build_cistring (description), \ |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
593 Qnil, build_ascstring (failing_case)), \ |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
594 result); \ |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
595 } \ |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
596 while (0) |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
597 |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
598 GCPRO3 (stream, result, string); |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
599 |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
600 Lstream_set_buffering (XLSTREAM (stream), LSTREAM_BLOCKN_BUFFERED, 65536); |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
601 stream = make_coding_input_stream |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
602 (XLSTREAM (stream), Ffind_coding_system (intern ("no-conversion-unix")), |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
603 CODING_DECODE, 0); |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
604 Lstream_set_buffering (XLSTREAM (stream), LSTREAM_BLOCKN_BUFFERED, 65536); |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
605 |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
606 bytecount = Lstream_read (XLSTREAM (stream), longbuf, sizeof (longbuf)); |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
607 |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
608 CHARACTER_TELL_ASSERT (Lstream_character_tell (XLSTREAM (stream)) |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
609 == sizeof (ext_unix) -1, |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
610 "basic character tell, no-conversion-unix", |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
611 "basic character tell failed"); |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
612 |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
613 string = build_extstring (ext_unix, |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
614 Ffind_coding_system (intern |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
615 ("no-conversion-unix"))); |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
616 |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
617 CHARACTER_TELL_ASSERT (Lstream_character_tell (XLSTREAM (stream)) |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
618 == string_char_length (string), |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
619 "repeat basic character tell, no-conversion-unix", |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
620 "repeat basic character tell failed with string"); |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
621 |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
622 count = Lstream_character_tell (XLSTREAM (stream)); |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
623 |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
624 Lstream_unread (XLSTREAM (stream), "r\n", 2); |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
625 |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
626 /* This should give the same result as before the unread. */ |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
627 CHARACTER_TELL_ASSERT (Lstream_character_tell (XLSTREAM (stream)) |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
628 == count, "checking post-unread character tell", |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
629 "post-unread character tell failed"); |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
630 bytecount += Lstream_read (XLSTREAM (stream), longbuf + bytecount, |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
631 sizeof (longbuf) - bytecount); |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
632 |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
633 CHARACTER_TELL_ASSERT (Lstream_character_tell (XLSTREAM (stream)) |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
634 == count + 2, |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
635 "checking post-unread+read character tell", |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
636 "post-unread+read character tell failed"); |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
637 |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
638 /* This seems to be buggy for my purposes. */ |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
639 /* Lstream_rewind (XLSTREAM (stream)); */ |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
640 Lstream_close (XLSTREAM (stream)); |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
641 Lstream_delete (XLSTREAM (stream)); |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
642 |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
643 stream = make_fixed_buffer_input_stream (ext_unix, sizeof (ext_unix) - 1); |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
644 Lstream_set_buffering (XLSTREAM (stream), LSTREAM_BLOCKN_BUFFERED, 65536); |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
645 Lstream_unset_character_mode (XLSTREAM (stream)); |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
646 stream = make_coding_input_stream |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
647 (XLSTREAM (stream), Ffind_coding_system (intern ("no-conversion-unix")), |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
648 CODING_DECODE, 0); |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
649 Lstream_set_buffering (XLSTREAM (stream), LSTREAM_BLOCKN_BUFFERED, 65536); |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
650 Lstream_unset_character_mode (XLSTREAM (stream)); |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
651 |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
652 bytecount = Lstream_read (XLSTREAM (stream), shortbuf, sizeof (shortbuf)); |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
653 |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
654 CHARACTER_TELL_ASSERT (Lstream_character_tell (XLSTREAM (stream)) |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
655 /* This should be equal to sizeof (shortbuf) on |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
656 non-mule. */ |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
657 == sizeof (shortbuf) - !(byte_ascii_p (0xff)), |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
658 "character tell with short read, no-conversion-unix", |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
659 "short read character tell failed"); |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
660 |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
661 Lstream_close (XLSTREAM (stream)); |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
662 Lstream_delete (XLSTREAM (stream)); |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
663 |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
664 stream |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
665 = make_fixed_buffer_input_stream (ext_utf_8_unix, |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
666 sizeof (ext_utf_8_unix) - 1); |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
667 Lstream_set_buffering (XLSTREAM (stream), LSTREAM_BLOCKN_BUFFERED, 65536); |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
668 stream = make_coding_input_stream |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
669 (XLSTREAM (stream), Ffind_coding_system (intern ("utf-8-unix")), |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
670 CODING_DECODE, 0); |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
671 Lstream_set_buffering (XLSTREAM (stream), LSTREAM_BLOCKN_BUFFERED, 65536); |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
672 |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
673 bytecount = Lstream_read (XLSTREAM (stream), longbuf, sizeof (longbuf)); |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
674 |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
675 CHARACTER_TELL_ASSERT (Lstream_character_tell (XLSTREAM (stream)) |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
676 == ext_utf_8_unix_char_len, |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
677 "utf-8 character tell, utf-8-unix", |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
678 "utf-8 character tell failed"); |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
679 |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
680 string = build_extstring (ext_utf_8_unix, |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
681 Ffind_coding_system (intern |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
682 ("utf-8-unix"))); |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
683 |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
684 CHARACTER_TELL_ASSERT (Lstream_character_tell (XLSTREAM (stream)) |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
685 == string_char_length (string), |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
686 "repeat utf-8 character tell, utf-8-unix", |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
687 "repeat utf-8 character tell failed with string"); |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
688 |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
689 count = Lstream_character_tell (XLSTREAM (stream)); |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
690 |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
691 Lstream_unread (XLSTREAM (stream), "r\n", 2); |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
692 |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
693 /* This should give the same result as before the unread. */ |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
694 CHARACTER_TELL_ASSERT (Lstream_character_tell (XLSTREAM (stream)) |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
695 == count, "checking post-unread utf-8 tell", |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
696 "post-unread utf-8 tell failed"); |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
697 bytecount += Lstream_read (XLSTREAM (stream), longbuf + bytecount, |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
698 sizeof (longbuf) - bytecount); |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
699 |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
700 CHARACTER_TELL_ASSERT (Lstream_character_tell (XLSTREAM (stream)) |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
701 == count + 2, |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
702 "checking post-unread+read utf-8 tell", |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
703 "post-unread+read utf-8 tell failed"); |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
704 |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
705 /* This seems to be buggy for my purposes. */ |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
706 /* Lstream_rewind (XLSTREAM (stream)); */ |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
707 Lstream_close (XLSTREAM (stream)); |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
708 Lstream_delete (XLSTREAM (stream)); |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
709 |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
710 stream = make_fixed_buffer_input_stream (ext_utf_8_unix, sizeof (ext_utf_8_unix) - 1); |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
711 Lstream_set_buffering (XLSTREAM (stream), LSTREAM_BLOCKN_BUFFERED, 65536); |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
712 Lstream_set_character_mode (XLSTREAM (stream)); |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
713 |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
714 stream = make_coding_input_stream |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
715 (XLSTREAM (stream), Ffind_coding_system (intern ("utf-8-unix")), |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
716 CODING_DECODE, 0); |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
717 Lstream_set_buffering (XLSTREAM (stream), LSTREAM_BLOCKN_BUFFERED, 65536); |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
718 Lstream_set_character_mode (XLSTREAM (stream)); |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
719 |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
720 bytecount = Lstream_read (XLSTREAM (stream), shortbuf, sizeof (shortbuf)); |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
721 |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
722 CHARACTER_TELL_ASSERT |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
723 (bytecount == (sizeof (shortbuf) - 1), |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
724 "utf-8 Lstream_read, character mode, checking partial char not read", |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
725 "partial char appars to have been read when it shouldn't"); |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
726 |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
727 CHARACTER_TELL_ASSERT |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
728 (Lstream_character_tell (XLSTREAM (stream)) |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
729 /* This is shorter, because it's in the middle of a character. */ |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
730 == sizeof (shortbuf) - 1, |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
731 "utf-8 tell with short read, character mode, utf-8-unix", |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
732 "utf-8 read character tell, character mode failed"); |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
733 |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
734 Lstream_close (XLSTREAM (stream)); |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
735 Lstream_delete (XLSTREAM (stream)); |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
736 |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
737 UNGCPRO; |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
738 return result; |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
739 } |
|
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
740 |
| 398 | 741 |
| 489 | 742 /* Hash Table testing */ |
| 743 | |
| 744 typedef struct | |
| 745 { | |
| 746 Lisp_Object hash_table; | |
| 747 EMACS_INT sum; | |
| 748 } test_hash_tables_data; | |
| 749 | |
| 750 | |
| 751 static int | |
| 2286 | 752 test_hash_tables_mapper (Lisp_Object UNUSED (key), Lisp_Object value, |
| 489 | 753 void *extra_arg) |
| 754 { | |
| 755 test_hash_tables_data *p = (test_hash_tables_data *) extra_arg; | |
|
5581
56144c8593a8
Mechanically change INT to FIXNUM in our sources.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5402
diff
changeset
|
756 p->sum += XFIXNUM (value); |
| 489 | 757 return 0; |
| 758 } | |
| 759 | |
| 760 static int | |
| 761 test_hash_tables_modifying_mapper (Lisp_Object key, Lisp_Object value, | |
| 762 void *extra_arg) | |
| 763 { | |
| 764 test_hash_tables_data *p = (test_hash_tables_data *) extra_arg; | |
|
5581
56144c8593a8
Mechanically change INT to FIXNUM in our sources.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5402
diff
changeset
|
765 Fputhash (make_fixnum (- XFIXNUM (key)), |
|
56144c8593a8
Mechanically change INT to FIXNUM in our sources.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5402
diff
changeset
|
766 make_fixnum (2 * XFIXNUM (value)), |
| 489 | 767 p->hash_table); |
|
5581
56144c8593a8
Mechanically change INT to FIXNUM in our sources.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5402
diff
changeset
|
768 p->sum += XFIXNUM (value); |
| 489 | 769 return 0; |
| 770 } | |
| 771 | |
| 772 static int | |
| 2286 | 773 test_hash_tables_predicate (Lisp_Object key, |
| 774 Lisp_Object UNUSED (value), | |
| 775 void *UNUSED (extra_arg)) | |
| 489 | 776 { |
|
5581
56144c8593a8
Mechanically change INT to FIXNUM in our sources.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5402
diff
changeset
|
777 return XFIXNUM (key) < 0; |
| 489 | 778 } |
| 779 | |
| 780 | |
| 781 DEFUN ("test-hash-tables", Ftest_hash_tables, 0, 0, "", /* | |
|
4752
b8afe0f9cbe3
Restore some doc changes that got dropped in a merge.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4747
diff
changeset
|
782 Return list of results of testing C interface to hash tables. |
|
b8afe0f9cbe3
Restore some doc changes that got dropped in a merge.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4747
diff
changeset
|
783 For use by the automated test suite. See tests/automated/c-tests. |
|
b8afe0f9cbe3
Restore some doc changes that got dropped in a merge.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4747
diff
changeset
|
784 |
|
b8afe0f9cbe3
Restore some doc changes that got dropped in a merge.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4747
diff
changeset
|
785 Each element is a list (DESCRIPTION, STATUS, REASON). |
|
b8afe0f9cbe3
Restore some doc changes that got dropped in a merge.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4747
diff
changeset
|
786 DESCRIPTION is a string describing the test. |
|
b8afe0f9cbe3
Restore some doc changes that got dropped in a merge.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4747
diff
changeset
|
787 STATUS is a symbol, either t (pass) or nil (fail). |
|
b8afe0f9cbe3
Restore some doc changes that got dropped in a merge.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4747
diff
changeset
|
788 REASON is nil or a string describing the failure (not required). |
| 489 | 789 */ |
| 790 ()) | |
| 791 { | |
|
4747
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
792 Lisp_Object hash_result = Qnil; |
|
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
793 |
| 489 | 794 test_hash_tables_data data; |
| 795 data.hash_table = make_lisp_hash_table (50, HASH_TABLE_NON_WEAK, | |
|
5191
71ee43b8a74d
Add #'equalp as a hash test by default; add #'define-hash-table-test, GNU API
Aidan Kehoe <kehoea@parhasard.net>
parents:
5156
diff
changeset
|
796 Qequal); |
| 489 | 797 |
|
5581
56144c8593a8
Mechanically change INT to FIXNUM in our sources.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5402
diff
changeset
|
798 Fputhash (make_fixnum (1), make_fixnum (2), data.hash_table); |
|
56144c8593a8
Mechanically change INT to FIXNUM in our sources.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5402
diff
changeset
|
799 Fputhash (make_fixnum (3), make_fixnum (4), data.hash_table); |
| 489 | 800 |
| 801 data.sum = 0; | |
| 802 elisp_maphash_unsafe (test_hash_tables_mapper, | |
| 803 data.hash_table, (void *) &data); | |
|
4952
19a72041c5ed
Mule-izing, various fixes related to char * arguments
Ben Wing <ben@xemacs.org>
parents:
4752
diff
changeset
|
804 hash_result = Fcons (list3 (build_ascstring ("simple mapper"), |
|
4747
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
805 (data.sum == 2 + 4) ? Qt : Qnil, |
|
4952
19a72041c5ed
Mule-izing, various fixes related to char * arguments
Ben Wing <ben@xemacs.org>
parents:
4752
diff
changeset
|
806 build_ascstring ("sum != 2 + 4")), |
|
4747
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
807 hash_result); |
| 489 | 808 |
| 809 data.sum = 0; | |
| 810 elisp_maphash (test_hash_tables_modifying_mapper, | |
| 811 data.hash_table, (void *) &data); | |
|
4952
19a72041c5ed
Mule-izing, various fixes related to char * arguments
Ben Wing <ben@xemacs.org>
parents:
4752
diff
changeset
|
812 hash_result = Fcons (list3 (build_ascstring ("modifying mapper"), |
|
4747
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
813 (data.sum == 2 + 4) ? Qt : Qnil, |
|
4952
19a72041c5ed
Mule-izing, various fixes related to char * arguments
Ben Wing <ben@xemacs.org>
parents:
4752
diff
changeset
|
814 build_ascstring ("sum != 2 + 4")), |
|
4747
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
815 hash_result); |
| 489 | 816 |
| 817 /* hash table now contains: (1, 2) (3, 4) (-1, 2*2) (-3, 2*4) */ | |
| 818 | |
| 819 data.sum = 0; | |
| 820 elisp_maphash_unsafe (test_hash_tables_mapper, | |
| 821 data.hash_table, (void *) &data); | |
|
4952
19a72041c5ed
Mule-izing, various fixes related to char * arguments
Ben Wing <ben@xemacs.org>
parents:
4752
diff
changeset
|
822 hash_result = Fcons (list3 (build_ascstring ("simple mapper"), |
|
4747
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
823 (data.sum == 3 * (2 + 4)) ? Qt : Qnil, |
|
4952
19a72041c5ed
Mule-izing, various fixes related to char * arguments
Ben Wing <ben@xemacs.org>
parents:
4752
diff
changeset
|
824 build_ascstring ("sum != 3 * (2 + 4)")), |
|
4747
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
825 hash_result); |
| 489 | 826 |
| 827 /* Remove entries with negative keys, added by modifying mapper */ | |
| 828 elisp_map_remhash (test_hash_tables_predicate, | |
| 829 data.hash_table, 0); | |
| 830 | |
| 831 data.sum = 0; | |
| 832 elisp_maphash_unsafe (test_hash_tables_mapper, | |
| 833 data.hash_table, (void *) &data); | |
|
4952
19a72041c5ed
Mule-izing, various fixes related to char * arguments
Ben Wing <ben@xemacs.org>
parents:
4752
diff
changeset
|
834 hash_result = Fcons (list3 (build_ascstring ("remove negatives mapper"), |
|
4747
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
835 (data.sum == 2 + 4) ? Qt : Qnil, |
|
4952
19a72041c5ed
Mule-izing, various fixes related to char * arguments
Ben Wing <ben@xemacs.org>
parents:
4752
diff
changeset
|
836 build_ascstring ("sum != 2 + 4")), |
|
4747
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
837 hash_result); |
| 489 | 838 |
|
4747
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
839 return hash_result; |
| 489 | 840 } |
| 841 | |
| 5013 | 842 DEFUN ("test-store-void-in-lisp", Ftest_store_void_in_lisp, 0, 0, "", /* |
| 843 Test STORE_VOID_IN_LISP and its inverse GET_VOID_FROM_LISP. | |
| 844 Tests by internal assert(); only returns if it succeeds. | |
| 845 */ | |
| 846 ()) | |
| 847 { | |
| 848 struct foobar { int x; int y; short z; void *q; } baz; | |
| 849 | |
| 850 #define FROB(val) \ | |
| 851 do \ | |
| 852 { \ | |
| 853 void *pval = (void *) (val); \ | |
| 854 assert (GET_VOID_FROM_LISP (STORE_VOID_IN_LISP (pval)) == pval); \ | |
| 855 } \ | |
| 856 while (0) | |
|
5581
56144c8593a8
Mechanically change INT to FIXNUM in our sources.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5402
diff
changeset
|
857 assert (FIXNUM_VALBITS >= 31); |
| 5013 | 858 FROB (&baz); |
| 859 FROB (&baz.x); | |
| 860 FROB (&baz.y); | |
| 861 FROB (&baz.z); | |
| 862 FROB (&baz.q); | |
| 863 FROB (0); | |
| 864 FROB (2); | |
| 865 FROB (&Vtest_function_list); | |
| 866 FROB (0x00000080); | |
| 867 FROB (0x00008080); | |
| 868 FROB (0x00808080); | |
| 869 FROB (0x80808080); | |
| 870 FROB (0xCAFEBABE); | |
| 871 FROB (0xFFFFFFFE); | |
|
5581
56144c8593a8
Mechanically change INT to FIXNUM in our sources.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5402
diff
changeset
|
872 #if FIXNUM_VALBITS >= 63 |
| 5013 | 873 FROB (0x0000808080808080); |
| 874 FROB (0x8080808080808080); | |
| 875 FROB (0XDEADBEEFCAFEBABE); | |
| 876 FROB (0XFFFFFFFFFFFFFFFE); | |
|
5581
56144c8593a8
Mechanically change INT to FIXNUM in our sources.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5402
diff
changeset
|
877 #endif /* FIXNUM_VALBITS >= 63 */ |
| 5013 | 878 |
| 5037 | 879 return list1 (list3 (build_ascstring ("STORE_VOID_IN_LISP"), Qt, Qnil)); |
| 5013 | 880 } |
| 881 | |
| 489 | 882 |
| 398 | 883 |
| 3263 | 884 #ifdef NEW_GC |
| 2720 | 885 #define TESTS_DEFSUBR(Fname) do { \ |
| 886 DEFSUBR_MC_ALLOC (Fname); \ | |
| 887 defsubr (S##Fname); \ | |
| 888 Vtest_function_list = \ | |
| 889 Fcons (intern (subr_name (S##Fname)), \ | |
| 890 Vtest_function_list); \ | |
| 891 } while (0) | |
| 3263 | 892 #else /* not NEW_GC */ |
| 398 | 893 #define TESTS_DEFSUBR(Fname) do { \ |
| 894 DEFSUBR (Fname); \ | |
| 895 Vtest_function_list = \ | |
| 896 Fcons (intern (subr_name (&S##Fname)), \ | |
| 897 Vtest_function_list); \ | |
| 898 } while (0) | |
| 3263 | 899 #endif /* not NEW_GC */ |
| 398 | 900 |
| 901 void | |
| 902 syms_of_tests (void) | |
| 903 { | |
| 904 Vtest_function_list = Qnil; | |
| 905 | |
| 906 TESTS_DEFSUBR (Ftest_data_format_conversion); | |
|
5776
65d65b52d608
Pass character count from coding systems to buffer insertion code.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5581
diff
changeset
|
907 TESTS_DEFSUBR (Ftest_character_tell); |
| 489 | 908 TESTS_DEFSUBR (Ftest_hash_tables); |
| 5013 | 909 TESTS_DEFSUBR (Ftest_store_void_in_lisp); |
| 398 | 910 /* Add other test functions here with TESTS_DEFSUBR */ |
| 911 } | |
| 912 | |
| 913 void | |
| 914 vars_of_tests (void) | |
| 915 { | |
| 916 DEFVAR_LISP ("test-function-list", &Vtest_function_list /* | |
| 917 List of all test functions defined in tests.c. | |
| 918 For use by the automated test suite. See tests/automated/c-tests. | |
| 919 */ ); | |
| 920 } | |
|
4747
294a86d29f99
Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4318
diff
changeset
|
921 |
