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