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.

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

mercurial