# Copyright (C) 2016 and later: Unicode, Inc. and others.
# License & terms of use: http://www.unicode.org/copyright.html
# *******************************************************************************
# * Copyright (C) 2012, International Business Machines
# * Corporation and others.  All Rights Reserved.
# *******************************************************************************
#
# test2.ucm
#
# Test file for MBCS conversion with two-byte codepage data. (DBCS)
# Also contains extension mappings (m:n).

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

CHARMAP

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

# nothing special
<U0065>     \x05 |0

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

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

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

# extensions
<U101234>+<U50005>+<U60006> \x07+\x00+\x01\x0f+\x09 |0
<U101234>+<U50005>          \x07+\x00+\x01\x0e+\x05 |0
<U101234>+<U60006>          \x07+\x00+\x01\x0f+\x06 |0
<U101234>+<U70007>          \x07+\x00+\x01\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\x0c |0

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

END CHARMAP
