1#
2#                           TERMS AND CONDITIONS
3#                                   FOR
4#                         OPEN SOURCE CODE LICENSE
5#                               Version 1.1
6#
7# Japan Registry Services Co., Ltd. ("JPRS"), a Japanese corporation
8# having its head office at Chiyoda First Bldg. East 13F 3-8-1 Nishi-Kanda,
9# Chiyoda-ku, Tokyo 101-0065, Japan, grants you the license for open source
10# code specified in EXHIBIT A the "Code" subject to the following Terms and
11# Conditions ("OSCL").
12#
13# 1. License Grant.
14#   JPRS hereby grants you a worldwide, royalty-free, non-exclusive
15#   license, subject to third party intellectual property claims:
16#   (a) under intellectual property rights (other than patent or
17#       trademark) licensable by JPRS to use, reproduce, modify, display,
18#       perform, sublicense and distribute the Code (or portions thereof)
19#       with or without modifications, and/or as part of a derivative work;
20#       or
21#   (b) under claims of the infringement through the making, using,
22#       offering to sell and/or otherwise disposing the JPRS Revised Code
23#       (or portions thereof);
24#   (c) the licenses granted in this Section 1(a) and (b) are effective on
25#       the date JPRS first distributes the Code to you under the terms of
26#       this OSCL;
27#   (d) Notwithstanding the above stated terms, no patent license is
28#       granted:
29#       1)  for a code that you delete from the Code;
30#       2)  separate from the Code; or
31#       3)  for infringements caused by:
32#            i) modification of the Code; or
33#           ii) combination of the Code with other software or devices.
34#
35# 2. Consents.
36#   You agree that:
37#   (a) you must include a copy of this OSCL and the notice set forth in
38#       EXHIBIT A with every copy of the Code you distribute;
39#   (b) you must include a copy of this OSCL and the notice set forth in
40#       EXHIBIT A with every copy of binary form of the Code in the
41#       documentation and/or other materials provided with the distribution;
42#   (c) you may not offer or impose any terms on any source code version
43#       that alters or restricts the applicable version of this OSCL or
44#       the recipients' rights hereunder.
45#   (d) If the terms and conditions are set forth in EXHIBIT A, you must
46#       comply with those terms and conditions.
47#
48# 3. Proprietary Information.
49#   All trademarks, service marks, patents, copyrights, trade secrets, and
50#   other proprietary rights in or related to the Code are and will remain
51#   the exclusive property of JPRS or its licensors, whether or not
52#   specifically recognized or perfected under local law except specified
53#   in this OSCL; provided however you agree and understand that the JPRS
54#   name may not be used to endorse or promote this Code without prior
55#   written approval of JPRS.
56#
57# 4. WARRANTY DISCLAIMER.
58#   JPRS MAKES NO REPRESENTATIONS AND WARRANTIES REGARDING THE USE OF THE
59#   CODE, NOR DOES JPRS MAKE ANY REPRESENTATIONS THAT THE CODE WILL BECOME
60#   COMMERCIALLY AVAILABLE. JPRS, ITS AFFILIATES, AND ITS SUPPLIERS DO NOT
61#   WARRANT OR REPRESENT THAT THE CODE IS FREE OF ERRORS OR THAT THE CODE
62#   IS SUITABLE FOR TRANSLATION AND/OR LOCALIZATION. THE CODE IS PROVIDED
63#   ON AN "AS IS" BASIS AND JPRS AND ITS SUPPLIERS HAVE NO OBLIGATION TO
64#   CORRECT ERRORS OR TO SUPPORT THE CODE UNDER THIS OSCL FOR ANY REASON.
65#   TO THE FULL EXTENT PERMITTED BY LAW, ALL OBLIGATIONS ARE HEREBY
66#   EXCLUDED WHETHER EXPRESS, STATUTORY OR IMPLIED UNDER LAW, COURSE OF
67#   DEALING, CUSTOM, TRADE USAGE, ORAL OR WRITTEN STATEMENT OR OTHERWISE,
68#   INCLUDING BUT NOT LIMITED TO ANY IMPLIED WARRANTIES OF MERCHANTABILITY
69#   OR FITNESS FOR A PARTICULAR PURPOSE CONCERNING THE CODE.
70#
71# 5. NO LIABILITY.
72#   UNDER NO CIRCUMSTANCES SHALL JPRS AND/OR ITS AFFILIATES, LICENSORS, OR
73#   REPRESENTATIVES BE LIABLE FOR ANY DAMAGES INCLUDING BUT NOT LIMITED TO
74#   CONSEQUENTIAL, INDIRECT, SPECIAL, PUNITIVE OR INCIDENTAL DAMAGES,
75#   WHETHER FORESEEABLE OR UNFORESEEABLE, BASED ON YOUR CLAIMS, INCLUDING,
76#   BUT NOT LIMITED TO, CLAIMS FOR LOSS OF DATA, GOODWILL, PROFITS, USE OF
77#   MONEY, INTERRUPTION IN USE OR AVAILABILITY OF DATA, STOPPAGE, IMPLIED
78#   WARRANTY, BREACH OF CONTRACT, MISREPRESENTATION, NEGLIGENCE, STRICT
79#   LIABILITY IN TORT, OR OTHERWISE.
80#
81# 6. Indemnification.
82#   You hereby agree to indemnify, defend, and hold harmless JPRS for any
83#   liability incurred by JRPS due to your terms of warranty, support,
84#   indemnity, or liability offered by you to any third party.
85#
86# 7. Termination.
87# 7.1 This OSCL shall be automatically terminated in the events that:
88#   (a) You fail to comply with the terms herein and fail to cure such
89#       breach within 30 days of becoming aware of the breach;
90#   (b) You initiate patent or copyright infringement litigation against
91#       any party (including a cross-claim or counterclaim in a lawsuit)
92#       alleging that the Code constitutes a direct or indirect patent or
93#       copyright infringement, in such case, this OSCL to you shall
94#       terminate as of the date such litigation is filed;
95# 7.2 In the event of termination under Sections 7.1(a) or 7.1(b) above,
96#     all end user license agreements (excluding distributors and
97#     resellers) which have been validly granted by You or any distributor
98#     hereunder prior to termination shall survive termination.
99#
100#
101# 8. General.
102#   This OSCL shall be governed by, and construed and enforced in
103#   accordance with, the laws of Japan. Any litigation or arbitration
104#   between the parties shall be conducted exclusively in Tokyo, Japan
105#   except written consent of JPRS provides other venue.
106#
107#
108#                                EXHIBIT A
109#
110# The original open source code of idnkit-2 is idnkit-1.0 developed and
111# conceived by Japan Network Information Center ("JPNIC"), a Japanese
112# association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
113# Chiyoda-ku, Tokyo 101-0047, Japan, and JPRS modifies above original code
114# under following Terms and Conditions set forth by JPNIC.
115#
116#                                  JPNIC
117#
118# Copyright (c) 2000-2002 Japan Network Information Center.  All rights reserved.
119#
120# By using this file, you agree to the terms and conditions set forth bellow.
121#
122#                       LICENSE TERMS AND CONDITIONS
123#
124# The following License Terms and Conditions apply, unless a different
125# license is obtained from Japan Network Information Center ("JPNIC"),
126# a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
127# Chiyoda-ku, Tokyo 101-0047, Japan.
128#
129# 1. Use, Modification and Redistribution (including distribution of any
130#    modified or derived work) in source and/or binary forms is permitted
131#    under this License Terms and Conditions.
132#
133# 2. Redistribution of source code must retain the copyright notices as they
134#    appear in each source code file, this License Terms and Conditions.
135#
136# 3. Redistribution in binary form must reproduce the Copyright Notice,
137#    this License Terms and Conditions, in the documentation and/or other
138#    materials provided with the distribution. For the purposes of binary
139#    distribution the "Copyright Notice" refers to the following language:
140#    "Copyright (c) 2000-2002 Japan Network Information Center.  All rights reserved."
141#
142# 4. The name of JPNIC may not be used to endorse or promote products
143#    derived from this Software without specific prior written approval of
144#    JPNIC.
145#
146# 5. Disclaimer/Limitation of Liability: THIS SOFTWARE IS PROVIDED BY JPNIC
147#    "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
148#    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
149#    PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JPNIC BE LIABLE
150#    FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
151#    CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
152#    SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
153#    BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
154#    WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
155#    OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
156#    ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
157#
158#
159#                        JPRS Public License Notice
160#                                   For
161#                                idnkit-2.
162#
163# The contents of this file are subject to the Terms and Conditions for
164# the Open Source Code License (the "OSCL"). You may not use this file
165# except in compliance with above terms and conditions. A copy of the OSCL
166# is available at <http://jprs.co.jp/idn/>.
167# The JPRS Revised Code is idnkit-2.
168# The Initial Developer of the JPRS Revised Code is Japan Network
169# Information Center ("JPNIC"), a Japanese association,
170# Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, Chiyoda-ku, Tokyo
171# 101-0047, Japan.
172# "Copyright (c) 2000-2002 Japan Network Information Center.  All rights reserved."
173# "Copyright (c) 2010-2012 Japan Registry Services Co., Ltd.  All rights reserved."
174# Contributor(s): ______________________________________.
175#
176# If you wish to allow use of your version of this file only under the
177# above License(s) and not to allow others to use your version of this
178# file, please indicate your decision by deleting the relevant provisions
179# above and replacing them with the notice and other provisions required
180# by the above License(s). If you do not delete the relevant provisions,
181# a recipient may use your version of this file under either the above
182# License(s).
183#
184
185#
186# Tests about language-local conversion.
187#
188--
189######################################################################
190# Basic language-local conversion tests.
191######################################################################
192--
193#
194# language-local conversion test.
195# Convert U+0041 (A) to U+0061 (a) when the current language is Japanese.
196#
197             api: encodename
198  local_encoding: U-escape
199            conf: language ja
200            conf: map language-local
201            conf: language-local ja @LOCALMAP_FILE1@
202       localmap1: 0041; 0061;
203            from: ABC
204         actions: IDN_UNICODECONV IDN_MAP IDN_LOCALCONV
205          result: success
206              to: aBC
207--
208#
209# language-local conversion test.
210# The current language is determined by the locale information.
211#
212# On solaris, set LANG to 'ja_JP' causes an error; "couldn't set locale
213# correctly".
214#
215             api: encodename
216  local_encoding: U-escape
217             env: LANG=ja_JP.UTF-8
218            conf: map language-local
219            conf: language-local ja @LOCALMAP_FILE1@
220       localmap1: 0041; 0061;
221            from: ABC
222         actions: IDN_UNICODECONV IDN_MAP IDN_LOCALCONV
223          result: success
224              to: aBC
225--
226#
227# language-local conversion test.
228# Convert U+0041 (A) to U+0061 (a) when the current language is Japanese.
229# In a 'language-local' line in the configuration file, use "JA" (uppercase
230# letters) to specify Japanese.
231#
232             api: encodename
233  local_encoding: U-escape
234            conf: language ja
235            conf: map language-local
236            conf: language-local JA @LOCALMAP_FILE1@
237       localmap1: 0041; 0061;
238            from: ABC
239         actions: IDN_UNICODECONV IDN_MAP IDN_LOCALCONV
240          result: success
241              to: aBC
242--
243#
244# language-local conversion test.
245# In a 'language-local' line in the configuration file, use "JPN"
246# (ISO639-2 code) to specify Japanese.
247#
248             api: encodename
249  local_encoding: U-escape
250            conf: language ja
251            conf: map language-local
252            conf: language-local JPN @LOCALMAP_FILE1@
253       localmap1: 0041; 0061;
254            from: ABC
255         actions: IDN_UNICODECONV IDN_MAP IDN_LOCALCONV
256          result: success
257              to: aBC
258--
259#
260# language-local conversion test.
261# In a 'language-local' line in the configuration file, use "Japanese"
262# (alias name) to specify Japanese.
263#
264             api: encodename
265  local_encoding: U-escape
266            conf: language ja
267            conf: map language-local
268            conf: language-local Japanese @LOCALMAP_FILE1@
269  language_alias: Japanese JA
270       localmap1: 0041; 0061;
271            from: ABC
272         actions: IDN_UNICODECONV IDN_MAP IDN_LOCALCONV
273          result: success
274              to: aBC
275--
276#
277# language-local conversion test.
278# It defines 'language-local' for Japaese, but the current language is
279# English. No language-local conversion occurs.
280#
281             api: encodename
282  local_encoding: U-escape
283            conf: language en
284            conf: map language-local
285            conf: language-local ja @LOCALMAP_FILE1@
286       localmap1: 0041; 0061;
287            from: ABC
288         actions: IDN_UNICODECONV IDN_MAP IDN_LOCALCONV
289          result: success
290              to: ABC
291--
292#
293# language-local conversion test.
294# It defines 'language-local' for Japaese and English.
295# language-local conversion for English must be chosen.
296#
297             api: encodename
298  local_encoding: U-escape
299            conf: language en
300            conf: map language-local
301            conf: language-local ja @LOCALMAP_FILE1@
302            conf: language-local en  @LOCALMAP_FILE2@
303       localmap1: 0041; 0061;
304       localmap2: 0042; 0062;
305            from: ABC
306         actions: IDN_UNICODECONV IDN_MAP IDN_LOCALCONV
307          result: success
308              to: AbC
309--
310#
311# language-local conversion test.
312# It defines 'language-local' for Japaese and '*' (default).
313# language-local conversion for '*' must be chosen.
314#
315             api: encodename
316  local_encoding: U-escape
317            conf: language en
318            conf: map language-local
319            conf: language-local ja @LOCALMAP_FILE1@
320            conf: language-local *  @LOCALMAP_FILE2@
321       localmap1: 0041; 0061;
322       localmap2: 0042; 0062;
323            from: ABC
324         actions: IDN_UNICODECONV IDN_MAP IDN_LOCALCONV
325          result: success
326              to: AbC
327--
328#
329# language-local conversion test.
330# It defines 'language-local', but the specified map file is empty.
331#
332             api: encodename
333  local_encoding: U-escape
334            conf: language ja
335            conf: map language-local
336            conf: language-local ja  @LOCALMAP_FILE1@
337       localmap1:
338            from: ABC
339         actions: IDN_UNICODECONV IDN_MAP IDN_LOCALCONV
340          result: success
341              to: ABC
342--
343#
344# language-local conversion test.
345# No 'language-local' line in the configuration file.
346#
347             api: encodename
348  local_encoding: U-escape
349            conf: language en
350            conf: map language-local
351            from: ABC
352         actions: IDN_UNICODECONV IDN_MAP IDN_LOCALCONV
353          result: success
354              to: ABC
355--
356#
357# language-local conversion test.
358# Convert "".
359#
360             api: encodename
361  local_encoding: U-escape
362            conf: language ja
363            conf: map language-local
364            conf: language-local ja @LOCALMAP_FILE1@
365       localmap1: 0041; 0061;
366            from:
367         actions: IDN_UNICODECONV IDN_MAP IDN_LOCALCONV
368          result: success
369              to:
370--
371#
372# language-local conversion test.
373# Convert U+0041 (A) to an empty.
374#
375             api: encodename
376  local_encoding: U-escape
377            conf: language ja
378            conf: map language-local
379            conf: language-local ja @LOCALMAP_FILE1@
380       localmap1: 0041;
381            from: ABC
382         actions: IDN_UNICODECONV IDN_MAP IDN_LOCALCONV
383          result: success
384              to: BC
385--
386#
387# language-local conversion test.
388# Convert U+0041 (A) to U+0041 U+0041 U+0041 "AAA".
389#
390             api: encodename
391  local_encoding: U-escape
392            conf: language ja
393            conf: map language-local
394            conf: language-local ja @LOCALMAP_FILE1@
395       localmap1: 0041; 0041 0041 0041;
396            from: ABC
397         actions: IDN_UNICODECONV IDN_MAP IDN_LOCALCONV
398          result: success
399              to: AAABC
400--
401######################################################################
402# Tests for parsing a configuration file.
403######################################################################
404--
405#
406# language-local conversion test.
407# It defines 'language-local' but no argument follows.
408#
409             api: encodename
410  local_encoding: U-escape
411            conf: language ja
412            conf: map language-local
413            conf: language-local
414       localmap1: 0041; 0061;
415            from: ABC
416         actions: IDN_UNICODECONV IDN_MAP IDN_LOCALCONV
417          result: idn_resconf_loadfile() ERROR: syntax error
418              to:
419--
420#
421# language-local conversion test.
422# It defines 'language-local' but it lacks an argument.
423#
424             api: encodename
425  local_encoding: U-escape
426            conf: language ja
427            conf: map language-local
428            conf: language-local ja
429       localmap1: 0041; 0061;
430            from: ABC
431         actions: IDN_UNICODECONV IDN_MAP IDN_LOCALCONV
432          result: idn_resconf_loadfile() ERROR: syntax error
433              to:
434--
435#
436# language-local conversion test.
437# It defines 'language-local' but it has an extra argument.
438#
439             api: encodename
440  local_encoding: U-escape
441            conf: language ja
442            conf: map language-local
443            conf: language-local ja @LOCALMAP_FILE1@ yeah
444       localmap1: 0041; 0061;
445            from: ABC
446         actions: IDN_UNICODECONV IDN_MAP IDN_LOCALCONV
447          result: idn_resconf_loadfile() ERROR: no such file
448              to:
449--
450#
451# language-local conversion test.
452# It defines 'language-local', but the specified map file doesn't exist.
453#
454             api: encodename
455  local_encoding: U-escape
456            conf: language ja
457            conf: map language-local
458            conf: language-local ja  @LOCALMAP_FILE1@
459            from: ABC
460         actions: IDN_UNICODECONV IDN_MAP IDN_LOCALCONV
461          result: idn_resconf_loadfile() ERROR: no such file
462              to:
463--
464#
465# language-local conversion test.
466# It defines 'language-local' for Japanese (ja) twice.
467#
468             api: encodename
469  local_encoding: U-escape
470            conf: language ja
471            conf: map language-local
472            conf: language-local ja @LOCALMAP_FILE1@
473            conf: language-local JA @LOCALMAP_FILE2@
474       localmap1: 0041; 0061;
475       localmap2: 0042; 0062;
476            from: ABC
477         actions: IDN_UNICODECONV IDN_MAP IDN_LOCALCONV
478          result: success
479              to: AbC
480--
481#
482# language-local conversion test.
483# It defines 'language-local', but 'language-local' is not specified
484# in 'map'.
485#
486             api: encodename
487  local_encoding: U-escape
488            conf: language ja
489            conf: map
490            conf: language-local ja @LOCALMAP_FILE1@
491       localmap1: 0041; 0061;
492            from: ABC
493         actions: IDN_UNICODECONV IDN_MAP IDN_LOCALCONV
494          result: success
495              to: ABC
496--
497#
498# language-local conversion test.
499# It defines 'language-local' for '*' (default) twice.
500#
501             api: encodename
502  local_encoding: U-escape
503            conf: language ja
504            conf: map language-local
505            conf: language-local * @LOCALMAP_FILE1@
506            conf: language-local * @LOCALMAP_FILE2@
507       localmap1: 0041; 0061;
508       localmap2: 0042; 0062;
509            from: ABC
510         actions: IDN_UNICODECONV IDN_MAP IDN_LOCALCONV
511          result: success
512              to: AbC
513--
514#
515# language-local conversion test.
516# For backward combility, idnkit allows to place 'filemap:' prefix
517# in front of the localmap filename.
518#
519             api: encodename
520  local_encoding: U-escape
521            conf: language ja
522            conf: map language-local
523            conf: language-local * filemap:@LOCALMAP_FILE1@
524       localmap1: 0041; 0061;
525            from: ABC
526         actions: IDN_UNICODECONV IDN_MAP IDN_LOCALCONV
527          result: success
528              to: aBC
529--
530######################################################################
531# Tests for parsing a map file.
532######################################################################
533--
534#
535# language-local conversion test.
536# A line in a map file has only one field.
537#
538             api: encodename
539  local_encoding: U-escape
540            conf: map language-local
541            conf: language-local * @LOCALMAP_FILE1@
542       localmap1: 0041;
543            from: ABC
544         actions: IDN_UNICODECONV IDN_MAP IDN_LOCALCONV
545          result: success
546              to: BC
547--
548#
549# language-local conversion test.
550# A line in a map file has a comment ('#...').
551#
552             api: encodename
553  local_encoding: U-escape
554            conf: map language-local
555            conf: language-local * @LOCALMAP_FILE1@
556       localmap1: 0041; 0061 # A
557            from: ABC
558         actions: IDN_UNICODECONV IDN_MAP IDN_LOCALCONV
559          result: success
560              to: aBC
561--
562#
563# language-local conversion test.
564# A line in a map file has an extra field (ignored).
565#
566             api: encodename
567  local_encoding: U-escape
568            conf: map language-local
569            conf: language-local * @LOCALMAP_FILE1@
570       localmap1: 0041; 0061; yeah
571            from: ABC
572         actions: IDN_UNICODECONV IDN_MAP IDN_LOCALCONV
573          result: success
574              to: aBC
575--
576#
577# language-local conversion test.
578# A line in a map file, code points don't have zero prefixes.
579#
580             api: encodename
581  local_encoding: U-escape
582            conf: map language-local
583            conf: language-local * @LOCALMAP_FILE1@
584       localmap1: 41; 61;
585            from: ABC
586         actions: IDN_UNICODECONV IDN_MAP IDN_LOCALCONV
587          result: success
588              to: aBC
589--
590#
591# language-local conversion test.
592# A line in a map file, code points have 'U+' prefixes.
593#
594             api: encodename
595  local_encoding: U-escape
596            conf: map language-local
597            conf: language-local * @LOCALMAP_FILE1@
598       localmap1: U+0041; U+0061;
599            from: ABC
600         actions: IDN_UNICODECONV IDN_MAP IDN_LOCALCONV
601          result: success
602              to: aBC
603--
604#
605# language-local conversion test.
606# The map file has an empty line.
607#
608             api: encodename
609  local_encoding: U-escape
610            conf: map language-local
611            conf: language-local * @LOCALMAP_FILE1@
612       localmap1:
613       localmap1: 41; 61;
614            from: ABC
615         actions: IDN_UNICODECONV IDN_MAP IDN_LOCALCONV
616          result: success
617              to: aBC
618--
619#
620# language-local conversion test.
621# The map file has a comment line.
622#
623             api: encodename
624  local_encoding: U-escape
625            conf: map language-local
626            conf: language-local * @LOCALMAP_FILE1@
627       localmap1: #
628       localmap1: 41; 61;
629            from: ABC
630         actions: IDN_UNICODECONV IDN_MAP IDN_LOCALCONV
631          result: success
632              to: aBC
633--
634#
635# language-local conversion test.
636# The map file defines a map for U+0000.
637#
638             api: encodename
639  local_encoding: U-escape
640            conf: map language-local
641            conf: language-local * @LOCALMAP_FILE1@
642       localmap1: 0000; 0041;
643            from: ABC
644         actions: IDN_UNICODECONV IDN_MAP IDN_LOCALCONV
645          result: idn_resconf_loadfile() ERROR: invalid code point
646              to:
647--
648#
649# language-local conversion test.
650# The map file defines a map for U+D7FF.
651#
652             api: encodename
653  local_encoding: U-escape
654            conf: map language-local
655            conf: language-local * @LOCALMAP_FILE1@
656       localmap1: D7FF; 0041;
657            from: \u{d7ff}BC
658         actions: IDN_UNICODECONV IDN_MAP IDN_LOCALCONV
659          result: success
660              to: ABC
661--
662#
663# language-local conversion test.
664# The map file defines a map for U+D800 (used for surrogate pair).
665#
666             api: encodename
667  local_encoding: U-escape
668            conf: map language-local
669            conf: language-local * @LOCALMAP_FILE1@
670       localmap1: D800; 0041;
671            from: \u{d800}BC
672         actions: IDN_UNICODECONV IDN_MAP IDN_LOCALCONV
673          result: idn_resconf_loadfile() ERROR: invalid code point
674              to:
675--
676#
677# language-local conversion test.
678# The map file defines a map for U+DFFF (used for surrogate pair).
679#
680             api: encodename
681  local_encoding: U-escape
682            conf: map language-local
683            conf: language-local * @LOCALMAP_FILE1@
684       localmap1: D800; 0041;
685            from: \u{dfff}BC
686         actions: IDN_UNICODECONV IDN_MAP IDN_LOCALCONV
687          result: idn_resconf_loadfile() ERROR: invalid code point
688              to:
689--
690#
691# language-local conversion test.
692# The map file defines a map for U+E000.
693#
694             api: encodename
695  local_encoding: U-escape
696            conf: map language-local
697            conf: language-local * @LOCALMAP_FILE1@
698       localmap1: E000; 0041;
699            from: \u{e000}BC
700         actions: IDN_UNICODECONV IDN_MAP IDN_LOCALCONV
701          result: success
702              to: ABC
703--
704#
705# language-local conversion test.
706# The map file defines a map for U+10FFFF.
707#
708             api: encodename
709  local_encoding: U-escape
710            conf: map language-local
711            conf: language-local * @LOCALMAP_FILE1@
712       localmap1: 10FFFF; 0041;
713            from: \u{10ffff}BC
714         actions: IDN_UNICODECONV IDN_MAP IDN_LOCALCONV
715          result: success
716              to: ABC
717--
718#
719# language-local conversion test.
720# The map file defines a map for U+110000.
721#
722             api: encodename
723  local_encoding: U-escape
724            conf: map language-local
725            conf: language-local * @LOCALMAP_FILE1@
726       localmap1: 110000; 0041;
727            from: \u{110000}BC
728         actions: IDN_UNICODECONV IDN_MAP IDN_LOCALCONV
729          result: idn_resconf_loadfile() ERROR: invalid code point
730              to:
731--
732#
733# language-local conversion test.
734# The map file defines a map for "XXXX" (not code point).
735#
736             api: encodename
737  local_encoding: U-escape
738            conf: map language-local
739            conf: language-local * @LOCALMAP_FILE1@
740       localmap1: XXXX; 0041;
741            from: ABC
742         actions: IDN_UNICODECONV IDN_MAP IDN_LOCALCONV
743          result: idn_resconf_loadfile() ERROR: syntax error
744              to:
745--
746#
747# language-local conversion test.
748# The map result contains U+0000.
749#
750             api: encodename
751  local_encoding: U-escape
752            conf: map language-local
753            conf: language-local * @LOCALMAP_FILE1@
754       localmap1: 0041; 0000;
755            from: ABC
756         actions: IDN_UNICODECONV IDN_MAP IDN_LOCALCONV
757          result: idn_resconf_loadfile() ERROR: invalid code point
758              to:
759--
760#
761# language-local conversion test.
762# The map result contains U+D7FF.
763#
764             api: encodename
765  local_encoding: U-escape
766            conf: map language-local
767            conf: language-local * @LOCALMAP_FILE1@
768       localmap1: 0041; D7FF;
769            from: ABC
770         actions: IDN_UNICODECONV IDN_MAP IDN_LOCALCONV
771          result: success
772              to: \u{d7ff}BC
773--
774#
775# language-local conversion test.
776# The map result contains U+D800 (used for surrogate pair).
777#
778             api: encodename
779  local_encoding: U-escape
780            conf: map language-local
781            conf: language-local * @LOCALMAP_FILE1@
782       localmap1: 0041; D800;
783            from: ABC
784         actions: IDN_UNICODECONV IDN_MAP IDN_LOCALCONV
785          result: idn_resconf_loadfile() ERROR: invalid code point
786              to:
787--
788#
789# language-local conversion test.
790# The map result contains U+DFFF (used for surrogate pair).
791#
792             api: encodename
793  local_encoding: U-escape
794            conf: map language-local
795            conf: language-local * @LOCALMAP_FILE1@
796       localmap1: 0041; D800;
797            from: ABC
798         actions: IDN_UNICODECONV IDN_MAP IDN_LOCALCONV
799          result: idn_resconf_loadfile() ERROR: invalid code point
800              to:
801--
802#
803# language-local conversion test.
804# The map result contains U+E000.
805#
806             api: encodename
807  local_encoding: U-escape
808            conf: map language-local
809            conf: language-local * @LOCALMAP_FILE1@
810       localmap1: 0041; E000;
811            from: ABC
812         actions: IDN_UNICODECONV IDN_MAP IDN_LOCALCONV
813          result: success
814              to: \u{e000}BC
815--
816#
817# language-local conversion test.
818# The map result contains U+10FFFF.
819#
820             api: encodename
821  local_encoding: U-escape
822            conf: map language-local
823            conf: language-local * @LOCALMAP_FILE1@
824       localmap1: 0041; 10FFFF;
825            from: ABC
826         actions: IDN_UNICODECONV IDN_MAP IDN_LOCALCONV
827          result: success
828              to: \u{10ffff}BC
829--
830#
831# language-local conversion test.
832# The map result contains U+110000.
833#
834             api: encodename
835  local_encoding: U-escape
836            conf: map language-local
837            conf: language-local * @LOCALMAP_FILE1@
838       localmap1: 0041; 110000;
839            from: ABC
840         actions: IDN_UNICODECONV IDN_MAP IDN_LOCALCONV
841          result: idn_resconf_loadfile() ERROR: invalid code point
842              to:
843--
844#
845# language-local conversion test.
846# The map result contains "XXXX" (not code point).
847#
848             api: encodename
849  local_encoding: U-escape
850            conf: map language-local
851            conf: language-local * @LOCALMAP_FILE1@
852       localmap1: 0041; XXXX;
853            from: ABC
854         actions: IDN_UNICODECONV IDN_MAP IDN_LOCALCONV
855          result: idn_resconf_loadfile() ERROR: syntax error
856              to:
857--
858#
859# language-local conversion test.
860# The map file lacks newline character at EOF.
861#
862             api: encodename
863  local_encoding: U-escape
864            conf: map language-local
865            conf: language-local * @LOCALMAP_FILE1@
866      post_setup: cp $SRCDIR/no-newline.map @LOCALMAP_FILE1@
867            from: ABC
868         actions: IDN_UNICODECONV IDN_MAP IDN_LOCALCONV
869          result: success
870              to: aBC
871--
872#
873# language-local conversion test.
874# Too long line in a map file.
875#
876             api: encodename
877  local_encoding: U-escape
878            conf: map language-local
879            conf: language-local * @LOCALMAP_FILE1@
880       localmap1: # ****************************************************************************************************************************************************************************************************************************************************************************************************************************
881            from: ABC
882         actions: IDN_UNICODECONV IDN_MAP IDN_LOCALCONV
883          result: idn_resconf_loadfile() ERROR: syntax error
884              to:
885--
886######################################################################
887# Tests using decodename.
888######################################################################
889--
890#
891# language-local conversion test.
892# Convert U+0041 (A) to U+0061 (a) when the current language is Japanese.
893#
894             api: decodename
895  local_encoding: U-escape
896            conf: language ja
897            conf: map language-local
898            conf: language-local ja @LOCALMAP_FILE1@
899       localmap1: 0041; 0061;
900            from: ABC
901         actions: IDN_UNICODECONV IDN_MAP IDN_LOCALCONV
902          result: success
903              to: aBC
904--
905#
906# language-local conversion test.
907# Convert "".
908#
909             api: decodename
910  local_encoding: U-escape
911            conf: language ja
912            conf: map language-local
913            conf: language-local ja @LOCALMAP_FILE1@
914       localmap1: 0041; 0061;
915            from:
916         actions: IDN_UNICODECONV IDN_MAP IDN_LOCALCONV
917          result: success
918              to:
919--
920