diff -r 000000000000 -r 1fb32624e06b charconvfw/Charconv/ongoing/test/source/utf/TCOMP8.CPP --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/charconvfw/Charconv/ongoing/test/source/utf/TCOMP8.CPP Tue Feb 02 02:02:46 2010 +0200 @@ -0,0 +1,115 @@ +/* +* Copyright (c) 1997-2005 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* +*/ + + + + + + + + +#include +#include +#include +#include + +/////////////////////////////////////////////////////////////////////////////////////// + +RTest TheTest(_L("TComp8")); + +/////////////////////////////////////////////////////////////////////////////////////// +/////////////////////////////////////////////////////////////////////////////////////// +//Tests macroses and functions. +static void Check(TInt aValue, TInt aLine) + { + if(!aValue) + { + TheTest(EFalse, aLine); + } + } +#define TEST(arg) ::Check((arg), __LINE__) + +/////////////////////////////////////////////////////////////////////////////////////// +/////////////////////////////////////////////////////////////////////////////////////// + +enum TPanic + { + EPanicNoFreeSpaceAtEndOfBuffer1=1, + EPanicNoFreeSpaceAtEndOfBuffer2 + }; + +LOCAL_C void Panic(TPanic aPanic) + { + User::Panic(_L("TCOMP8"), aPanic); + } +/** +@SYMTestCaseID SYSLIB-CHARCONV-CT-0566 +@SYMTestCaseDesc Comparing behaviour with the Unicode CD-ROM UTF-8 sample code +@SYMTestPriority Medium +@SYMTestActions Tests for CnvUtfConverter::ConvertToUnicodeFromUtf8() function +@SYMTestExpectedResults Test must not fail +@SYMREQ REQ0000 +*/ +GLDEF_C TInt E32Main() + { + TheTest.Start(_L("Comparing behaviour with the Unicode CD-ROM UTF-8 sample code")); + TDes16* originalUnicode=new TBuf16<512>; + TDes8* generatedUtf8=new TBuf8<1024>; + TDes8* otherGeneratedUtf8=new TBuf8<1024>; + TDes16* generatedUnicode=new TBuf16<512>; + TDes16* otherGeneratedUnicode=new TBuf16<512>; + // + *originalUnicode=_L16(""); + 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); + 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); + 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); + 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); + 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); + 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); + 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); + originalUnicode->AppendFormat(_L16("Here are some odd bits and pieces: =+-/*?#~'@!\"$%%^&\\|()[]{}<>_;:,. ")); + TheTest.Next(_L("Round-trips via UTF-8")); + TEST(CnvUtfConverter::ConvertFromUnicodeToUtf8(*generatedUtf8, *originalUnicode)==0); + {__ASSERT_ALWAYS(originalUnicode->Length()MaxLength(), Panic(EPanicNoFreeSpaceAtEndOfBuffer1)); + TUint16* sourceStart=CONST_CAST(TUint16*, originalUnicode->Ptr()); + TUint16* sourceEnd=sourceStart+originalUnicode->Length(); + TUint8* targetStart=CONST_CAST(TUint8*, otherGeneratedUtf8->Ptr()); + TUint8* targetEnd=targetStart+(otherGeneratedUtf8->MaxLength()-1); + TEST(ConvertUTF16toUTF8(&sourceStart, sourceEnd, &targetStart, targetEnd)==ok); + otherGeneratedUtf8->SetLength(targetStart-otherGeneratedUtf8->Ptr());} + TEST(*generatedUtf8==*otherGeneratedUtf8); + TEST(CnvUtfConverter::ConvertToUnicodeFromUtf8(*generatedUnicode, *generatedUtf8)==0); + {__ASSERT_ALWAYS(otherGeneratedUtf8->Length()MaxLength(), Panic(EPanicNoFreeSpaceAtEndOfBuffer2)); + TUint8* sourceStart=CONST_CAST(TUint8*, otherGeneratedUtf8->Ptr()); + TUint8* sourceEnd=sourceStart+otherGeneratedUtf8->Length(); + TUint16* targetStart=CONST_CAST(TUint16*, otherGeneratedUnicode->Ptr()); + TUint16* targetEnd=targetStart+(otherGeneratedUnicode->MaxLength()-1); + TEST(ConvertUTF8toUTF16(&sourceStart, sourceEnd, &targetStart, targetEnd)==ok); + otherGeneratedUnicode->SetLength(targetStart-otherGeneratedUnicode->Ptr());} + TEST(*generatedUnicode==*originalUnicode); + TEST(*generatedUnicode==*otherGeneratedUnicode); + // + delete originalUnicode; + delete generatedUtf8; + delete otherGeneratedUtf8; + delete generatedUnicode; + delete otherGeneratedUnicode; + TheTest.End(); + TheTest.Close(); + return KErrNone; + } +