sl@0: /* sl@0: * Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies). sl@0: * All rights reserved. sl@0: * This component and the accompanying materials are made available sl@0: * under the terms of "Eclipse Public License v1.0" sl@0: * which accompanies this distribution, and is available sl@0: * at the URL "http://www.eclipse.org/legal/epl-v10.html". sl@0: * sl@0: * Initial Contributors: sl@0: * Nokia Corporation - initial contribution. sl@0: * sl@0: * Contributors: sl@0: * sl@0: * Description: sl@0: * sl@0: */ sl@0: sl@0: sl@0: #include sl@0: sl@0: #include sl@0: #include "t_simple8.h" sl@0: /////////////////////////////////////////////////////////////////////////////////////// sl@0: sl@0: #define test(cond) \ sl@0: TEST((cond)); \ sl@0: if (!(cond)) \ sl@0: { \ sl@0: ERR_PRINTF1(_L("ERROR: Test Failed")); \ sl@0: User::Leave(1); \ sl@0: } sl@0: sl@0: /////////////////////////////////////////////////////////////////////////////////////// sl@0: /////////////////////////////////////////////////////////////////////////////////////// sl@0: sl@0: /** sl@0: @SYMTestCaseID SYSLIB-CHARCONV-CT-4002 sl@0: @SYMTestCaseDesc Test conversion of a UTF-8 BOM between Unicode and 8-bit sl@0: encoding. sl@0: @SYMTestPriority Medium sl@0: @SYMTestActions Tests for CnvUtfConverter::ConvertFromUnicodeToUtf8(), sl@0: CnvUtfConverter::ConvertToUnicodeFromUtf8L() function sl@0: @SYMTestExpectedResults Tests must not fail sl@0: @SYMREQ REQ0000 sl@0: */ sl@0: //INC118714L sl@0: void CT_SIMPLE8::TestForUtf8BomL() sl@0: { sl@0: INFO_PRINTF1(_L("@SYMTestCaseID:SYSLIB-CHARCONV-CT-4002 Testing converting to and from UTF-8 BOM.")); sl@0: sl@0: TBuf8<100> generatedUtf8NoGKBWithBom(_L8("\xef\xbb\xbf\x7F\x48\x65\x6c\x6c\x6f\x20\x57\x6f\x72\x6c\x64")); sl@0: sl@0: //convert to unicode and verify BOM converted properly. sl@0: INFO_PRINTF1(_L("BOM, valid UTF-8 to Unicode conversion test.")); sl@0: TBuf16<256> generatedUnicode; sl@0: test(CnvUtfConverter::ConvertToUnicodeFromUtf8(generatedUnicode, generatedUtf8NoGKBWithBom)==0); sl@0: test(generatedUnicode==_L16("\xFEFF\x007fHello World")); sl@0: sl@0: INFO_PRINTF1(_L("BOM, valid Unicode to UTF-8 conversion test.")); sl@0: TBuf8<256> generatedUtf8; sl@0: test(CnvUtfConverter::ConvertFromUnicodeToUtf8(generatedUtf8, generatedUnicode)==0); sl@0: test(generatedUtf8==generatedUtf8NoGKBWithBom); sl@0: sl@0: } sl@0: sl@0: sl@0: /** sl@0: @SYMTestCaseID SYSLIB-CHARCONV-CT-0563 sl@0: @SYMTestCaseDesc Conversion tests from Unicode to UTF-8 character set sl@0: @SYMTestPriority Medium sl@0: @SYMTestActions Tests for CnvUtfConverter::ConvertFromUnicodeToUtf8(), sl@0: CnvUtfConverter::ConvertToUnicodeFromUtf8L() function sl@0: @SYMTestExpectedResults Test must not fail sl@0: @SYMREQ REQ0000 sl@0: */ sl@0: void CT_SIMPLE8::TestSimple8() sl@0: { sl@0: INFO_PRINTF1(_L(" @SYMTestCaseID:SYSLIB-CHARCONV-CT-0563 Testing simple UTF-8 round trips ")); sl@0: TBuf16<256> originalUnicode; sl@0: TBuf8<256> generatedUtf8; sl@0: TBuf16<256> generatedUnicode; sl@0: // sl@0: INFO_PRINTF1(_L("Empty descriptor")); sl@0: originalUnicode=_L16(""); sl@0: test(CnvUtfConverter::ConvertFromUnicodeToUtf8(generatedUtf8, originalUnicode)==0); sl@0: test(generatedUtf8==_L8("")); sl@0: test(CnvUtfConverter::ConvertToUnicodeFromUtf8(generatedUnicode, generatedUtf8)==0); sl@0: test(generatedUnicode==originalUnicode); sl@0: // Testing the new API sl@0: HBufC8* testbuffer8; sl@0: HBufC* testbuffer; sl@0: testbuffer8= CnvUtfConverter::ConvertFromUnicodeToUtf8L(originalUnicode); sl@0: TPtr8 comparebuffer8 = testbuffer8->Des(); sl@0: test(comparebuffer8==generatedUtf8); sl@0: testbuffer = CnvUtfConverter::ConvertToUnicodeFromUtf8L(generatedUtf8); sl@0: TPtr compareBuffer = testbuffer->Des(); sl@0: test(compareBuffer == originalUnicode); sl@0: delete testbuffer8; sl@0: delete testbuffer; sl@0: sl@0: INFO_PRINTF1(_L("English \"Hello!\"")); sl@0: originalUnicode=_L16("Hello!"); sl@0: test(CnvUtfConverter::ConvertFromUnicodeToUtf8(generatedUtf8, originalUnicode)==0); sl@0: test(generatedUtf8==_L8("Hello!")); sl@0: test(CnvUtfConverter::ConvertToUnicodeFromUtf8(generatedUnicode, generatedUtf8)==0); sl@0: test(generatedUnicode==originalUnicode); sl@0: // Testing the new API sl@0: testbuffer8= CnvUtfConverter::ConvertFromUnicodeToUtf8L(originalUnicode); sl@0: comparebuffer8.Set(testbuffer8->Des()); sl@0: test(comparebuffer8==generatedUtf8); sl@0: testbuffer = CnvUtfConverter::ConvertToUnicodeFromUtf8L(generatedUtf8); sl@0: compareBuffer.Set(testbuffer->Des()); sl@0: test(compareBuffer == originalUnicode); sl@0: delete testbuffer8; sl@0: delete testbuffer; sl@0: sl@0: INFO_PRINTF1(_L("Russian \"Hello!\"")); sl@0: originalUnicode.Format(_L16("%c%c%c%c%c%c%c%c%c%c%c%c%c"), 0x0417, 0x0434, 0x0440, 0x0430, 0x0432, 0x0441, 0x0442, 0x0432, 0x0443, 0x0439, 0x0442, 0x0435, 0x0021); sl@0: test(CnvUtfConverter::ConvertFromUnicodeToUtf8(generatedUtf8, originalUnicode)==0); sl@0: test(generatedUtf8==_L8("\xd0\x97\xd0\xb4\xd1\x80\xd0\xb0\xd0\xb2\xd1\x81\xd1\x82\xd0\xb2\xd1\x83\xd0\xb9\xd1\x82\xd0\xb5\x21")); sl@0: test(CnvUtfConverter::ConvertToUnicodeFromUtf8(generatedUnicode, generatedUtf8)==0); sl@0: test(generatedUnicode==originalUnicode); sl@0: // Testing the new API sl@0: testbuffer8= CnvUtfConverter::ConvertFromUnicodeToUtf8L(originalUnicode); sl@0: comparebuffer8.Set(testbuffer8->Des()); sl@0: test(comparebuffer8==generatedUtf8); sl@0: testbuffer = CnvUtfConverter::ConvertToUnicodeFromUtf8L(generatedUtf8); sl@0: compareBuffer.Set(testbuffer->Des()); sl@0: test(compareBuffer == originalUnicode); sl@0: delete testbuffer8; sl@0: delete testbuffer; sl@0: sl@0: INFO_PRINTF1(_L("Greek \"Hello!\"")); sl@0: originalUnicode.Format(_L16("%c%c%c%c%c%c"), 0x0393, 0x03b1, 0x03c3, 0x03bf, 0x03c5, 0x0021); sl@0: test(CnvUtfConverter::ConvertFromUnicodeToUtf8(generatedUtf8, originalUnicode)==0); sl@0: test(generatedUtf8==_L8("\xce\x93\xce\xb1\xcf\x83\xce\xbf\xcf\x85\x21")); sl@0: test(CnvUtfConverter::ConvertToUnicodeFromUtf8(generatedUnicode, generatedUtf8)==0); sl@0: test(generatedUnicode==originalUnicode); sl@0: // Testing the new API sl@0: testbuffer8= CnvUtfConverter::ConvertFromUnicodeToUtf8L(originalUnicode); sl@0: comparebuffer8.Set(testbuffer8->Des()); sl@0: test(comparebuffer8==generatedUtf8); sl@0: testbuffer = CnvUtfConverter::ConvertToUnicodeFromUtf8L(generatedUtf8); sl@0: compareBuffer.Set(testbuffer->Des()); sl@0: test(compareBuffer == originalUnicode); sl@0: delete testbuffer8; sl@0: delete testbuffer; sl@0: sl@0: INFO_PRINTF1(_L("Chinese \"Hello!\"")); sl@0: originalUnicode.Format(_L16("%c%c%c"), 0x4f60, 0x597d, 0x0021); sl@0: test(CnvUtfConverter::ConvertFromUnicodeToUtf8(generatedUtf8, originalUnicode)==0); sl@0: test(generatedUtf8==_L8("\xe4\xbd\xa0\xe5\xa5\xbd\x21")); sl@0: test(CnvUtfConverter::ConvertToUnicodeFromUtf8(generatedUnicode, generatedUtf8)==0); sl@0: test(generatedUnicode==originalUnicode); sl@0: // Testing the new API sl@0: testbuffer8= CnvUtfConverter::ConvertFromUnicodeToUtf8L(originalUnicode); sl@0: comparebuffer8.Set(testbuffer8->Des()); sl@0: test(comparebuffer8==generatedUtf8); sl@0: testbuffer = CnvUtfConverter::ConvertToUnicodeFromUtf8L(generatedUtf8); sl@0: compareBuffer.Set(testbuffer->Des()); sl@0: test(compareBuffer == originalUnicode); sl@0: delete testbuffer8; sl@0: delete testbuffer; sl@0: sl@0: INFO_PRINTF1(_L("Japanese \"Hello!\"")); sl@0: originalUnicode.Format(_L16("%c%c%c%c"), 0x4eca, 0x65e5, 0x306f, 0x0021); sl@0: test(CnvUtfConverter::ConvertFromUnicodeToUtf8(generatedUtf8, originalUnicode)==0); sl@0: test(generatedUtf8==_L8("\xe4\xbb\x8a\xe6\x97\xa5\xe3\x81\xaf\x21")); sl@0: test(CnvUtfConverter::ConvertToUnicodeFromUtf8(generatedUnicode, generatedUtf8)==0); sl@0: test(generatedUnicode==originalUnicode); sl@0: // Testing the new API sl@0: testbuffer8= CnvUtfConverter::ConvertFromUnicodeToUtf8L(originalUnicode); sl@0: comparebuffer8.Set(testbuffer8->Des()); sl@0: test(comparebuffer8==generatedUtf8); sl@0: testbuffer = CnvUtfConverter::ConvertToUnicodeFromUtf8L(generatedUtf8); sl@0: compareBuffer.Set(testbuffer->Des()); sl@0: test(compareBuffer == originalUnicode); sl@0: delete testbuffer8; sl@0: delete testbuffer; sl@0: sl@0: sl@0: } sl@0: sl@0: CT_SIMPLE8::CT_SIMPLE8() sl@0: { sl@0: SetTestStepName(KTestStep_T_SIMPLE8); sl@0: } sl@0: sl@0: TVerdict CT_SIMPLE8::doTestStepL() sl@0: { sl@0: SetTestStepResult(EFail); sl@0: sl@0: __UHEAP_MARK; sl@0: sl@0: TRAPD(error1, TestSimple8()); sl@0: TRAPD(error2, TestForUtf8BomL()); sl@0: sl@0: sl@0: __UHEAP_MARKEND; sl@0: sl@0: if(error1 == KErrNone && error2 == KErrNone) sl@0: { sl@0: SetTestStepResult(EPass); sl@0: } sl@0: sl@0: return TestStepResult(); sl@0: } sl@0: