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