Imported Upstream version 58.2
[platform/upstream/icu.git] / source / test / intltest / ficoll.cpp
1 // Copyright (C) 2016 and later: Unicode, Inc. and others.
2 // License & terms of use: http://www.unicode.org/copyright.html
3 /********************************************************************
4  * Copyright (c) 1997-2009,2014, International Business Machines
5  * Corporation and others. All Rights Reserved.
6  ********************************************************************/
7
8 #include "unicode/utypes.h"
9
10 #if !UCONFIG_NO_COLLATION
11
12 #ifndef _COLL
13 #include "unicode/coll.h"
14 #endif
15
16 #ifndef _TBLCOLL
17 #include "unicode/tblcoll.h"
18 #endif
19
20 #ifndef _UNISTR
21 #include "unicode/unistr.h"
22 #endif
23
24 #ifndef _SORTKEY
25 #include "unicode/sortkey.h"
26 #endif
27
28 #ifndef _FICOLL
29 #include "ficoll.h"
30 #endif
31
32 #include "sfwdchit.h"
33
34 CollationFinnishTest::CollationFinnishTest()
35 : myCollation(0)
36 {
37     UErrorCode status = U_ZERO_ERROR;
38     myCollation = Collator::createInstance(Locale("fi", "FI", "", "collation=standard"),status);
39 }
40
41 CollationFinnishTest::~CollationFinnishTest()
42 {
43     delete myCollation;
44 }
45
46 const UChar CollationFinnishTest::testSourceCases[][CollationFinnishTest::MAX_TOKEN_LEN] = {
47     {0x77, 0x61, 0x74, 0},  // "wat"
48     {0x76, 0x61, 0x74, 0},  // "vat"
49     {0x61, 0x00FC, 0x62, 0x65, 0x63, 0x6b, 0},
50     {0x4c, 0x00E5, 0x76, 0x69, 0},
51     {0x77, 0x61, 0x74, 0}   // "wat"
52 };
53
54 const UChar CollationFinnishTest::testTargetCases[][CollationFinnishTest::MAX_TOKEN_LEN] = {
55     {0x76, 0x61, 0x74, 0},  // "vat"
56     {0x77, 0x61, 0x79, 0},
57     {0x61, 0x78, 0x62, 0x65, 0x63, 0x6b, 0},
58     {0x4c, 0x00E4, 0x77, 0x65, 0},
59     {0x76, 0x61, 0x74, 0}   // "vat"
60 };
61
62 const Collator::EComparisonResult CollationFinnishTest::results[] = {
63     Collator::GREATER,
64     Collator::LESS,
65     Collator::GREATER,
66     Collator::LESS,
67     // test primary > 4
68     Collator::GREATER,  // v < w per cldrbug 6615
69 };
70
71 void CollationFinnishTest::TestTertiary(/* char* par */)
72 {
73     int32_t i = 0;
74     myCollation->setStrength(Collator::TERTIARY);
75     for (i = 0; i < 4 ; i++) {
76         doTest(myCollation, testSourceCases[i], testTargetCases[i], results[i]);
77     }
78 }
79 void CollationFinnishTest::TestPrimary(/* char* par */)
80 {
81     int32_t i;
82     myCollation->setStrength(Collator::PRIMARY);
83     for (i = 4; i < 5; i++) {
84         doTest(myCollation, testSourceCases[i], testTargetCases[i], results[i]);
85     }
86 }
87
88 void CollationFinnishTest::runIndexedTest( int32_t index, UBool exec, const char* &name, char* /*par*/ )
89 {
90     if (exec) logln("TestSuite CollationFinnishTest: ");
91
92     if((!myCollation) && exec) {
93       dataerrln(__FILE__ " cannot test - failed to create collator.");
94       name = "some test";
95       return;
96     }
97     switch (index) {
98         case 0: name = "TestPrimary";   if (exec)   TestPrimary(/* par */); break;
99         case 1: name = "TestTertiary";  if (exec)   TestTertiary(/* par */); break;
100         default: name = ""; break;
101     }
102 }
103
104 #endif /* #if !UCONFIG_NO_COLLATION */