sl@0
|
1 |
/*
|
sl@0
|
2 |
* Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
|
sl@0
|
3 |
* All rights reserved.
|
sl@0
|
4 |
* This component and the accompanying materials are made available
|
sl@0
|
5 |
* under the terms of "Eclipse Public License v1.0"
|
sl@0
|
6 |
* which accompanies this distribution, and is available
|
sl@0
|
7 |
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
|
sl@0
|
8 |
*
|
sl@0
|
9 |
* Initial Contributors:
|
sl@0
|
10 |
* Nokia Corporation - initial contribution.
|
sl@0
|
11 |
*
|
sl@0
|
12 |
* Contributors:
|
sl@0
|
13 |
*
|
sl@0
|
14 |
* Description:
|
sl@0
|
15 |
*
|
sl@0
|
16 |
*/
|
sl@0
|
17 |
|
sl@0
|
18 |
|
sl@0
|
19 |
#include <e32std.h>
|
sl@0
|
20 |
#include <utf.h>
|
sl@0
|
21 |
#include "utf8.h"
|
sl@0
|
22 |
#include "t_comp8.h"
|
sl@0
|
23 |
///////////////////////////////////////////////////////////////////////////////////////
|
sl@0
|
24 |
|
sl@0
|
25 |
|
sl@0
|
26 |
#define test(cond) \
|
sl@0
|
27 |
TEST((cond)); \
|
sl@0
|
28 |
if (!(cond)) \
|
sl@0
|
29 |
{ \
|
sl@0
|
30 |
ERR_PRINTF1(_L("ERROR: Test Failed")); \
|
sl@0
|
31 |
User::Leave(1); \
|
sl@0
|
32 |
}
|
sl@0
|
33 |
|
sl@0
|
34 |
///////////////////////////////////////////////////////////////////////////////////////
|
sl@0
|
35 |
///////////////////////////////////////////////////////////////////////////////////////
|
sl@0
|
36 |
|
sl@0
|
37 |
enum TPanic
|
sl@0
|
38 |
{
|
sl@0
|
39 |
EPanicNoFreeSpaceAtEndOfBuffer1=1,
|
sl@0
|
40 |
EPanicNoFreeSpaceAtEndOfBuffer2
|
sl@0
|
41 |
};
|
sl@0
|
42 |
|
sl@0
|
43 |
LOCAL_C void Panic(TPanic aPanic)
|
sl@0
|
44 |
{
|
sl@0
|
45 |
User::Panic(_L("TCOMP8"), aPanic);
|
sl@0
|
46 |
}
|
sl@0
|
47 |
/**
|
sl@0
|
48 |
@SYMTestCaseID SYSLIB-CHARCONV-CT-0566
|
sl@0
|
49 |
@SYMTestCaseDesc Comparing behaviour with the Unicode CD-ROM UTF-8 sample code
|
sl@0
|
50 |
@SYMTestPriority Medium
|
sl@0
|
51 |
@SYMTestActions Tests for CnvUtfConverter::ConvertToUnicodeFromUtf8() function
|
sl@0
|
52 |
@SYMTestExpectedResults Test must not fail
|
sl@0
|
53 |
@SYMREQ REQ0000
|
sl@0
|
54 |
*/
|
sl@0
|
55 |
void CT_COMP8::TestCOMP8()
|
sl@0
|
56 |
{
|
sl@0
|
57 |
INFO_PRINTF1(_L(" @SYMTestCaseID:SYSLIB-CHARCONV-CT-0566 Comparing behaviour with the Unicode CD-ROM UTF-8 sample code "));
|
sl@0
|
58 |
TDes16* originalUnicode=new TBuf16<512>;
|
sl@0
|
59 |
TDes8* generatedUtf8=new TBuf8<1024>;
|
sl@0
|
60 |
TDes8* otherGeneratedUtf8=new TBuf8<1024>;
|
sl@0
|
61 |
TDes16* generatedUnicode=new TBuf16<512>;
|
sl@0
|
62 |
TDes16* otherGeneratedUnicode=new TBuf16<512>;
|
sl@0
|
63 |
//
|
sl@0
|
64 |
*originalUnicode=_L16("");
|
sl@0
|
65 |
originalUnicode->AppendFormat(_L16("Here are some European letters: %c%c%c%c%c%c%c%c%c%c. "), 0x0117, 0x010d, 0x00f1, 0x00df, 0x00d8, 0x0142, 0x0151, 0x016f, 0x0131, 0x00c9);
|
sl@0
|
66 |
originalUnicode->AppendFormat(_L16("Here are some Greek letters: %c%c%c%c%c%c%c%c%c%c. "), 0x03a3, 0x03bf, 0x03bc, 0x03b4, 0x03b5, 0x0345, 0x03a9, 0x0392, 0x0395, 0x03a1);
|
sl@0
|
67 |
originalUnicode->AppendFormat(_L16("Here are some Cyrillic letters: %c%c%c%c%c%c%c%c%c%c. "), 0x0437, 0x0430, 0x0440, 0x0435, 0x0438, 0x0306, 0x0411, 0x041e, 0x0423, 0x0416);
|
sl@0
|
68 |
originalUnicode->AppendFormat(_L16("Here are some Georgian letters: %c%c%c%c%c%c%c%c%c%c. "), 0x10da, 0x10e0, 0x10e9, 0x10ef, 0x10d2, 0x10d7, 0x10e2, 0x10d0, 0x10ed, 0x10e8);
|
sl@0
|
69 |
originalUnicode->AppendFormat(_L16("Here are some Japanese kana: %c%c%c%c%c%c%c%c%c%c. "), 0x30a2, 0x30c0, 0x30d5, 0x30b7, 0x30ba, 0x3091, 0x3093, 0x3055, 0x3074, 0x3080);
|
sl@0
|
70 |
originalUnicode->AppendFormat(_L16("Here are some Han characters: %c%c%c%c%c%c%c%c%c%c. "), 0x7f0c, 0x7a92, 0x6d90, 0x6272, 0x5934, 0x5973, 0x55ce, 0x516c, 0x4ec0, 0x4e00);
|
sl@0
|
71 |
originalUnicode->AppendFormat(_L16("Here are some surrogate pairs: %c%c%c%c%c%c%c%c%c%c. "), 0xd800, 0xdc00, 0xdbff, 0xdfff, 0xdb80, 0xdddd, 0xdbff, 0xdcba, 0xdbeb, 0xdeb0);
|
sl@0
|
72 |
originalUnicode->AppendFormat(_L16("Here are some odd bits and pieces: =+-/*?#~'@!\"$%%^&\\|()[]{}<>_;:,. "));
|
sl@0
|
73 |
INFO_PRINTF1(_L("Round-trips via UTF-8"));
|
sl@0
|
74 |
test(CnvUtfConverter::ConvertFromUnicodeToUtf8(*generatedUtf8, *originalUnicode)==0);
|
sl@0
|
75 |
{__ASSERT_ALWAYS(originalUnicode->Length()<originalUnicode->MaxLength(), Panic(EPanicNoFreeSpaceAtEndOfBuffer1));
|
sl@0
|
76 |
TUint16* sourceStart=CONST_CAST(TUint16*, originalUnicode->Ptr());
|
sl@0
|
77 |
TUint16* sourceEnd=sourceStart+originalUnicode->Length();
|
sl@0
|
78 |
TUint8* targetStart=CONST_CAST(TUint8*, otherGeneratedUtf8->Ptr());
|
sl@0
|
79 |
TUint8* targetEnd=targetStart+(otherGeneratedUtf8->MaxLength()-1);
|
sl@0
|
80 |
test(ConvertUTF16toUTF8(&sourceStart, sourceEnd, &targetStart, targetEnd)==ok);
|
sl@0
|
81 |
otherGeneratedUtf8->SetLength(targetStart-otherGeneratedUtf8->Ptr());}
|
sl@0
|
82 |
test(*generatedUtf8==*otherGeneratedUtf8);
|
sl@0
|
83 |
test(CnvUtfConverter::ConvertToUnicodeFromUtf8(*generatedUnicode, *generatedUtf8)==0);
|
sl@0
|
84 |
{__ASSERT_ALWAYS(otherGeneratedUtf8->Length()<otherGeneratedUtf8->MaxLength(), Panic(EPanicNoFreeSpaceAtEndOfBuffer2));
|
sl@0
|
85 |
TUint8* sourceStart=CONST_CAST(TUint8*, otherGeneratedUtf8->Ptr());
|
sl@0
|
86 |
TUint8* sourceEnd=sourceStart+otherGeneratedUtf8->Length();
|
sl@0
|
87 |
TUint16* targetStart=CONST_CAST(TUint16*, otherGeneratedUnicode->Ptr());
|
sl@0
|
88 |
TUint16* targetEnd=targetStart+(otherGeneratedUnicode->MaxLength()-1);
|
sl@0
|
89 |
test(ConvertUTF8toUTF16(&sourceStart, sourceEnd, &targetStart, targetEnd)==ok);
|
sl@0
|
90 |
otherGeneratedUnicode->SetLength(targetStart-otherGeneratedUnicode->Ptr());}
|
sl@0
|
91 |
test(*generatedUnicode==*originalUnicode);
|
sl@0
|
92 |
test(*generatedUnicode==*otherGeneratedUnicode);
|
sl@0
|
93 |
//
|
sl@0
|
94 |
delete originalUnicode;
|
sl@0
|
95 |
delete generatedUtf8;
|
sl@0
|
96 |
delete otherGeneratedUtf8;
|
sl@0
|
97 |
delete generatedUnicode;
|
sl@0
|
98 |
delete otherGeneratedUnicode;
|
sl@0
|
99 |
}
|
sl@0
|
100 |
|
sl@0
|
101 |
|
sl@0
|
102 |
CT_COMP8::CT_COMP8()
|
sl@0
|
103 |
{
|
sl@0
|
104 |
SetTestStepName(KTestStep_T_COMP8);
|
sl@0
|
105 |
}
|
sl@0
|
106 |
|
sl@0
|
107 |
TVerdict CT_COMP8::doTestStepL()
|
sl@0
|
108 |
{
|
sl@0
|
109 |
SetTestStepResult(EFail);
|
sl@0
|
110 |
|
sl@0
|
111 |
__UHEAP_MARK;
|
sl@0
|
112 |
|
sl@0
|
113 |
TRAPD(error1, TestCOMP8());
|
sl@0
|
114 |
|
sl@0
|
115 |
__UHEAP_MARKEND;
|
sl@0
|
116 |
|
sl@0
|
117 |
if(error1 == KErrNone )
|
sl@0
|
118 |
{
|
sl@0
|
119 |
SetTestStepResult(EPass);
|
sl@0
|
120 |
}
|
sl@0
|
121 |
|
sl@0
|
122 |
return TestStepResult();
|
sl@0
|
123 |
}
|
sl@0
|
124 |
|
sl@0
|
125 |
|