1ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/********************************************************************
2ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * COPYRIGHT:
385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * Copyright (c) 1997-2009, International Business Machines Corporation and
4ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * others. All Rights Reserved.
5ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru ********************************************************************/
6ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/********************************************************************************
7ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru*
8ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru* File encoll.C
9ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru*
10ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru* Modification History:
11ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru*        Name                     Description
12ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru*     Madhu Katragadda            Ported for C API
13ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru*********************************************************************************/
14ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/**
15ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * CollationEnglishTest is a third level test class.  This tests the locale
16ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * specific primary, secondary and tertiary rules.  For example, the ignorable
17ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * character '-' in string "black-bird".  The en_US locale uses the default
18ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * collation rules as its sorting sequence.
19ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */
20ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
21ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#include <stdlib.h>
22ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#include <string.h>
23ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
24ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#include "unicode/utypes.h"
25ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
26ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#if !UCONFIG_NO_COLLATION
27ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
28ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#include "unicode/ucol.h"
29ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#include "unicode/uloc.h"
30ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#include "cintltst.h"
31ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#include "encoll.h"
32ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#include "ccolltst.h"
33ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#include "callcoll.h"
34ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#include "unicode/ustring.h"
35ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
36ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querustatic UCollator *myCollation = NULL;
37ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queruconst static UChar testSourceCases[][MAX_TOKEN_LEN] = {
38ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        {(UChar)0x0061 /* 'a' */, (UChar)0x0062 /* 'b' */, 0},
39ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        {(UChar)0x0062 /* 'b' */, (UChar)0x006C /* 'l' */, (UChar)0x0061 /* 'a' */, (UChar)0x0063 /* 'c' */, (UChar)0x006B /* 'k' */, (UChar)0x002D /* '-' */, (UChar)0x0062 /* 'b' */, (UChar)0x0069 /* 'i' */, (UChar)0x0072 /* 'r' */, (UChar)0x0064 /* 'd' */, 0},
40ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        {(UChar)0x0062 /* 'b' */, (UChar)0x006C /* 'l' */, (UChar)0x0061 /* 'a' */, (UChar)0x0063 /* 'c' */, (UChar)0x006B /* 'k' */, (UChar)0x0020 /* ' ' */, (UChar)0x0062 /* 'b' */, (UChar)0x0069 /* 'i' */, (UChar)0x0072 /* 'r' */, (UChar)0x0064 /* 'd' */, 0},
41ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        {(UChar)0x0062 /* 'b' */, (UChar)0x006C /* 'l' */, (UChar)0x0061 /* 'a' */, (UChar)0x0063 /* 'c' */, (UChar)0x006B /* 'k' */, (UChar)0x002D /* '-' */, (UChar)0x0062 /* 'b' */, (UChar)0x0069 /* 'i' */, (UChar)0x0072 /* 'r' */, (UChar)0x0064 /* 'd' */, 0},
42ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        {(UChar)0x0048 /* 'H' */, (UChar)0x0065 /* 'e' */, (UChar)0x006C /* 'l' */, (UChar)0x006C /* 'l' */, (UChar)0x006F /* 'o' */, 0},
43ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        {(UChar)0x0041 /* 'A' */, (UChar)0x0042 /* 'B' */, (UChar)0x0043 /* 'C' */, 0},
44ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        {(UChar)0x0061 /* 'a' */, (UChar)0x0062 /* 'b' */, (UChar)0x0063 /* 'c' */, 0},
45ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        {(UChar)0x0062 /* 'b' */, (UChar)0x006C /* 'l' */, (UChar)0x0061 /* 'a' */, (UChar)0x0063 /* 'c' */, (UChar)0x006B /* 'k' */, (UChar)0x0062 /* 'b' */, (UChar)0x0069 /* 'i' */, (UChar)0x0072 /* 'r' */, (UChar)0x0064 /* 'd' */, 0},
46ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        {(UChar)0x0062 /* 'b' */, (UChar)0x006C /* 'l' */, (UChar)0x0061 /* 'a' */, (UChar)0x0063 /* 'c' */, (UChar)0x006B /* 'k' */, (UChar)0x002D /* '-' */, (UChar)0x0062 /* 'b' */, (UChar)0x0069 /* 'i' */, (UChar)0x0072 /* 'r' */, (UChar)0x0064 /* 'd' */, 0},
47ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        {(UChar)0x0062 /* 'b' */, (UChar)0x006C /* 'l' */, (UChar)0x0061 /* 'a' */, (UChar)0x0063 /* 'c' */, (UChar)0x006B /* 'k' */, (UChar)0x002D /* '-' */, (UChar)0x0062 /* 'b' */, (UChar)0x0069 /* 'i' */, (UChar)0x0072 /* 'r' */, (UChar)0x0064 /* 'd' */, 0},
48ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        {(UChar)0x0070 /* 'p' */, 0x00EA, (UChar)0x0063 /* 'c' */, (UChar)0x0068 /* 'h' */, (UChar)0x0065 /* 'e' */, 0},
49ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        {(UChar)0x0070 /* 'p' */, 0x00E9, (UChar)0x0063 /* 'c' */, (UChar)0x0068 /* 'h' */, 0x00E9, 0},
50ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        {0x00C4, (UChar)0x0042 /* 'B' */, 0x0308, (UChar)0x0043 /* 'C' */, 0x0308, 0},
51ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        {(UChar)0x0061 /* 'a' */, 0x0308, (UChar)0x0062 /* 'b' */, (UChar)0x0063 /* 'c' */, 0},
52ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        {(UChar)0x0070 /* 'p' */, 0x00E9, (UChar)0x0063 /* 'c' */, (UChar)0x0068 /* 'h' */, (UChar)0x0065 /* 'e' */, (UChar)0x0072 /* 'r' */, 0},
53ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        {(UChar)0x0072 /* 'r' */, (UChar)0x006F /* 'o' */, (UChar)0x006C /* 'l' */, (UChar)0x0065 /* 'e' */, (UChar)0x0073 /* 's' */, 0},
54ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        {(UChar)0x0061 /* 'a' */, (UChar)0x0062 /* 'b' */, (UChar)0x0063 /* 'c' */, 0},
55ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        {(UChar)0x0041 /* 'A' */, 0},
56ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        {(UChar)0x0041 /* 'A' */, 0},
57ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        {(UChar)0x0061 /* 'a' */, (UChar)0x0062 /* 'b' */, 0},
58ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        {(UChar)0x0074 /* 't' */, (UChar)0x0063 /* 'c' */, (UChar)0x006F /* 'o' */, (UChar)0x006D /* 'm' */, (UChar)0x0070 /* 'p' */, (UChar)0x0061 /* 'a' */, (UChar)0x0072 /* 'r' */, (UChar)0x0065 /* 'e' */, (UChar)0x0070 /* 'p' */, (UChar)0x006C /* 'l' */, (UChar)0x0061 /* 'a' */, (UChar)0x0069 /* 'i' */, (UChar)0x006E /* 'n' */, 0},
59ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        {(UChar)0x0061 /* 'a' */, (UChar)0x0062 /* 'b' */, 0},
60ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        {(UChar)0x0061 /* 'a' */, (UChar)0x0023 /* '#' */, (UChar)0x0062 /* 'b' */, 0},
61ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        {(UChar)0x0061 /* 'a' */, (UChar)0x0023 /* '#' */, (UChar)0x0062 /* 'b' */, 0},
62ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        {(UChar)0x0061 /* 'a' */, (UChar)0x0062 /* 'b' */, (UChar)0x0063 /* 'c' */, 0},
63ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        {(UChar)0x0041 /* 'A' */, (UChar)0x0062 /* 'b' */, (UChar)0x0063 /* 'c' */, (UChar)0x0064 /* 'd' */, (UChar)0x0061 /* 'a' */, 0},
64ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        {(UChar)0x0061 /* 'a' */, (UChar)0x0062 /* 'b' */, (UChar)0x0063 /* 'c' */, (UChar)0x0064 /* 'd' */, (UChar)0x0061 /* 'a' */, 0},
65ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        {(UChar)0x0061 /* 'a' */, (UChar)0x0062 /* 'b' */, (UChar)0x0063 /* 'c' */, (UChar)0x0064 /* 'd' */, (UChar)0x0061 /* 'a' */, 0},
66ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        {0x00E6, (UChar)0x0062 /* 'b' */, (UChar)0x0063 /* 'c' */, (UChar)0x0064 /* 'd' */, (UChar)0x0061 /* 'a' */, 0},
67ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        {0x00E4, (UChar)0x0062 /* 'b' */, (UChar)0x0063 /* 'c' */, (UChar)0x0064 /* 'd' */, (UChar)0x0061 /* 'a' */, 0},
68ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        {(UChar)0x0061 /* 'a' */, (UChar)0x0062 /* 'b' */, (UChar)0x0063 /* 'c' */, 0},
69ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        {(UChar)0x0061 /* 'a' */, (UChar)0x0062 /* 'b' */, (UChar)0x0063 /* 'c' */, 0},
70ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        {(UChar)0x0061 /* 'a' */, (UChar)0x0062 /* 'b' */, (UChar)0x0063 /* 'c' */, 0},
71ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        {(UChar)0x0061 /* 'a' */, (UChar)0x0062 /* 'b' */, (UChar)0x0063 /* 'c' */, 0},
72ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        {(UChar)0x0061 /* 'a' */, (UChar)0x0062 /* 'b' */, (UChar)0x0063 /* 'c' */, 0},
73ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        {(UChar)0x0061 /* 'a' */, (UChar)0x0063 /* 'c' */, (UChar)0x0048 /* 'H' */, (UChar)0x0063 /* 'c' */, 0},
74ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        {(UChar)0x0061 /* 'a' */, 0x0308, (UChar)0x0062 /* 'b' */, (UChar)0x0063 /* 'c' */, 0},
75ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        {(UChar)0x0074 /* 't' */, (UChar)0x0068 /* 'h' */, (UChar)0x0069 /* 'i' */, 0x0302, (UChar)0x0073 /* 's' */, 0},
76ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        {(UChar)0x0070 /* 'p' */, 0x00EA, (UChar)0x0063 /* 'c' */, (UChar)0x0068 /* 'h' */, (UChar)0x0065 /* 'e' */},
77ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        {(UChar)0x0061 /* 'a' */, (UChar)0x0062 /* 'b' */, (UChar)0x0063 /* 'c' */, 0},
78ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        {(UChar)0x0061 /* 'a' */, (UChar)0x0062 /* 'b' */, (UChar)0x0063 /* 'c' */, 0},
79ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        {(UChar)0x0061 /* 'a' */, (UChar)0x0062 /* 'b' */, (UChar)0x0063 /* 'c' */, 0},
80ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        {(UChar)0x0061 /* 'a' */, 0x00E6, (UChar)0x0063 /* 'c' */, 0},
81ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        {(UChar)0x0061 /* 'a' */, (UChar)0x0062 /* 'b' */, (UChar)0x0063 /* 'c' */, 0},
82ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        {(UChar)0x0061 /* 'a' */, (UChar)0x0062 /* 'b' */, (UChar)0x0063 /* 'c' */, 0},
83ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        {(UChar)0x0061 /* 'a' */, 0x00E6, (UChar)0x0063 /* 'c' */, 0},
84ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        {(UChar)0x0061 /* 'a' */, (UChar)0x0062 /* 'b' */, (UChar)0x0063 /* 'c' */, 0},
85ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        {(UChar)0x0061 /* 'a' */, (UChar)0x0062 /* 'b' */, (UChar)0x0063 /* 'c' */, 0},
86ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        {(UChar)0x0070 /* 'p' */, 0x00E9, (UChar)0x0063 /* 'c' */, (UChar)0x0068 /* 'h' */, 0x00E9, 0}
87ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru};
88ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
89ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queruconst static UChar testTargetCases[][MAX_TOKEN_LEN] = {
90ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        {(UChar)0x0061 /* 'a' */, (UChar)0x0062 /* 'b' */, (UChar)0x0063 /* 'c' */, 0},
91ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        {(UChar)0x0062 /* 'b' */, (UChar)0x006C /* 'l' */, (UChar)0x0061 /* 'a' */, (UChar)0x0063 /* 'c' */, (UChar)0x006B /* 'k' */, (UChar)0x0062 /* 'b' */, (UChar)0x0069 /* 'i' */, (UChar)0x0072 /* 'r' */, (UChar)0x0064 /* 'd' */, 0},
92ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        {(UChar)0x0062 /* 'b' */, (UChar)0x006C /* 'l' */, (UChar)0x0061 /* 'a' */, (UChar)0x0063 /* 'c' */, (UChar)0x006B /* 'k' */, (UChar)0x002D /* '-' */, (UChar)0x0062 /* 'b' */, (UChar)0x0069 /* 'i' */, (UChar)0x0072 /* 'r' */, (UChar)0x0064 /* 'd' */, 0},
93ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        {(UChar)0x0062 /* 'b' */, (UChar)0x006C /* 'l' */, (UChar)0x0061 /* 'a' */, (UChar)0x0063 /* 'c' */, (UChar)0x006B /* 'k' */, 0},
94ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        {(UChar)0x0068 /* 'h' */, (UChar)0x0065 /* 'e' */, (UChar)0x006C /* 'l' */, (UChar)0x006C /* 'l' */, (UChar)0x006F /* 'o' */, 0},
95ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        {(UChar)0x0041 /* 'A' */, (UChar)0x0042 /* 'B' */, (UChar)0x0043 /* 'C' */, 0},
96ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        {(UChar)0x0041 /* 'A' */, (UChar)0x0042 /* 'B' */, (UChar)0x0043 /* 'C' */, 0},
97ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        {(UChar)0x0062 /* 'b' */, (UChar)0x006C /* 'l' */, (UChar)0x0061 /* 'a' */, (UChar)0x0063 /* 'c' */, (UChar)0x006B /* 'k' */, (UChar)0x0062 /* 'b' */, (UChar)0x0069 /* 'i' */, (UChar)0x0072 /* 'r' */, (UChar)0x0064 /* 'd' */, (UChar)0x0073 /* 's' */, 0},
98ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        {(UChar)0x0062 /* 'b' */, (UChar)0x006C /* 'l' */, (UChar)0x0061 /* 'a' */, (UChar)0x0063 /* 'c' */, (UChar)0x006B /* 'k' */, (UChar)0x0062 /* 'b' */, (UChar)0x0069 /* 'i' */, (UChar)0x0072 /* 'r' */, (UChar)0x0064 /* 'd' */, (UChar)0x0073 /* 's' */, 0},
99ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        {(UChar)0x0062 /* 'b' */, (UChar)0x006C /* 'l' */, (UChar)0x0061 /* 'a' */, (UChar)0x0063 /* 'c' */, (UChar)0x006B /* 'k' */, (UChar)0x0062 /* 'b' */, (UChar)0x0069 /* 'i' */, (UChar)0x0072 /* 'r' */, (UChar)0x0064 /* 'd' */, 0},
100ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        {(UChar)0x0070 /* 'p' */, 0x00E9, (UChar)0x0063 /* 'c' */, (UChar)0x0068 /* 'h' */, 0x00E9, 0},
101ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        {(UChar)0x0070 /* 'p' */, 0x00E9, (UChar)0x0063 /* 'c' */, (UChar)0x0068 /* 'h' */, (UChar)0x0065 /* 'e' */, (UChar)0x0072 /* 'r' */, 0},
102ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        {0x00C4, (UChar)0x0042 /* 'B' */, 0x0308, (UChar)0x0043 /* 'C' */, 0x0308, 0},
103ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        {(UChar)0x0041 /* 'A' */, 0x0308, (UChar)0x0062 /* 'b' */, (UChar)0x0063 /* 'c' */, 0},
104ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        {(UChar)0x0070 /* 'p' */, 0x00E9, (UChar)0x0063 /* 'c' */, (UChar)0x0068 /* 'h' */, (UChar)0x0065 /* 'e' */, 0},
105ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        {(UChar)0x0072 /* 'r' */, (UChar)0x006F /* 'o' */, 0x0302, (UChar)0x006C /* 'l' */, (UChar)0x0065 /* 'e' */, 0},
106ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        {(UChar)0x0041 /* 'A' */, 0x00E1, (UChar)0x0063 /* 'c' */, (UChar)0x0064 /* 'd' */, 0},
107ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        {(UChar)0x0041 /* 'A' */, 0x00E1, (UChar)0x0063 /* 'c' */, (UChar)0x0064 /* 'd' */, 0},
108ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        {(UChar)0x0061 /* 'a' */, (UChar)0x0062 /* 'b' */, (UChar)0x0063 /* 'c' */, 0},
109ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        {(UChar)0x0061 /* 'a' */, (UChar)0x0062 /* 'b' */, (UChar)0x0063 /* 'c' */, 0},
110ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        {(UChar)0x0054 /* 'T' */, (UChar)0x0043 /* 'C' */, (UChar)0x006F /* 'o' */, (UChar)0x006D /* 'm' */, (UChar)0x0070 /* 'p' */, (UChar)0x0061 /* 'a' */, (UChar)0x0072 /* 'r' */, (UChar)0x0065 /* 'e' */, (UChar)0x0050 /* 'P' */, (UChar)0x006C /* 'l' */, (UChar)0x0061 /* 'a' */, (UChar)0x0069 /* 'i' */, (UChar)0x006E /* 'n' */, 0},
111ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        {(UChar)0x0061 /* 'a' */, (UChar)0x0042 /* 'B' */, (UChar)0x0063 /* 'c' */, 0},
112ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        {(UChar)0x0061 /* 'a' */, (UChar)0x0023 /* '#' */, (UChar)0x0042 /* 'B' */, 0},
113ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        {(UChar)0x0061 /* 'a' */, (UChar)0x0026 /* '&' */, (UChar)0x0062 /* 'b' */, 0},
114ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        {(UChar)0x0061 /* 'a' */, (UChar)0x0023 /* '#' */, (UChar)0x0063 /* 'c' */, 0},
115ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        {(UChar)0x0061 /* 'a' */, (UChar)0x0062 /* 'b' */, (UChar)0x0063 /* 'c' */, (UChar)0x0064 /* 'd' */, (UChar)0x0061 /* 'a' */, 0},
116ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        {0x00C4, (UChar)0x0062 /* 'b' */, (UChar)0x0063 /* 'c' */, (UChar)0x0064 /* 'd' */, (UChar)0x0061 /* 'a' */, 0},
117ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        {0x00E4, (UChar)0x0062 /* 'b' */, (UChar)0x0063 /* 'c' */, (UChar)0x0064 /* 'd' */, (UChar)0x0061 /* 'a' */, 0},
118ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        {0x00C4, (UChar)0x0062 /* 'b' */, (UChar)0x0063 /* 'c' */, (UChar)0x0064 /* 'd' */, (UChar)0x0061 /* 'a' */, 0},
119ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        {0x00C4, (UChar)0x0062 /* 'b' */, (UChar)0x0063 /* 'c' */, (UChar)0x0064 /* 'd' */, (UChar)0x0061 /* 'a' */, 0},
120ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        {(UChar)0x0061 /* 'a' */, (UChar)0x0062 /* 'b' */, (UChar)0x0023 /* '#' */, (UChar)0x0063 /* 'c' */, 0},
121ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        {(UChar)0x0061 /* 'a' */, (UChar)0x0062 /* 'b' */, (UChar)0x0063 /* 'c' */, 0},
122ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        {(UChar)0x0061 /* 'a' */, (UChar)0x0062 /* 'b' */, (UChar)0x003D /* '=' */, (UChar)0x0063 /* 'c' */, 0},
123ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        {(UChar)0x0061 /* 'a' */, (UChar)0x0062 /* 'b' */, (UChar)0x0064 /* 'd' */, 0},
124ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        {0x00E4, (UChar)0x0062 /* 'b' */, (UChar)0x0063 /* 'c' */, 0},
125ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        {(UChar)0x0061 /* 'a' */, (UChar)0x0043 /* 'C' */, (UChar)0x0048 /* 'H' */, (UChar)0x0063 /* 'c' */, 0},
126ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        {0x00E4, (UChar)0x0062 /* 'b' */, (UChar)0x0063 /* 'c' */, 0},
127ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        {(UChar)0x0074 /* 't' */, (UChar)0x0068 /* 'h' */, 0x00EE, (UChar)0x0073 /* 's' */, 0},
128ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        {(UChar)0x0070 /* 'p' */, 0x00E9, (UChar)0x0063 /* 'c' */, (UChar)0x0068 /* 'h' */, 0x00E9, 0},
129ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        {(UChar)0x0061 /* 'a' */, (UChar)0x0042 /* 'B' */, (UChar)0x0043 /* 'C' */, 0},
130ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        {(UChar)0x0061 /* 'a' */, (UChar)0x0062 /* 'b' */, (UChar)0x0064 /* 'd' */, 0},
131ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        {0x00E4, (UChar)0x0062 /* 'b' */, (UChar)0x0063 /* 'c' */, 0},
132ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        {(UChar)0x0061 /* 'a' */, 0x00C6, (UChar)0x0063 /* 'c' */, 0},
133ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        {(UChar)0x0061 /* 'a' */, (UChar)0x0042 /* 'B' */, (UChar)0x0064 /* 'd' */, 0},
134ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        {0x00E4, (UChar)0x0062 /* 'b' */, (UChar)0x0063 /* 'c' */, 0},
135ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        {(UChar)0x0061 /* 'a' */, 0x00C6, (UChar)0x0063 /* 'c' */, 0},
136ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        {(UChar)0x0061 /* 'a' */, (UChar)0x0042 /* 'B' */, (UChar)0x0064 /* 'd' */, 0},
137ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        {0x00E4, (UChar)0x0062 /* 'b' */, (UChar)0x0063 /* 'c' */, 0},
138ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        {(UChar)0x0070 /* 'p' */, 0x00EA, (UChar)0x0063 /* 'c' */, (UChar)0x0068 /* 'h' */, (UChar)0x0065 /* 'e' */, 0}
139ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru};
140ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
141ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queruconst static UCollationResult results[] = {
142ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        UCOL_LESS,
143ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        UCOL_LESS, /*UCOL_GREATER,*/
144ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        UCOL_LESS,
145ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        UCOL_GREATER,
146ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        UCOL_GREATER,
147ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        UCOL_EQUAL,
148ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        UCOL_LESS,
149ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        UCOL_LESS,
150ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        UCOL_LESS,
151ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        UCOL_LESS, /*UCOL_GREATER,*/                                                          /* 10 */
152ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        UCOL_GREATER,
153ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        UCOL_LESS,
154ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        UCOL_EQUAL,
155ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        UCOL_LESS,
156ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        UCOL_GREATER,
157ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        UCOL_GREATER,
158ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        UCOL_GREATER,
159ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        UCOL_LESS,
160ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        UCOL_LESS,
161ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        UCOL_LESS,                                                             /* 20 */
162ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        UCOL_LESS,
163ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        UCOL_LESS,
164ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        UCOL_LESS,
165ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        UCOL_GREATER,
166ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        UCOL_GREATER,
167ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        UCOL_GREATER,
168ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        /* Test Tertiary  > 26 */
169ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        UCOL_LESS,
170ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        UCOL_LESS,
171ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        UCOL_GREATER,
172ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        UCOL_LESS,                                                             /* 30 */
173ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        UCOL_GREATER,
174ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        UCOL_EQUAL,
175ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        UCOL_GREATER,
176ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        UCOL_LESS,
177ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        UCOL_LESS,
178ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        UCOL_LESS,
179ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        /* test identical > 36 */
180ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        UCOL_EQUAL,
181ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        UCOL_EQUAL,
182ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        /* test primary > 38 */
183ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        UCOL_EQUAL,
184ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        UCOL_EQUAL,                                                            /* 40 */
185ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        UCOL_LESS,
186ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        UCOL_EQUAL,
187ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        UCOL_EQUAL,
188ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        /* test secondary > 43 */
189ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        UCOL_LESS,
190ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        UCOL_LESS,
191ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        UCOL_EQUAL,
192ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        UCOL_LESS,
193ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        UCOL_LESS,
194ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        UCOL_LESS                                                                         /* 49 */
195ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru};
196ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
197ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queruconst static UChar testBugs[][MAX_TOKEN_LEN] = {
198ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    {(UChar)0x0061 /* 'a' */, 0},
199ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    {(UChar)0x0041 /* 'A' */, 0},
200ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    {(UChar)0x0065 /* 'e' */, 0},
201ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    {(UChar)0x0045 /* 'E' */, 0},
202ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    {0x00e9, 0},
203ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    {0x00e8, 0},
204ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    {0x00ea, 0},
205ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    {0x00eb, 0},
206ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    {(UChar)0x0065 /* 'e' */, (UChar)0x0061 /* 'a' */, 0},
207ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    {(UChar)0x0078 /* 'x' */, 0}
208ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
209ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru};
210ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
211ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/* 0x0300 is grave, 0x0301 is acute
212ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru   the order of elements in this array must be different than the order in CollationFrenchTest */
213ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queruconst static UChar testAcute[][MAX_TOKEN_LEN] = {
214ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    {(UChar)0x0065 /* 'e' */, (UChar)0x0065 /* 'e' */, 0},
215ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    {(UChar)0x0065 /* 'e' */, (UChar)0x0065 /* 'e' */, 0x0301, 0},
216ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    {(UChar)0x0065 /* 'e' */, (UChar)0x0065 /* 'e' */, 0x0301, 0x0300, 0},
217ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    {(UChar)0x0065 /* 'e' */, (UChar)0x0065 /* 'e' */, 0x0300, 0},
218ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    {(UChar)0x0065 /* 'e' */, (UChar)0x0065 /* 'e' */, 0x0300, 0x0301, 0},
219ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    {(UChar)0x0065 /* 'e' */, 0x0301, (UChar)0x0065 /* 'e' */, 0},
220ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    {(UChar)0x0065 /* 'e' */, 0x0301, (UChar)0x0065 /* 'e' */, 0x0301, 0},
221ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    {(UChar)0x0065 /* 'e' */, 0x0301, (UChar)0x0065 /* 'e' */, 0x0301, 0x0300, 0},
222ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    {(UChar)0x0065 /* 'e' */, 0x0301, (UChar)0x0065 /* 'e' */, 0x0300, 0},
223ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    {(UChar)0x0065 /* 'e' */, 0x0301, (UChar)0x0065 /* 'e' */, 0x0300, 0x0301, 0},
224ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    {(UChar)0x0065 /* 'e' */, 0x0301, 0x0300, (UChar)0x0065 /* 'e' */, 0},
225ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    {(UChar)0x0065 /* 'e' */, 0x0301, 0x0300, (UChar)0x0065 /* 'e' */, 0x0301, 0},
226ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    {(UChar)0x0065 /* 'e' */, 0x0301, 0x0300, (UChar)0x0065 /* 'e' */, 0x0301, 0x0300, 0},
227ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    {(UChar)0x0065 /* 'e' */, 0x0301, 0x0300, (UChar)0x0065 /* 'e' */, 0x0300, 0},
228ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    {(UChar)0x0065 /* 'e' */, 0x0301, 0x0300, (UChar)0x0065 /* 'e' */, 0x0300, 0x0301, 0},
229ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    {(UChar)0x0065 /* 'e' */, 0x0300, (UChar)0x0065 /* 'e' */, 0},
230ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    {(UChar)0x0065 /* 'e' */, 0x0300, (UChar)0x0065 /* 'e' */, 0x0301, 0},
231ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    {(UChar)0x0065 /* 'e' */, 0x0300, (UChar)0x0065 /* 'e' */, 0x0301, 0x0300, 0},
232ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    {(UChar)0x0065 /* 'e' */, 0x0300, (UChar)0x0065 /* 'e' */, 0x0300, 0},
233ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    {(UChar)0x0065 /* 'e' */, 0x0300, (UChar)0x0065 /* 'e' */, 0x0300, 0x0301, 0},
234ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    {(UChar)0x0065 /* 'e' */, 0x0300, 0x0301, (UChar)0x0065 /* 'e' */, 0},
235ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    {(UChar)0x0065 /* 'e' */, 0x0300, 0x0301, (UChar)0x0065 /* 'e' */, 0x0301, 0},
236ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    {(UChar)0x0065 /* 'e' */, 0x0300, 0x0301, (UChar)0x0065 /* 'e' */, 0x0301, 0x0300, 0},
237ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    {(UChar)0x0065 /* 'e' */, 0x0300, 0x0301, (UChar)0x0065 /* 'e' */, 0x0300, 0},
238ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    {(UChar)0x0065 /* 'e' */, 0x0300, 0x0301, (UChar)0x0065 /* 'e' */, 0x0300, 0x0301, 0}
239ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru};
240ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
241ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querustatic const UChar testMore[][MAX_TOKEN_LEN] = {
242ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    {(UChar)0x0061 /* 'a' */, (UChar)0x0065 /* 'e' */, 0},
243ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    { 0x00E6, 0},
244ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    { 0x00C6, 0},
245ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    {(UChar)0x0061 /* 'a' */, (UChar)0x0066 /* 'f' */, 0},
246ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    {(UChar)0x006F /* 'o' */, (UChar)0x0065 /* 'e' */, 0},
247ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    { 0x0153, 0},
248ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    { 0x0152, 0},
249ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    {(UChar)0x006F /* 'o' */, (UChar)0x0066 /* 'f' */, 0},
250ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru};
251ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
252ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
253ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queruvoid addEnglishCollTest(TestNode** root)
254ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru{
255ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
256ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    addTest(root, &TestPrimary, "tscoll/encoll/TestPrimary");
257ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    addTest(root, &TestSecondary, "tscoll/encoll/TestSecondary");
258ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    addTest(root, &TestTertiary, "tscoll/encoll/TestTertiary");
259ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
260ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru}
261ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
262ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querustatic void TestTertiary( )
263ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru{
264ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    int32_t testMoreSize;
265ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    UCollationResult expected=UCOL_EQUAL;
266ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    int32_t i,j;
267ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    UErrorCode status = U_ZERO_ERROR;
268ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    myCollation = ucol_open("en_US", &status);
269ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    if(U_FAILURE(status)){
27085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho        log_err_status(status, "ERROR: in creation of rule based collator: %s\n", myErrorName(status));
271ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        return;
272ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    }
273ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    log_verbose("Testing English Collation with Tertiary strength\n");
274ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
275ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    ucol_setStrength(myCollation, UCOL_TERTIARY);
276ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    for (i = 0; i < 38 ; i++)
277ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    {
278ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        doTest(myCollation, testSourceCases[i], testTargetCases[i], results[i]);
279ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    }
280ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
281ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
282ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    j = 0;
283ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru   for (i = 0; i < 10; i++)
284ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    {
285ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        for (j = i+1; j < 10; j++)
286ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        {
287ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru            doTest(myCollation, testBugs[i], testBugs[j], UCOL_LESS);
288ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        }
289ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru   }
290ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    /*test more interesting cases */
291ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    testMoreSize = sizeof(testMore) / sizeof(testMore[0]);
292ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    for (i = 0; i < testMoreSize; i++)
293ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    {
294ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        for (j = 0; j < testMoreSize; j++)
295ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        {
296ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru            if (i <  j) expected = UCOL_LESS;
297ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru            if (i == j) expected = UCOL_EQUAL;
298ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru            if (i >  j) expected = UCOL_GREATER;
299ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru            doTest(myCollation, testMore[i], testMore[j], expected );
300ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        }
301ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    }
302ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    ucol_close(myCollation);
303ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru}
304ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
305ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querustatic void TestPrimary()
306ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru{
307ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
308ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    int32_t i;
309ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    UErrorCode status = U_ZERO_ERROR;
310ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    myCollation = ucol_open("en_US", &status);
311ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    if(U_FAILURE(status)){
31285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho        log_err_status(status, "ERROR: in creation of rule based collator: %s\n", myErrorName(status));
313ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        return;
314ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    }
315ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    ucol_setStrength(myCollation, UCOL_PRIMARY);
316ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    log_verbose("Testing English Collation with Primary strength\n");
317ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    for (i = 38; i < 43 ; i++)
318ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    {
319ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        doTest(myCollation, testSourceCases[i], testTargetCases[i], results[i]);
320ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    }
321ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    ucol_close(myCollation);
322ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru}
323ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
324ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querustatic void TestSecondary()
325ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru{
326ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    UCollationResult expected=UCOL_EQUAL;
327ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    int32_t i,j, testAcuteSize;
328ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    UErrorCode status = U_ZERO_ERROR;
329ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    myCollation = ucol_open("en_US", &status);
330ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    if(U_FAILURE(status)){
33185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho        log_err_status(status, "ERROR: in creation of rule based collator: %s\n", myErrorName(status));
332ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        return;
333ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    }
334ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    ucol_setStrength(myCollation, UCOL_SECONDARY);
335ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    log_verbose("Testing English Collation with Secondary strength\n");
336ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    for (i = 43; i < 49 ; i++)
337ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    {
338ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        doTest(myCollation, testSourceCases[i], testTargetCases[i], results[i]);
339ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    }
340ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
341ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
342ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    /*test acute and grave ordering (compare to french collation) */
343ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    testAcuteSize = sizeof(testAcute) / sizeof(testAcute[0]);
344ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    for (i = 0; i < testAcuteSize; i++)
345ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    {
346ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        for (j = 0; j < testAcuteSize; j++)
347ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        {
348ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru            if (i <  j) expected = UCOL_LESS;
349ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru            if (i == j) expected = UCOL_EQUAL;
350ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru            if (i >  j) expected = UCOL_GREATER;
351ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru            doTest(myCollation, testAcute[i], testAcute[j], expected );
352ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        }
353ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    }
354ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queruucol_close(myCollation);
355ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru}
356ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
357ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#endif /* #if !UCONFIG_NO_COLLATION */
358