1 // © 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
CollationFinnishTest()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
~CollationFinnishTest()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
TestTertiary()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 }
TestPrimary()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
runIndexedTest(int32_t index,UBool exec,const char * & name,char *)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 */
105