xpcom/tests/UTFStrings.h

Wed, 31 Dec 2014 06:09:35 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:09:35 +0100
changeset 0
6474c204b198
permissions
-rw-r--r--

Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.

     1 /* This Source Code Form is subject to the terms of the Mozilla Public
     2  * License, v. 2.0. If a copy of the MPL was not distributed with this
     3  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
     5 #ifndef utfstrings_h__
     6 #define utfstrings_h__
     8 struct UTFStringsStringPair
     9   {
    10     char16_t m16[16];
    11     char m8[16];
    12   };
    14 static const UTFStringsStringPair ValidStrings[] =
    15   {
    16     { { 'a', 'b', 'c', 'd' },
    17       { 'a', 'b', 'c', 'd' } },
    18     { { '1', '2', '3', '4' },
    19       { '1', '2', '3', '4' } },
    20     { { 0x7F, 'A', 0x80, 'B', 0x101, 0x200 },
    21       { 0x7F, 'A', 0xC2, 0x80, 'B', 0xC4, 0x81, 0xC8, 0x80 } },
    22     { { 0x7FF, 0x800, 0x1000 },
    23       { 0xDF, 0xBF, 0xE0, 0xA0, 0x80, 0xE1, 0x80, 0x80 } },
    24     { { 0xD7FF, 0xE000, 0xF00F, 'A', 0xFFF0 },
    25       { 0xED, 0x9F, 0xBF, 0xEE, 0x80, 0x80, 0xEF, 0x80, 0x8F, 'A', 0xEF, 0xBF, 0xB0 } },
    26     { { 0xFFF7, 0xFFFC, 0xFFFD, 0xFFFD },
    27       { 0xEF, 0xBF, 0xB7, 0xEF, 0xBF, 0xBC, 0xEF, 0xBF, 0xBD, 0xEF, 0xBF, 0xBD } },
    28     { { 0xD800, 0xDC00, 0xD800, 0xDCFF },
    29       { 0xF0, 0x90, 0x80, 0x80, 0xF0, 0x90, 0x83, 0xBF } },
    30     { { 0xDBFF, 0xDFFF, 0xDBB7, 0xDCBA },
    31       { 0xF4, 0x8F, 0xBF, 0xBF, 0xF3, 0xBD, 0xB2, 0xBA } },
    32     { { 0xFFFD, 0xFFFF },
    33       { 0xEF, 0xBF, 0xBD, 0xEF, 0xBF, 0xBF } },
    34     { { 0xFFFD, 0xFFFE, 0xFFFF },
    35       { 0xEF, 0xBF, 0xBD, 0xEF, 0xBF, 0xBE, 0xEF, 0xBF, 0xBF } },
    36   };
    38 static const UTFStringsStringPair Invalid16Strings[] =
    39   {
    40     { { 'a', 'b', 0xD800 },
    41       { 'a', 'b', 0xEF, 0xBF, 0xBD } },
    42     { { 0xD8FF, 'b' },
    43       { 0xEF, 0xBF, 0xBD, 'b' } },
    44     { { 0xD821 },
    45       { 0xEF, 0xBF, 0xBD } },
    46     { { 0xDC21 },
    47       { 0xEF, 0xBF, 0xBD } },
    48     { { 0xDC00, 0xD800, 'b' },
    49       { 0xEF, 0xBF, 0xBD, 0xEF, 0xBF, 0xBD, 'b' } },
    50     { { 'b', 0xDC00, 0xD800 },
    51       { 'b', 0xEF, 0xBF, 0xBD, 0xEF, 0xBF, 0xBD } },
    52     { { 0xDC00, 0xD800 },
    53       { 0xEF, 0xBF, 0xBD, 0xEF, 0xBF, 0xBD } },
    54     { { 0xDC00, 0xD800, 0xDC00, 0xD800 },
    55       { 0xEF, 0xBF, 0xBD, 0xF0, 0x90, 0x80, 0x80, 0xEF, 0xBF, 0xBD } },
    56     { { 0xDC00, 0xD800, 0xD800, 0xDC00 },
    57       { 0xEF, 0xBF, 0xBD, 0xEF, 0xBF, 0xBD, 0xF0, 0x90, 0x80, 0x80 } },
    58   };
    60 static const UTFStringsStringPair Invalid8Strings[] =
    61   {
    62     { { 'a', 0xFFFD, 'b' },
    63       { 'a', 0xC0, 0x80, 'b' } },
    64     { { 0xFFFD, 0x80 },
    65       { 0xC1, 0xBF, 0xC2, 0x80 } },
    66     { { 0xFFFD },
    67       { 0xC1, 0xBF } },
    68     { { 0xFFFD, 'x', 0x0800 },
    69       { 0xE0, 0x80, 0x80, 'x', 0xE0, 0xA0, 0x80 } },
    70     { { 0xFFFD, 'x', 0xFFFD },
    71       { 0xF0, 0x80, 0x80, 0x80, 'x', 0xF0, 0x80, 0x8F, 0x80 } },
    72     { { 0xFFFD, 0xFFFD },
    73       { 0xF4, 0x90, 0x80, 0x80, 0xF7, 0xBF, 0xBF, 0xBF } },
    74     { { 0xFFFD, 'x', 0xD800, 0xDC00, 0xFFFD },
    75       { 0xF0, 0x8F, 0xBF, 0xBF, 'x', 0xF0, 0x90, 0x80, 0x80, 0xF0, 0x8F, 0xBF, 0xBF } },
    76     { { 0xFFFD, 'x', 0xFFFD },
    77       { 0xF8, 0x80, 0x80, 0x80, 0x80, 'x', 0xF8, 0x88, 0x80, 0x80, 0x80 } },
    78     { { 0xFFFD, 0xFFFD },
    79       { 0xFB, 0xBF, 0xBF, 0xBF, 0xBF, 0xFC, 0xA0, 0x80, 0x80, 0x80, 0x80 } },
    80     { { 0xFFFD, 0xFFFD },
    81       { 0xFC, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFD, 0xBF, 0xBF, 0xBF, 0xBF, 0xBF } },
    82   };
    84 // Don't use this array in debug builds as that intentionally asserts.
    85 #ifndef DEBUG
    86 static const char Malformed8Strings[][16] =
    87   {
    88     { 0x80 },
    89     { 'a', 0xC8, 'c' },
    90     { 'a', 0xC0 },
    91     { 'a', 0xE8, 'c' },
    92     { 'a', 0xE8, 0x80, 'c' },
    93     { 'a', 0xE8, 0x80 },
    94     { 0xE8, 0x7F, 0x80 },
    95     { 'a', 0xE8, 0xE8, 0x80 },
    96     { 'a', 0xF4 },
    97     { 'a', 0xF4, 0x80, 0x80, 'c', 'c' },
    98     { 'a', 0xF4, 0x80, 'x', 0x80 },
    99     { 0xF4, 0x80, 0x80, 0x80, 0x80 },
   100     { 'a', 0xFA, 'c' },
   101     { 'a', 0xFA, 0x80, 0x80, 0x7F, 0x80, 'c' },
   102     { 'a', 0xFA, 0x80, 0x80, 0x80, 0x80, 0x80, 'c' },
   103     { 'a', 0xFD },
   104     { 'a', 0xFD, 0x80, 0x80, 0x80, 0x80, 'c' },
   105     { 'a', 0xFD, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80 },
   106     { 'a', 0xFC, 0x80, 0x80, 0x40, 0x80, 0x80, 'c' },
   107   };
   108 #endif
   110 #endif

mercurial