# *******************************************************************************
# * Copyright (C) 2001-2003, International Business Machines
# * Corporation and others.  All Rights Reserved.
# *******************************************************************************
#
# test3.ucm
#
# Test file for MBCS conversion with three-byte codepage data.
# Also contains extension mappings (m:n).

<code_set_name>     "test3"
<mb_cur_max>        3
<mb_cur_min>        1
<uconv_class>       "MBCS"
<subchar>           \xff
<icu:state>         0, 1:1, 5-9, ff
<icu:state>         2:2
<icu:state>         a-f.p

CHARMAP

# fromUnicode result is zero byte from other than U+0000
<U20ac>     \x00 |0

# nothing special
<U0005>     \x05 |0

# extensions
<U00c0>     \x05+\x01\x02\x0d |0
<U00c0>     \x05+\x01\x02\x0e |3
<U00c0>     \x05+\xff |3

# toUnicode result is fallback direct
<U0006>     \x06 |3

# toUnicode result is direct non-BMP code point
<U101234>   \x07 |0
<Ufebcd>    \x08 |3

# extensions
<U101234>+<U50005>+<U60006> \x07+\x00+\x01\x02\x0f+\x09 |0
<U101234>+<U50005>          \x07+\x00+\x01\x02\x0e+\x05 |0
<U101234>+<U60006>          \x07+\x00+\x01\x02\x0f+\x06 |0
<U101234>+<U70007>          \x07+\x00+\x01\x02\x0f |1

#unassigned \x09

# extensions where the first code point is unassigned, for replay testing
#<U00c4><U0300> \x09+\x09 |0
<U00c4><U00c4><U101234><U0005> \x05+\x01\x02\x0c |0

# toUnicode result is surrogate pair: test real pair, single unit, unassigned
<U23456>    \x01\x02\x0a |0
<U000b>     \x01\x02\x0b |0
#unassigned \x01\x02\x0c
<U34567>    \x01\x02\x0d |3
<U000e>     \x01\x02\x0e |3
#unassigned \x01\x02\x0f

END CHARMAP
