# *******************************************************************************
# * Copyright (C) 2000, International Business Machines
# * Corporation and others.  All Rights Reserved.
# *******************************************************************************
#
# test3.ucm
#
# Test file for MBCS conversion with three-byte codepage data.

<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

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

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

#unassigned \x09

# 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
