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 34CollationFinnishTest::CollationFinnishTest() 35: myCollation(0) 36{ 37 UErrorCode status = U_ZERO_ERROR; 38 myCollation = Collator::createInstance(Locale("fi", "FI", "", "collation=standard"),status); 39} 40 41CollationFinnishTest::~CollationFinnishTest() 42{ 43 delete myCollation; 44} 45 46const 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 54const 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 62const 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 71void 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} 79void 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 88void 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