1*0e209d39SAndroid Build Coastguard Worker // © 2016 and later: Unicode, Inc. and others.
2*0e209d39SAndroid Build Coastguard Worker // License & terms of use: http://www.unicode.org/copyright.html
3*0e209d39SAndroid Build Coastguard Worker /********************************************************************
4*0e209d39SAndroid Build Coastguard Worker * COPYRIGHT:
5*0e209d39SAndroid Build Coastguard Worker * Copyright (c) 1997-2009, International Business Machines Corporation and
6*0e209d39SAndroid Build Coastguard Worker * others. All Rights Reserved.
7*0e209d39SAndroid Build Coastguard Worker ********************************************************************/
8*0e209d39SAndroid Build Coastguard Worker
9*0e209d39SAndroid Build Coastguard Worker #include "unicode/unistr.h"
10*0e209d39SAndroid Build Coastguard Worker
11*0e209d39SAndroid Build Coastguard Worker #if !UCONFIG_NO_COLLATION
12*0e209d39SAndroid Build Coastguard Worker
13*0e209d39SAndroid Build Coastguard Worker #include "unicode/tstdtmod.h"
14*0e209d39SAndroid Build Coastguard Worker #include "unicode/coll.h"
15*0e209d39SAndroid Build Coastguard Worker #include "unicode/tblcoll.h"
16*0e209d39SAndroid Build Coastguard Worker #include "unicode/sortkey.h"
17*0e209d39SAndroid Build Coastguard Worker #include "trcoll.h"
18*0e209d39SAndroid Build Coastguard Worker #include "sfwdchit.h"
19*0e209d39SAndroid Build Coastguard Worker
CollationTurkishTest()20*0e209d39SAndroid Build Coastguard Worker CollationTurkishTest::CollationTurkishTest()
21*0e209d39SAndroid Build Coastguard Worker : myCollation(nullptr)
22*0e209d39SAndroid Build Coastguard Worker {
23*0e209d39SAndroid Build Coastguard Worker UErrorCode status = U_ZERO_ERROR;
24*0e209d39SAndroid Build Coastguard Worker myCollation = Collator::createInstance(Locale("tr", "", ""),status);
25*0e209d39SAndroid Build Coastguard Worker }
26*0e209d39SAndroid Build Coastguard Worker
~CollationTurkishTest()27*0e209d39SAndroid Build Coastguard Worker CollationTurkishTest::~CollationTurkishTest()
28*0e209d39SAndroid Build Coastguard Worker {
29*0e209d39SAndroid Build Coastguard Worker delete myCollation;
30*0e209d39SAndroid Build Coastguard Worker }
31*0e209d39SAndroid Build Coastguard Worker
32*0e209d39SAndroid Build Coastguard Worker const char16_t CollationTurkishTest::testSourceCases[][CollationTurkishTest::MAX_TOKEN_LEN] = {
33*0e209d39SAndroid Build Coastguard Worker {0x73, 0x0327, 0},
34*0e209d39SAndroid Build Coastguard Worker {0x76, 0x00E4, 0x74, 0},
35*0e209d39SAndroid Build Coastguard Worker {0x6f, 0x6c, 0x64, 0},
36*0e209d39SAndroid Build Coastguard Worker {0x00FC, 0x6f, 0x69, 0x64, 0},
37*0e209d39SAndroid Build Coastguard Worker {0x68, 0x011E, 0x61, 0x6c, 0x74, 0},
38*0e209d39SAndroid Build Coastguard Worker {0x73, 0x74, 0x72, 0x65, 0x73, 0x015E, 0},
39*0e209d39SAndroid Build Coastguard Worker {0x76, 0x6f, 0x0131, 0x64, 0},
40*0e209d39SAndroid Build Coastguard Worker {0x69, 0x64, 0x65, 0x61, 0},
41*0e209d39SAndroid Build Coastguard Worker {0x00FC, 0x6f, 0x69, 0x64, 0},
42*0e209d39SAndroid Build Coastguard Worker {0x76, 0x6f, 0x0131, 0x64, 0},
43*0e209d39SAndroid Build Coastguard Worker {0x69, 0x64, 0x65, 0x61, 0}
44*0e209d39SAndroid Build Coastguard Worker };
45*0e209d39SAndroid Build Coastguard Worker
46*0e209d39SAndroid Build Coastguard Worker const char16_t CollationTurkishTest::testTargetCases[][CollationTurkishTest::MAX_TOKEN_LEN] = {
47*0e209d39SAndroid Build Coastguard Worker {0x75, 0x0308, 0},
48*0e209d39SAndroid Build Coastguard Worker {0x76, 0x62, 0x74, 0},
49*0e209d39SAndroid Build Coastguard Worker {0x00D6, 0x61, 0x79, 0},
50*0e209d39SAndroid Build Coastguard Worker {0x76, 0x6f, 0x69, 0x64, 0},
51*0e209d39SAndroid Build Coastguard Worker {0x68, 0x61, 0x6c, 0x74, 0},
52*0e209d39SAndroid Build Coastguard Worker {0x015E, 0x74, 0x72, 0x65, 0x015E, 0x73, 0},
53*0e209d39SAndroid Build Coastguard Worker {0x76, 0x6f, 0x69, 0x64, 0},
54*0e209d39SAndroid Build Coastguard Worker {0x49, 0x64, 0x65, 0x61, 0},
55*0e209d39SAndroid Build Coastguard Worker {0x76, 0x6f, 0x69, 0x64, 0},
56*0e209d39SAndroid Build Coastguard Worker {0x76, 0x6f, 0x69, 0x64, 0},
57*0e209d39SAndroid Build Coastguard Worker {0x49, 0x64, 0x65, 0x61, 0}
58*0e209d39SAndroid Build Coastguard Worker };
59*0e209d39SAndroid Build Coastguard Worker
60*0e209d39SAndroid Build Coastguard Worker const Collator::EComparisonResult CollationTurkishTest::results[] = {
61*0e209d39SAndroid Build Coastguard Worker Collator::LESS,
62*0e209d39SAndroid Build Coastguard Worker Collator::LESS,
63*0e209d39SAndroid Build Coastguard Worker Collator::LESS,
64*0e209d39SAndroid Build Coastguard Worker Collator::LESS,
65*0e209d39SAndroid Build Coastguard Worker Collator::GREATER,
66*0e209d39SAndroid Build Coastguard Worker Collator::LESS,
67*0e209d39SAndroid Build Coastguard Worker Collator::LESS,
68*0e209d39SAndroid Build Coastguard Worker Collator::GREATER,
69*0e209d39SAndroid Build Coastguard Worker // test priamry > 8
70*0e209d39SAndroid Build Coastguard Worker Collator::LESS,
71*0e209d39SAndroid Build Coastguard Worker Collator::LESS,
72*0e209d39SAndroid Build Coastguard Worker Collator::GREATER
73*0e209d39SAndroid Build Coastguard Worker };
74*0e209d39SAndroid Build Coastguard Worker
TestTertiary()75*0e209d39SAndroid Build Coastguard Worker void CollationTurkishTest::TestTertiary(/* char* par */)
76*0e209d39SAndroid Build Coastguard Worker {
77*0e209d39SAndroid Build Coastguard Worker int32_t i = 0;
78*0e209d39SAndroid Build Coastguard Worker myCollation->setStrength(Collator::TERTIARY);
79*0e209d39SAndroid Build Coastguard Worker for (i = 0; i < 8 ; i++) {
80*0e209d39SAndroid Build Coastguard Worker doTest(myCollation, testSourceCases[i], testTargetCases[i], results[i]);
81*0e209d39SAndroid Build Coastguard Worker }
82*0e209d39SAndroid Build Coastguard Worker }
TestPrimary()83*0e209d39SAndroid Build Coastguard Worker void CollationTurkishTest::TestPrimary(/* char* par */)
84*0e209d39SAndroid Build Coastguard Worker {
85*0e209d39SAndroid Build Coastguard Worker int32_t i;
86*0e209d39SAndroid Build Coastguard Worker myCollation->setStrength(Collator::PRIMARY);
87*0e209d39SAndroid Build Coastguard Worker for (i = 8; i < 11; i++) {
88*0e209d39SAndroid Build Coastguard Worker doTest(myCollation, testSourceCases[i], testTargetCases[i], results[i]);
89*0e209d39SAndroid Build Coastguard Worker }
90*0e209d39SAndroid Build Coastguard Worker }
91*0e209d39SAndroid Build Coastguard Worker
runIndexedTest(int32_t index,UBool exec,const char * & name,char *)92*0e209d39SAndroid Build Coastguard Worker void CollationTurkishTest::runIndexedTest( int32_t index, UBool exec, const char* &name, char* /*par*/ )
93*0e209d39SAndroid Build Coastguard Worker {
94*0e209d39SAndroid Build Coastguard Worker if (exec) logln("TestSuite CollationTurkishTest: ");
95*0e209d39SAndroid Build Coastguard Worker
96*0e209d39SAndroid Build Coastguard Worker if((!myCollation) && exec) {
97*0e209d39SAndroid Build Coastguard Worker dataerrln(__FILE__ " cannot test - failed to create collator.");
98*0e209d39SAndroid Build Coastguard Worker name = "some test";
99*0e209d39SAndroid Build Coastguard Worker return;
100*0e209d39SAndroid Build Coastguard Worker }
101*0e209d39SAndroid Build Coastguard Worker switch (index) {
102*0e209d39SAndroid Build Coastguard Worker case 0: name = "TestPrimary"; if (exec) TestPrimary(/* par */); break;
103*0e209d39SAndroid Build Coastguard Worker case 1: name = "TestTertiary"; if (exec) TestTertiary(/* par */); break;
104*0e209d39SAndroid Build Coastguard Worker default: name = ""; break;
105*0e209d39SAndroid Build Coastguard Worker }
106*0e209d39SAndroid Build Coastguard Worker }
107*0e209d39SAndroid Build Coastguard Worker
108*0e209d39SAndroid Build Coastguard Worker #endif /* #if !UCONFIG_NO_COLLATION */
109