annotate src/tests.c @ 5776:65d65b52d608

Pass character count from coding systems to buffer insertion code. src/ChangeLog addition: 2014-01-16 Aidan Kehoe <kehoea@parhasard.net> Pass character count information from the no-conversion and unicode coding systems to the buffer insertion code, making #'find-file on large buffers a little snappier (if ERROR_CHECK_TEXT is not defined). * file-coding.c: * file-coding.c (coding_character_tell): New. * file-coding.c (conversion_coding_stream_description): New. * file-coding.c (no_conversion_convert): Update characters_seen when decoding. * file-coding.c (no_conversion_character_tell): New. * file-coding.c (lstream_type_create_file_coding): Create the no_conversion type with data. * file-coding.c (coding_system_type_create): Make the character_tell method available here. * file-coding.h: * file-coding.h (struct coding_system_methods): Add a new character_tell() method, passing charcount information from the coding systems to the buffer code, avoiding duplicate bytecount-to-charcount work especially with large buffers. * fileio.c (Finsert_file_contents_internal): Update this to pass charcount information to buffer_insert_string_1(), if that is available from the lstream code. * insdel.c: * insdel.c (buffer_insert_string_1): Add a new CCLEN argument, giving the character count of the string to insert. It can be -1 to indicate that te function should work it out itself using bytecount_to_charcount(), as it used to. * insdel.c (buffer_insert_raw_string_1): * insdel.c (buffer_insert_lisp_string_1): * insdel.c (buffer_insert_ascstring_1): * insdel.c (buffer_insert_emacs_char_1): * insdel.c (buffer_insert_from_buffer_1): * insdel.c (buffer_replace_char): Update these functions to use the new calling convention. * insdel.h: * insdel.h (buffer_insert_string): Update this header to reflect the new buffer_insert_string_1() argument. * lstream.c (Lstream_character_tell): New. Return the number of characters *read* and seen by the consumer so far, taking into account the unget buffer, and buffered reading. * lstream.c (Lstream_unread): Update unget_character_count here as appropriate. * lstream.c (Lstream_rewind): Reset unget_character_count here too. * lstream.h: * lstream.h (struct lstream): Provide the character_tell method, add a new field, unget_character_count, giving the number of characters ever passed to Lstream_unread(). Declare Lstream_character_tell(). Make Lstream_ungetc(), which happens to be unused, an inline function rather than a macro, in the course of updating it to modify unget_character_count. * print.c (output_string): Use the new argument to buffer_insert_string_1(). * tests.c: * tests.c (Ftest_character_tell): New test function. * tests.c (syms_of_tests): Make it available. * unicode.c: * unicode.c (struct unicode_coding_stream): * unicode.c (unicode_character_tell): New method. * unicode.c (unicode_convert): Update the character counter as appropriate. * unicode.c (coding_system_type_create_unicode): Make the character_tell method available.
author Aidan Kehoe <kehoea@parhasard.net>
date Thu, 16 Jan 2014 16:27:52 +0000
parents 56144c8593a8
children e2fae7783046
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
398
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
1 /* C support for testing XEmacs - see tests/automated/c-tests.el
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
2 Copyright (C) 2000 Martin Buchholz
5013
ae48681c47fa changes to VOID_TO_LISP et al.
Ben Wing <ben@xemacs.org>
parents: 4976
diff changeset
3 Copyright (C) 2001, 2002, 2010 Ben Wing.
3417
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
4 Copyright (C) 2006 The Free Software Foundation, Inc.
398
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
5
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
6 This file is part of XEmacs.
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
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
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
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
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
12
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
13 XEmacs is distributed in the hope that it will be useful, but WITHOUT
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
14 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
15 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
16 for more details.
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
17
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
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
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
20
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
21 /* Author: Martin Buchholz
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
22
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
23 This file provides support for running tests for XEmacs that cannot
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
24 be written entirely in Lisp. These tests are run automatically via
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
25 tests/automated/c-tests.el, or can be run by hand using M-x */
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
26
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
27
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
28 #include <config.h>
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
29 #include "lisp.h"
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
30 #include "buffer.h"
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
31 #include "lstream.h"
489
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
32 #include "elhash.h"
398
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
33 #include "opaque.h"
3417
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
34 #include "file-coding.h" /* XCODING_SYSTEM_EOL_TYPE and its values */
398
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
35
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
36 static Lisp_Object Vtest_function_list;
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
37
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
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
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
46 */
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
47 ())
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
48 {
665
fdefd0186b75 [xemacs-hg @ 2001-09-20 06:28:42 by ben]
ben
parents: 647
diff changeset
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
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
51
867
804517e16990 [xemacs-hg @ 2002-06-05 09:54:39 by ben]
ben
parents: 826
diff changeset
52 Ibyte int_foo[] = "\n\nfoo\nbar";
398
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
53 Extbyte ext_unix[]= "\n\nfoo\nbar";
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
54
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
55 Extbyte ext_dos[] = "\r\n\r\nfoo\r\nbar";
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
56 Extbyte ext_mac[] = "\r\rfoo\rbar";
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
57 Lisp_Object opaque_dos = make_opaque (ext_dos, sizeof (ext_dos) - 1);
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
58 Lisp_Object string_foo = make_string (int_foo, sizeof (int_foo) - 1);
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
59
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
60 Extbyte ext_latin[] = "f\372b\343\340";
867
804517e16990 [xemacs-hg @ 2002-06-05 09:54:39 by ben]
ben
parents: 826
diff changeset
61 Ibyte int_latin1[] = "f\200\372b\200\343\200\340";
804517e16990 [xemacs-hg @ 2002-06-05 09:54:39 by ben]
ben
parents: 826
diff changeset
62 Ibyte int_latin2[] = "f\201\372b\201\343\201\340";
398
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
63 #ifdef MULE
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
64 Extbyte ext_latin12[]= "f\033-A\372b\343\340\033-B";
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
65 Extbyte ext_tilde[] = "f~b~~";
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
66 Lisp_Object string_latin2 = make_string (int_latin2, sizeof (int_latin2) - 1);
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
67 #endif
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
68 Lisp_Object opaque_latin = make_opaque (ext_latin, sizeof (ext_latin) - 1);
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
69 Lisp_Object opaque0_latin = make_opaque (ext_latin, sizeof (ext_latin));
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
70 Lisp_Object string_latin1 = make_string (int_latin1, sizeof (int_latin1) - 1);
3417
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
71 int autodetect_eol_p =
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
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
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
87
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
88 /* Check for expected strings before and after conversion.
771
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
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
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
93 #ifdef MULE
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
94 #define DFC_CHECK_DATA_COND_MULE(ptr,len, \
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
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
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
99 #define DFC_CHECK_DATA_COND_MULE_NUL(ptr,len, \
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
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
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
104 #else
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
105 #define DFC_CHECK_DATA_COND_MULE(ptr,len, \
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
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
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
110 #define DFC_CHECK_DATA_COND_MULE_NUL(ptr,len, \
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
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
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
115 #endif
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
116
3417
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
117 /* These now only apply to base coding systems, and
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
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
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
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
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
136 } while (0)
398
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
137
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
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
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
144 } while (0)
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
145
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
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
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
152 } while (0)
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
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
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
179 #ifdef MULE
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
180 ptr = NULL, len = rand();
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
181 TO_EXTERNAL_FORMAT (DATA, (int_latin2, sizeof (int_latin2)),
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
182 ALLOCA, (ptr, len),
771
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
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
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
186
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
187 ptr = NULL, len = rand();
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
188 TO_EXTERNAL_FORMAT (LISP_STRING, string_latin2,
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
189 ALLOCA, (ptr, len),
771
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
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
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
193
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
194 ptr = NULL, len = rand();
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
195 TO_EXTERNAL_FORMAT (LISP_STRING, string_latin1,
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
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
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
200
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
201 ptr = NULL, len = rand();
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
202 TO_EXTERNAL_FORMAT (DATA, (int_latin2, sizeof (int_latin2) - 1),
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
203 MALLOC, (ptr, len),
771
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
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
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
207
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
208 TO_EXTERNAL_FORMAT (DATA, (int_latin2, sizeof (int_latin2) - 1),
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
209 LISP_OPAQUE, opaque,
771
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
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
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
213
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
214 ptr = NULL, len = rand();
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
215 TO_INTERNAL_FORMAT (DATA, (ext_latin, sizeof (ext_latin) - 1),
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
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
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
220
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
221 ptr = NULL, len = rand();
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
222 TO_INTERNAL_FORMAT (DATA, (ext_latin, sizeof (ext_latin) - 1),
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
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
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
228
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
229 TO_INTERNAL_FORMAT (DATA, (ext_latin, sizeof (ext_latin) - 1),
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
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
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
234
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
235 TO_INTERNAL_FORMAT (LISP_OPAQUE, opaque_latin,
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
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
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
240
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
241 TO_INTERNAL_FORMAT (LISP_OPAQUE, opaque0_latin,
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
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
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
246
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
247 TO_INTERNAL_FORMAT (LISP_OPAQUE, opaque0_latin,
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
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
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
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
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
253
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
254 TO_INTERNAL_FORMAT (LISP_OPAQUE, opaque_latin,
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
255 LISP_BUFFER, Fcurrent_buffer(),
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
256 intern ("iso-8859-1"));
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
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
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
260
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
261 TO_INTERNAL_FORMAT (DATA, (ext_latin12, sizeof (ext_latin12) - 1),
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
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
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
265
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
266 #endif /* MULE */
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
267
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
268 ptr = NULL, len = rand();
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
269 TO_EXTERNAL_FORMAT (DATA, (int_latin1, sizeof (int_latin1) - 1),
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
270 ALLOCA, (ptr, len),
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
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
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
274
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
275 ptr = NULL, len = rand();
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
276 TO_EXTERNAL_FORMAT (DATA, (int_latin1, sizeof (int_latin1)),
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
277 ALLOCA, (ptr, len),
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
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
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
281
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
282 ptr = NULL, len = rand();
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
283 TO_EXTERNAL_FORMAT (DATA, (int_latin2, sizeof (int_latin2) - 1),
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
284 ALLOCA, (ptr, len),
771
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
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
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
288
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
289 ptr = NULL, len = rand();
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
290 TO_EXTERNAL_FORMAT (DATA, (int_latin1, sizeof (int_latin1) - 1),
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
291 ALLOCA, (ptr, len),
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
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
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
295
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
296
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
297 ptr = NULL, len = rand();
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
298 TO_EXTERNAL_FORMAT (LISP_STRING, string_latin1,
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
299 ALLOCA, (ptr, len),
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
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
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
303
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
304 ptr = NULL, len = rand();
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
305 TO_EXTERNAL_FORMAT (LISP_STRING, string_latin1,
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
306 ALLOCA, (ptr, len),
771
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
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
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
310
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
311 ptr = NULL, len = rand();
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
312 TO_EXTERNAL_FORMAT (LISP_STRING, string_latin1,
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
313 ALLOCA, (ptr, len),
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
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
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
317
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
318 ptr = NULL, len = rand();
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
319 TO_EXTERNAL_FORMAT (DATA, (int_latin1, sizeof (int_latin1) - 1),
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
320 MALLOC, (ptr, len),
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
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
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
325
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
326 ptr = NULL, len = rand();
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
327 TO_EXTERNAL_FORMAT (DATA, (int_latin2, sizeof (int_latin2)),
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
328 MALLOC, (ptr, len),
771
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
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
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
333
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
334 ptr = NULL, len = rand();
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
335 TO_EXTERNAL_FORMAT (DATA, (int_latin1, sizeof (int_latin1) - 1),
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
336 MALLOC, (ptr, len),
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
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
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
341
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
342 TO_EXTERNAL_FORMAT (DATA, (int_latin1, sizeof (int_latin1) - 1),
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
343 LISP_OPAQUE, opaque,
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
344 Qbinary);
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
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
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
348
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
349 TO_EXTERNAL_FORMAT (DATA, (int_latin2, sizeof (int_latin2)),
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
350 LISP_OPAQUE, opaque,
771
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
351 Qbinary);
398
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
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
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
355
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
356 TO_EXTERNAL_FORMAT (DATA, (int_latin1, sizeof (int_latin1) - 1),
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
357 LISP_OPAQUE, opaque,
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
358 intern ("iso-8859-1"));
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
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
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
362
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
363 ptr = NULL, len = rand();
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
364 TO_INTERNAL_FORMAT (DATA, (ext_latin, sizeof (ext_latin) - 1),
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
365 ALLOCA, (ptr, len),
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
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
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
369
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
370 ptr = NULL, len = rand();
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
371 TO_INTERNAL_FORMAT (DATA, (ext_latin, sizeof (ext_latin)),
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
372 ALLOCA, (ptr, len),
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
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
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
376
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
377 ptr = NULL, len = rand();
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
378 TO_INTERNAL_FORMAT (DATA, (ext_latin, sizeof (ext_latin)),
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
379 MALLOC, (ptr, len),
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
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
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
384
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
385 ptr = NULL, len = rand();
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
386 TO_INTERNAL_FORMAT (DATA, (ext_latin, sizeof (ext_latin)),
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
387 MALLOC, (ptr, len),
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
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
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
392
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
393 TO_INTERNAL_FORMAT (DATA, (ext_latin, sizeof (ext_latin) - 1),
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
394 LISP_STRING, string,
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
395 intern ("iso-8859-1"));
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
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
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
399
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
400 TO_INTERNAL_FORMAT (LISP_OPAQUE, opaque_latin,
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
401 LISP_STRING, string,
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
402 intern ("iso-8859-1"));
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
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
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
406
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
407 TO_INTERNAL_FORMAT (LISP_OPAQUE, opaque0_latin,
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
408 LISP_STRING, string,
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
409 intern ("iso-8859-1"));
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
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
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
413
3417
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
414 /* This next group used to use the COND_EOL macros, but with the new Mule,
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
415 they all specify an EOL convention, and all XEmacsen can grok them. */
398
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
416 ptr = NULL, len = rand();
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
417 TO_EXTERNAL_FORMAT (DATA, (int_foo, sizeof (int_foo)),
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
418 MALLOC, (ptr, len),
771
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
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
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
423
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
424 ptr = NULL, len = rand();
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
425 TO_EXTERNAL_FORMAT (DATA, (int_foo, sizeof (int_foo) - 1),
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
426 LISP_OPAQUE, opaque,
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
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
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
430
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
431 ptr = NULL, len = rand();
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
432 TO_EXTERNAL_FORMAT (LISP_STRING, string_foo,
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
433 ALLOCA, (ptr, len),
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
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
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
436
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
437 ptr = NULL, len = rand();
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
438 TO_EXTERNAL_FORMAT (DATA, (int_foo, sizeof (int_foo) - 1),
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
439 ALLOCA, (ptr, len),
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
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
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
442
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
443 ptr = NULL, len = rand();
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
444 TO_EXTERNAL_FORMAT (LISP_STRING, string_foo,
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
445 MALLOC, (ptr, len),
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
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
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
449
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
450 ptr = NULL, len = rand();
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
451 TO_EXTERNAL_FORMAT (DATA, (int_foo, sizeof (int_foo) - 1),
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
452 ALLOCA, (ptr, len),
771
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
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
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
455
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
456 ptr = NULL, len = rand();
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
457 TO_EXTERNAL_FORMAT (DATA, (int_foo, sizeof (int_foo)),
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
458 ALLOCA, (ptr, len),
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
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
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
461
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
462 /* Oh, Lawdy, Lawdy, Lawdy, this done broke mah heart!
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
463
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
464 I tried using the technique
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
465
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
466 Fget_coding_system (call2
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
467 (intern ("coding-system-change-eol-conversion"),
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
468 intern ("undecided"), $EOL_TYPE));
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
469 XCODING_SYSTEM_EOL_TYPE (cs_to_use) = $EOL_DETECT_TYPE;
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
470
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
471 with EOL_TYPE = Qlf (for no-detect) and Qnil (for auto-detect),
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
472 and with EOL_DETECT_TYPE = EOL_LF and EOL_AUTODETECT
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
473 respectively, but this doesn't seem to work on the `undecided'
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
474 coding system. The coding-system-eol-type attribute on the
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
475 coding system itself needs to be changed, too. I'm not sure at
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
476 the moment how `set-eol-detection' works its magic, but the code
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
477 below gives correct test results without default EOL detection,
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
478 with default EOL detection, and with Mule. Ship it!
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
479
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
480 Mule. You'll envy the dead.
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
481 */
398
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
482
3417
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
483 {
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
484 /* Check eol autodetection doesn't happen when disabled -- cheat. */
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
485 Lisp_Object cs_to_use = Fget_coding_system (intern ("undecided-unix"));
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
486 TO_INTERNAL_FORMAT (LISP_OPAQUE, opaque_dos,
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
487 LISP_BUFFER, Fcurrent_buffer(),
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
488 cs_to_use);
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
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
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
492
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
493 /* Check eol autodetection works when enabled -- honest. */
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
494 cs_to_use =
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
495 Fget_coding_system (call2
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
496 (intern ("coding-system-change-eol-conversion"),
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
497 intern ("undecided"), Qnil));
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
498 XCODING_SYSTEM_EOL_TYPE (cs_to_use) = EOL_AUTODETECT;
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
499 TO_INTERNAL_FORMAT (LISP_OPAQUE, opaque_dos,
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
500 LISP_BUFFER, Fcurrent_buffer(),
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
501 cs_to_use);
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
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
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
505 /* reset to default */
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
506 XCODING_SYSTEM_EOL_TYPE (cs_to_use) =
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
507 autodetect_eol_p ? EOL_AUTODETECT : EOL_LF;
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
508 }
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
509
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
510 /* Does eol-detection-enabled-p reflect the actual state of affairs?
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
511 This probably could be tested in Lisp somehow. Should it? */
398
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
512 TO_INTERNAL_FORMAT (LISP_OPAQUE, opaque_dos,
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
513 LISP_BUFFER, Fcurrent_buffer(),
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
514 intern ("undecided"));
3417
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
515 if (autodetect_eol_p)
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
516 DFC_CHECK_DATA (BUF_BYTE_ADDRESS (current_buffer,
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
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
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
520 else
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
521 DFC_CHECK_DATA (BUF_BYTE_ADDRESS (current_buffer,
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
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
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
525
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
526 TO_INTERNAL_FORMAT (DATA, (ext_mac, sizeof (ext_mac) - 1),
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
527 LISP_STRING, string,
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
528 intern ("iso-8859-1"));
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
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
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
532 {
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
533 Lisp_Object stream =
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
534 make_fixed_buffer_input_stream (ext_dos, sizeof (ext_dos) - 1);
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
535 TO_INTERNAL_FORMAT (LISP_LSTREAM, stream,
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
536 LISP_STRING, string,
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
537 intern ("iso-8859-1"));
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
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
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
541 }
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
542
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
543 TO_INTERNAL_FORMAT (DATA, (ext_unix, sizeof (ext_unix) - 1),
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
544 LISP_STRING, string,
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
545 intern ("no-conversion"));
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
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
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
549
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
550 ptr = NULL, len = rand();
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
551 TO_EXTERNAL_FORMAT (LISP_OPAQUE, opaque_dos,
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
552 ALLOCA, (ptr, len),
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
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
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
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
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
559 }
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
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
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
741
489
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
742 /* Hash Table testing */
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
743
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
744 typedef struct
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
745 {
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
746 Lisp_Object hash_table;
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
747 EMACS_INT sum;
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
748 } test_hash_tables_data;
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
749
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
750
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
751 static int
2286
04bc9d2f42c7 [xemacs-hg @ 2004-09-20 19:18:55 by james]
james
parents: 1726
diff changeset
752 test_hash_tables_mapper (Lisp_Object UNUSED (key), Lisp_Object value,
489
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
753 void *extra_arg)
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
754 {
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
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
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
757 return 0;
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
758 }
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
759
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
760 static int
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
761 test_hash_tables_modifying_mapper (Lisp_Object key, Lisp_Object value,
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
762 void *extra_arg)
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
763 {
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
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
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
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
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
769 return 0;
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
770 }
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
771
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
772 static int
2286
04bc9d2f42c7 [xemacs-hg @ 2004-09-20 19:18:55 by james]
james
parents: 1726
diff changeset
773 test_hash_tables_predicate (Lisp_Object key,
04bc9d2f42c7 [xemacs-hg @ 2004-09-20 19:18:55 by james]
james
parents: 1726
diff changeset
774 Lisp_Object UNUSED (value),
04bc9d2f42c7 [xemacs-hg @ 2004-09-20 19:18:55 by james]
james
parents: 1726
diff changeset
775 void *UNUSED (extra_arg))
489
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
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
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
778 }
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
779
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
780
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
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
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
789 */
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
790 ())
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
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
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
794 test_hash_tables_data data;
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
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
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
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
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
800
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
801 data.sum = 0;
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
802 elisp_maphash_unsafe (test_hash_tables_mapper,
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
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
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
808
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
809 data.sum = 0;
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
810 elisp_maphash (test_hash_tables_modifying_mapper,
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
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
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
816
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
817 /* hash table now contains: (1, 2) (3, 4) (-1, 2*2) (-3, 2*4) */
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
818
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
819 data.sum = 0;
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
820 elisp_maphash_unsafe (test_hash_tables_mapper,
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
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
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
826
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
827 /* Remove entries with negative keys, added by modifying mapper */
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
828 elisp_map_remhash (test_hash_tables_predicate,
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
829 data.hash_table, 0);
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
830
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
831 data.sum = 0;
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
832 elisp_maphash_unsafe (test_hash_tables_mapper,
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
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
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
838
4747
294a86d29f99 Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents: 4318
diff changeset
839 return hash_result;
489
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
840 }
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
841
5013
ae48681c47fa changes to VOID_TO_LISP et al.
Ben Wing <ben@xemacs.org>
parents: 4976
diff changeset
842 DEFUN ("test-store-void-in-lisp", Ftest_store_void_in_lisp, 0, 0, "", /*
ae48681c47fa changes to VOID_TO_LISP et al.
Ben Wing <ben@xemacs.org>
parents: 4976
diff changeset
843 Test STORE_VOID_IN_LISP and its inverse GET_VOID_FROM_LISP.
ae48681c47fa changes to VOID_TO_LISP et al.
Ben Wing <ben@xemacs.org>
parents: 4976
diff changeset
844 Tests by internal assert(); only returns if it succeeds.
ae48681c47fa changes to VOID_TO_LISP et al.
Ben Wing <ben@xemacs.org>
parents: 4976
diff changeset
845 */
ae48681c47fa changes to VOID_TO_LISP et al.
Ben Wing <ben@xemacs.org>
parents: 4976
diff changeset
846 ())
ae48681c47fa changes to VOID_TO_LISP et al.
Ben Wing <ben@xemacs.org>
parents: 4976
diff changeset
847 {
ae48681c47fa changes to VOID_TO_LISP et al.
Ben Wing <ben@xemacs.org>
parents: 4976
diff changeset
848 struct foobar { int x; int y; short z; void *q; } baz;
ae48681c47fa changes to VOID_TO_LISP et al.
Ben Wing <ben@xemacs.org>
parents: 4976
diff changeset
849
ae48681c47fa changes to VOID_TO_LISP et al.
Ben Wing <ben@xemacs.org>
parents: 4976
diff changeset
850 #define FROB(val) \
ae48681c47fa changes to VOID_TO_LISP et al.
Ben Wing <ben@xemacs.org>
parents: 4976
diff changeset
851 do \
ae48681c47fa changes to VOID_TO_LISP et al.
Ben Wing <ben@xemacs.org>
parents: 4976
diff changeset
852 { \
ae48681c47fa changes to VOID_TO_LISP et al.
Ben Wing <ben@xemacs.org>
parents: 4976
diff changeset
853 void *pval = (void *) (val); \
ae48681c47fa changes to VOID_TO_LISP et al.
Ben Wing <ben@xemacs.org>
parents: 4976
diff changeset
854 assert (GET_VOID_FROM_LISP (STORE_VOID_IN_LISP (pval)) == pval); \
ae48681c47fa changes to VOID_TO_LISP et al.
Ben Wing <ben@xemacs.org>
parents: 4976
diff changeset
855 } \
ae48681c47fa changes to VOID_TO_LISP et al.
Ben Wing <ben@xemacs.org>
parents: 4976
diff changeset
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
ae48681c47fa changes to VOID_TO_LISP et al.
Ben Wing <ben@xemacs.org>
parents: 4976
diff changeset
858 FROB (&baz);
ae48681c47fa changes to VOID_TO_LISP et al.
Ben Wing <ben@xemacs.org>
parents: 4976
diff changeset
859 FROB (&baz.x);
ae48681c47fa changes to VOID_TO_LISP et al.
Ben Wing <ben@xemacs.org>
parents: 4976
diff changeset
860 FROB (&baz.y);
ae48681c47fa changes to VOID_TO_LISP et al.
Ben Wing <ben@xemacs.org>
parents: 4976
diff changeset
861 FROB (&baz.z);
ae48681c47fa changes to VOID_TO_LISP et al.
Ben Wing <ben@xemacs.org>
parents: 4976
diff changeset
862 FROB (&baz.q);
ae48681c47fa changes to VOID_TO_LISP et al.
Ben Wing <ben@xemacs.org>
parents: 4976
diff changeset
863 FROB (0);
ae48681c47fa changes to VOID_TO_LISP et al.
Ben Wing <ben@xemacs.org>
parents: 4976
diff changeset
864 FROB (2);
ae48681c47fa changes to VOID_TO_LISP et al.
Ben Wing <ben@xemacs.org>
parents: 4976
diff changeset
865 FROB (&Vtest_function_list);
ae48681c47fa changes to VOID_TO_LISP et al.
Ben Wing <ben@xemacs.org>
parents: 4976
diff changeset
866 FROB (0x00000080);
ae48681c47fa changes to VOID_TO_LISP et al.
Ben Wing <ben@xemacs.org>
parents: 4976
diff changeset
867 FROB (0x00008080);
ae48681c47fa changes to VOID_TO_LISP et al.
Ben Wing <ben@xemacs.org>
parents: 4976
diff changeset
868 FROB (0x00808080);
ae48681c47fa changes to VOID_TO_LISP et al.
Ben Wing <ben@xemacs.org>
parents: 4976
diff changeset
869 FROB (0x80808080);
ae48681c47fa changes to VOID_TO_LISP et al.
Ben Wing <ben@xemacs.org>
parents: 4976
diff changeset
870 FROB (0xCAFEBABE);
ae48681c47fa changes to VOID_TO_LISP et al.
Ben Wing <ben@xemacs.org>
parents: 4976
diff changeset
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
ae48681c47fa changes to VOID_TO_LISP et al.
Ben Wing <ben@xemacs.org>
parents: 4976
diff changeset
873 FROB (0x0000808080808080);
ae48681c47fa changes to VOID_TO_LISP et al.
Ben Wing <ben@xemacs.org>
parents: 4976
diff changeset
874 FROB (0x8080808080808080);
ae48681c47fa changes to VOID_TO_LISP et al.
Ben Wing <ben@xemacs.org>
parents: 4976
diff changeset
875 FROB (0XDEADBEEFCAFEBABE);
ae48681c47fa changes to VOID_TO_LISP et al.
Ben Wing <ben@xemacs.org>
parents: 4976
diff changeset
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
ae48681c47fa changes to VOID_TO_LISP et al.
Ben Wing <ben@xemacs.org>
parents: 4976
diff changeset
878
5037
e70a73f9243d fix c-tests
Ben Wing <ben@xemacs.org>
parents: 5013
diff changeset
879 return list1 (list3 (build_ascstring ("STORE_VOID_IN_LISP"), Qt, Qnil));
5013
ae48681c47fa changes to VOID_TO_LISP et al.
Ben Wing <ben@xemacs.org>
parents: 4976
diff changeset
880 }
ae48681c47fa changes to VOID_TO_LISP et al.
Ben Wing <ben@xemacs.org>
parents: 4976
diff changeset
881
489
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
882
398
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
883
3263
d674024a8674 [xemacs-hg @ 2006-02-27 16:29:00 by crestani]
crestani
parents: 2720
diff changeset
884 #ifdef NEW_GC
2720
6fa9919a9a0b [xemacs-hg @ 2005-04-08 23:10:01 by crestani]
crestani
parents: 2286
diff changeset
885 #define TESTS_DEFSUBR(Fname) do { \
6fa9919a9a0b [xemacs-hg @ 2005-04-08 23:10:01 by crestani]
crestani
parents: 2286
diff changeset
886 DEFSUBR_MC_ALLOC (Fname); \
6fa9919a9a0b [xemacs-hg @ 2005-04-08 23:10:01 by crestani]
crestani
parents: 2286
diff changeset
887 defsubr (S##Fname); \
6fa9919a9a0b [xemacs-hg @ 2005-04-08 23:10:01 by crestani]
crestani
parents: 2286
diff changeset
888 Vtest_function_list = \
6fa9919a9a0b [xemacs-hg @ 2005-04-08 23:10:01 by crestani]
crestani
parents: 2286
diff changeset
889 Fcons (intern (subr_name (S##Fname)), \
6fa9919a9a0b [xemacs-hg @ 2005-04-08 23:10:01 by crestani]
crestani
parents: 2286
diff changeset
890 Vtest_function_list); \
6fa9919a9a0b [xemacs-hg @ 2005-04-08 23:10:01 by crestani]
crestani
parents: 2286
diff changeset
891 } while (0)
3263
d674024a8674 [xemacs-hg @ 2006-02-27 16:29:00 by crestani]
crestani
parents: 2720
diff changeset
892 #else /* not NEW_GC */
398
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
893 #define TESTS_DEFSUBR(Fname) do { \
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
894 DEFSUBR (Fname); \
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
895 Vtest_function_list = \
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
896 Fcons (intern (subr_name (&S##Fname)), \
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
897 Vtest_function_list); \
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
898 } while (0)
3263
d674024a8674 [xemacs-hg @ 2006-02-27 16:29:00 by crestani]
crestani
parents: 2720
diff changeset
899 #endif /* not NEW_GC */
398
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
900
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
901 void
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
902 syms_of_tests (void)
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
903 {
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
904 Vtest_function_list = Qnil;
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
905
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
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
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
908 TESTS_DEFSUBR (Ftest_hash_tables);
5013
ae48681c47fa changes to VOID_TO_LISP et al.
Ben Wing <ben@xemacs.org>
parents: 4976
diff changeset
909 TESTS_DEFSUBR (Ftest_store_void_in_lisp);
398
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
910 /* Add other test functions here with TESTS_DEFSUBR */
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
911 }
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
912
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
913 void
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
914 vars_of_tests (void)
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
915 {
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
916 DEFVAR_LISP ("test-function-list", &Vtest_function_list /*
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
917 List of all test functions defined in tests.c.
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
918 For use by the automated test suite. See tests/automated/c-tests.
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
919 */ );
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
920 }
4747
294a86d29f99 Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents: 4318
diff changeset
921