xpcom/tests/UTFStrings.h

changeset 0
6474c204b198
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/xpcom/tests/UTFStrings.h	Wed Dec 31 06:09:35 2014 +0100
     1.3 @@ -0,0 +1,110 @@
     1.4 +/* This Source Code Form is subject to the terms of the Mozilla Public
     1.5 + * License, v. 2.0. If a copy of the MPL was not distributed with this
     1.6 + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
     1.7 +
     1.8 +#ifndef utfstrings_h__
     1.9 +#define utfstrings_h__
    1.10 +
    1.11 +struct UTFStringsStringPair
    1.12 +  {
    1.13 +    char16_t m16[16];
    1.14 +    char m8[16];
    1.15 +  };
    1.16 +
    1.17 +static const UTFStringsStringPair ValidStrings[] =
    1.18 +  {
    1.19 +    { { 'a', 'b', 'c', 'd' },
    1.20 +      { 'a', 'b', 'c', 'd' } },
    1.21 +    { { '1', '2', '3', '4' },
    1.22 +      { '1', '2', '3', '4' } },
    1.23 +    { { 0x7F, 'A', 0x80, 'B', 0x101, 0x200 },
    1.24 +      { 0x7F, 'A', 0xC2, 0x80, 'B', 0xC4, 0x81, 0xC8, 0x80 } },
    1.25 +    { { 0x7FF, 0x800, 0x1000 },
    1.26 +      { 0xDF, 0xBF, 0xE0, 0xA0, 0x80, 0xE1, 0x80, 0x80 } },
    1.27 +    { { 0xD7FF, 0xE000, 0xF00F, 'A', 0xFFF0 },
    1.28 +      { 0xED, 0x9F, 0xBF, 0xEE, 0x80, 0x80, 0xEF, 0x80, 0x8F, 'A', 0xEF, 0xBF, 0xB0 } },
    1.29 +    { { 0xFFF7, 0xFFFC, 0xFFFD, 0xFFFD },
    1.30 +      { 0xEF, 0xBF, 0xB7, 0xEF, 0xBF, 0xBC, 0xEF, 0xBF, 0xBD, 0xEF, 0xBF, 0xBD } },
    1.31 +    { { 0xD800, 0xDC00, 0xD800, 0xDCFF },
    1.32 +      { 0xF0, 0x90, 0x80, 0x80, 0xF0, 0x90, 0x83, 0xBF } },
    1.33 +    { { 0xDBFF, 0xDFFF, 0xDBB7, 0xDCBA },
    1.34 +      { 0xF4, 0x8F, 0xBF, 0xBF, 0xF3, 0xBD, 0xB2, 0xBA } },
    1.35 +    { { 0xFFFD, 0xFFFF },
    1.36 +      { 0xEF, 0xBF, 0xBD, 0xEF, 0xBF, 0xBF } },
    1.37 +    { { 0xFFFD, 0xFFFE, 0xFFFF },
    1.38 +      { 0xEF, 0xBF, 0xBD, 0xEF, 0xBF, 0xBE, 0xEF, 0xBF, 0xBF } },
    1.39 +  };
    1.40 +
    1.41 +static const UTFStringsStringPair Invalid16Strings[] =
    1.42 +  {
    1.43 +    { { 'a', 'b', 0xD800 },
    1.44 +      { 'a', 'b', 0xEF, 0xBF, 0xBD } },
    1.45 +    { { 0xD8FF, 'b' },
    1.46 +      { 0xEF, 0xBF, 0xBD, 'b' } },
    1.47 +    { { 0xD821 },
    1.48 +      { 0xEF, 0xBF, 0xBD } },
    1.49 +    { { 0xDC21 },
    1.50 +      { 0xEF, 0xBF, 0xBD } },
    1.51 +    { { 0xDC00, 0xD800, 'b' },
    1.52 +      { 0xEF, 0xBF, 0xBD, 0xEF, 0xBF, 0xBD, 'b' } },
    1.53 +    { { 'b', 0xDC00, 0xD800 },
    1.54 +      { 'b', 0xEF, 0xBF, 0xBD, 0xEF, 0xBF, 0xBD } },
    1.55 +    { { 0xDC00, 0xD800 },
    1.56 +      { 0xEF, 0xBF, 0xBD, 0xEF, 0xBF, 0xBD } },
    1.57 +    { { 0xDC00, 0xD800, 0xDC00, 0xD800 },
    1.58 +      { 0xEF, 0xBF, 0xBD, 0xF0, 0x90, 0x80, 0x80, 0xEF, 0xBF, 0xBD } },
    1.59 +    { { 0xDC00, 0xD800, 0xD800, 0xDC00 },
    1.60 +      { 0xEF, 0xBF, 0xBD, 0xEF, 0xBF, 0xBD, 0xF0, 0x90, 0x80, 0x80 } },
    1.61 +  };
    1.62 +
    1.63 +static const UTFStringsStringPair Invalid8Strings[] =
    1.64 +  {
    1.65 +    { { 'a', 0xFFFD, 'b' },
    1.66 +      { 'a', 0xC0, 0x80, 'b' } },
    1.67 +    { { 0xFFFD, 0x80 },
    1.68 +      { 0xC1, 0xBF, 0xC2, 0x80 } },
    1.69 +    { { 0xFFFD },
    1.70 +      { 0xC1, 0xBF } },
    1.71 +    { { 0xFFFD, 'x', 0x0800 },
    1.72 +      { 0xE0, 0x80, 0x80, 'x', 0xE0, 0xA0, 0x80 } },
    1.73 +    { { 0xFFFD, 'x', 0xFFFD },
    1.74 +      { 0xF0, 0x80, 0x80, 0x80, 'x', 0xF0, 0x80, 0x8F, 0x80 } },
    1.75 +    { { 0xFFFD, 0xFFFD },
    1.76 +      { 0xF4, 0x90, 0x80, 0x80, 0xF7, 0xBF, 0xBF, 0xBF } },
    1.77 +    { { 0xFFFD, 'x', 0xD800, 0xDC00, 0xFFFD },
    1.78 +      { 0xF0, 0x8F, 0xBF, 0xBF, 'x', 0xF0, 0x90, 0x80, 0x80, 0xF0, 0x8F, 0xBF, 0xBF } },
    1.79 +    { { 0xFFFD, 'x', 0xFFFD },
    1.80 +      { 0xF8, 0x80, 0x80, 0x80, 0x80, 'x', 0xF8, 0x88, 0x80, 0x80, 0x80 } },
    1.81 +    { { 0xFFFD, 0xFFFD },
    1.82 +      { 0xFB, 0xBF, 0xBF, 0xBF, 0xBF, 0xFC, 0xA0, 0x80, 0x80, 0x80, 0x80 } },
    1.83 +    { { 0xFFFD, 0xFFFD },
    1.84 +      { 0xFC, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFD, 0xBF, 0xBF, 0xBF, 0xBF, 0xBF } },
    1.85 +  };
    1.86 +
    1.87 +// Don't use this array in debug builds as that intentionally asserts.
    1.88 +#ifndef DEBUG
    1.89 +static const char Malformed8Strings[][16] =
    1.90 +  {
    1.91 +    { 0x80 },
    1.92 +    { 'a', 0xC8, 'c' },
    1.93 +    { 'a', 0xC0 },
    1.94 +    { 'a', 0xE8, 'c' },
    1.95 +    { 'a', 0xE8, 0x80, 'c' },
    1.96 +    { 'a', 0xE8, 0x80 },
    1.97 +    { 0xE8, 0x7F, 0x80 },
    1.98 +    { 'a', 0xE8, 0xE8, 0x80 },
    1.99 +    { 'a', 0xF4 },
   1.100 +    { 'a', 0xF4, 0x80, 0x80, 'c', 'c' },
   1.101 +    { 'a', 0xF4, 0x80, 'x', 0x80 },
   1.102 +    { 0xF4, 0x80, 0x80, 0x80, 0x80 },
   1.103 +    { 'a', 0xFA, 'c' },
   1.104 +    { 'a', 0xFA, 0x80, 0x80, 0x7F, 0x80, 'c' },
   1.105 +    { 'a', 0xFA, 0x80, 0x80, 0x80, 0x80, 0x80, 'c' },
   1.106 +    { 'a', 0xFD },
   1.107 +    { 'a', 0xFD, 0x80, 0x80, 0x80, 0x80, 'c' },
   1.108 +    { 'a', 0xFD, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80 },
   1.109 +    { 'a', 0xFC, 0x80, 0x80, 0x40, 0x80, 0x80, 'c' },
   1.110 +  };
   1.111 +#endif
   1.112 +
   1.113 +#endif

mercurial