diff -r 000000000000 -r bde4ae8d615e os/graphics/graphicsdeviceinterface/gdi/tgdi/TBiDiDefect.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/os/graphics/graphicsdeviceinterface/gdi/tgdi/TBiDiDefect.cpp Fri Jun 15 03:10:57 2012 +0200 @@ -0,0 +1,702 @@ +// Copyright (c) 2003-2009 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 "TGraphicsContext.h" +#include "TBiDiDefect.h" + +class CTBiDiDefect : public CTGraphicsBase + { + +public: + CTBiDiDefect(CTestStep* aStep); + ~CTBiDiDefect(); + +protected: +//from CTGraphicsStep + virtual void RunTestCaseL(TInt aCurTestCase); + +private: + void CreateTestGraphicsContextL(); + + void INC016328L(const TDesC& aTestText); + void INC016665L(); + void INC017825L(); + void INC017974L(); + void INC017991L(); + void DEF021227(); + void INC023337(); + void INC023917(); + void DEF037928(); + void DEF021347L(); + void INC037549L(); + void INC042422L(); + void DEF059214L(); + + void TestDEF021347L(TUint16 aControlCharacter); + void TestDEF043720L(); + + void TestPDEF117110L(); + +private: + TBidirectionalState::TRunInfo* iRunInfoArray; + CTestFont* iTestFont; + TBidiText* iBidiText; + CTestGraphicsDevice* iTestGraphicsDevice; + CTestGraphicsContext* iTestGraphicsContext; + }; + + +CTBiDiDefect::CTBiDiDefect(CTestStep* aStep) : + CTGraphicsBase(aStep), + iRunInfoArray(NULL), + iTestFont(NULL), + iBidiText(NULL), + iTestGraphicsDevice(NULL), + iTestGraphicsContext(NULL) + { + } + +CTBiDiDefect::~CTBiDiDefect() + { + delete iTestGraphicsContext; + delete iTestGraphicsDevice; + delete iBidiText; + delete iTestFont; + delete [] iRunInfoArray; + } + +void CTBiDiDefect::RunTestCaseL(TInt aCurTestCase) + { + ((CTBiDiDefectStep*)iStep)->SetTestStepID(KUnknownSYMTestCaseIDName); + switch(aCurTestCase) + { + case 1: + { +/** + @SYMTestCaseID GRAPHICS-GDI-BiDiDefect-0001 +*/ + ((CTBiDiDefectStep*)iStep)->SetTestStepID(_L("GRAPHICS-GDI-BiDiDefect-0001")); + TBuf<32> testText(_L(".Test")); + INFO_PRINTF1(_L("INC016328")); + INC016328L(testText); + } + break; + case 2: +/** + @SYMTestCaseID GRAPHICS-GDI-BiDiDefect-0002 +*/ + ((CTBiDiDefectStep*)iStep)->SetTestStepID(_L("GRAPHICS-GDI-BiDiDefect-0002")); + INFO_PRINTF1(_L("INC016665")); + INC016665L(); + break; + case 3: +/** + @SYMTestCaseID GRAPHICS-GDI-BiDiDefect-0003 +*/ + ((CTBiDiDefectStep*)iStep)->SetTestStepID(_L("GRAPHICS-GDI-BiDiDefect-0003")); + INFO_PRINTF1(_L("INC017825")); + INC017825L(); + break; + case 4: +/** + @SYMTestCaseID GRAPHICS-GDI-BiDiDefect-0004 +*/ + ((CTBiDiDefectStep*)iStep)->SetTestStepID(_L("GRAPHICS-GDI-BiDiDefect-0004")); + INFO_PRINTF1(_L("INC017974")); + INC017974L(); + break; + case 5: +/** + @SYMTestCaseID GRAPHICS-GDI-BiDiDefect-0005 +*/ + ((CTBiDiDefectStep*)iStep)->SetTestStepID(_L("GRAPHICS-GDI-BiDiDefect-0005")); + INFO_PRINTF1(_L("INC017991")); + INC017991L(); + break; + case 6: +/** + @SYMTestCaseID GRAPHICS-GDI-BiDiDefect-0006 +*/ + ((CTBiDiDefectStep*)iStep)->SetTestStepID(_L("GRAPHICS-GDI-BiDiDefect-0006")); + INFO_PRINTF1(_L("DEF021227")); + DEF021227(); + break; + case 7: +/** + @SYMTestCaseID GRAPHICS-GDI-BiDiDefect-0007 +*/ + ((CTBiDiDefectStep*)iStep)->SetTestStepID(_L("GRAPHICS-GDI-BiDiDefect-0007")); + INFO_PRINTF1(_L("DEF021347")); + DEF021347L(); + break; + case 8: +/** + @SYMTestCaseID GRAPHICS-GDI-BiDiDefect-0008 +*/ + ((CTBiDiDefectStep*)iStep)->SetTestStepID(_L("GRAPHICS-GDI-BiDiDefect-0008")); + INFO_PRINTF1(_L("INC023337")); + INC023337(); + break; + case 9: +/** + @SYMTestCaseID GRAPHICS-GDI-BiDiDefect-0009 +*/ + ((CTBiDiDefectStep*)iStep)->SetTestStepID(_L("GRAPHICS-GDI-BiDiDefect-0009")); + INFO_PRINTF1(_L("INC023917")); + INC023917(); + break; + case 10: +/** + @SYMTestCaseID GRAPHICS-GDI-BiDiDefect-0010 +*/ + ((CTBiDiDefectStep*)iStep)->SetTestStepID(_L("GRAPHICS-GDI-BiDiDefect-0010")); + INFO_PRINTF1(_L("DEF037928")); + DEF037928(); + break; + case 11: +/** + @SYMTestCaseID GRAPHICS-GDI-BiDiDefect-0011 +*/ + //INC037549 TBidiText crashes if appear at the end of the text + ((CTBiDiDefectStep*)iStep)->SetTestStepID(_L("GRAPHICS-GDI-BiDiDefect-0011")); + INFO_PRINTF1(_L("INC037549L")); + INC037549L(); + break; + case 12: +/** + @SYMTestCaseID GRAPHICS-GDI-BiDiDefect-0012 +*/ + //INC042422 when calculated length in BidiCompact.cpp TRunInfoCompact::Reorder < 0 + ((CTBiDiDefectStep*)iStep)->SetTestStepID(_L("GRAPHICS-GDI-BiDiDefect-0012")); + INFO_PRINTF1(_L("INC042422L")); + INC042422L(); + break; + case 13: +/** + @SYMTestCaseID GRAPHICS-GDI-BiDiDefect-0013 +*/ + ((CTBiDiDefectStep*)iStep)->SetTestStepID(_L("GRAPHICS-GDI-BiDiDefect-0013")); + INFO_PRINTF1(_L("DEF043720")); + TestDEF043720L(); + break; + case 14: +/** + @SYMTestCaseID GRAPHICS-GDI-BiDiDefect-0014 +*/ + ((CTBiDiDefectStep*)iStep)->SetTestStepID(_L("GRAPHICS-GDI-BiDiDefect-0014")); + INFO_PRINTF1(_L("DEF059214: Erroneous caret cursor movements")); + DEF059214L(); + break; + case 15: +/** + @SYMTestCaseID GRAPHICS-GDI-BiDiDefect-0015 +*/ + ((CTBiDiDefectStep*)iStep)->SetTestStepID(_L("GRAPHICS-GDI-BiDiDefect-0015")); + INFO_PRINTF1(_L("PDEF117110")); + TestPDEF117110L(); + break; + case 16: + ((CTBiDiDefectStep*)iStep)->SetTestStepID(KNotATestSYMTestCaseIDName); + ((CTBiDiDefectStep*)iStep)->CloseTMSGraphicsStep(); + TestComplete(); + break; + } + ((CTBiDiDefectStep*)iStep)->RecordTestResultL(); + } + +void CTBiDiDefect::CreateTestGraphicsContextL() + { + delete iTestGraphicsContext; + iTestGraphicsContext = NULL; + delete iTestGraphicsDevice; + iTestGraphicsDevice = NULL; + + TSize windowSize(400, 400); + iTestGraphicsDevice = CTestGraphicsDevice::NewL(windowSize); + CGraphicsContext* tContext = NULL; + TEST(iTestGraphicsDevice->CreateContext(tContext) == KErrNone); + iTestGraphicsContext = static_cast(tContext); + } + +//TBidiText crashes if the first character of the text is '.'. +void CTBiDiDefect::INC016328L(const TDesC& aTestText) + { + TInt arraySize = TBidirectionalState::GenerateBdRunArray(aTestText.Ptr(), aTestText.Length(), 0, 0); + iRunInfoArray = new (ELeave) TBidirectionalState::TRunInfo[arraySize]; + TBidirectionalState::GenerateBdRunArray(aTestText.Ptr(), aTestText.Length(), iRunInfoArray, arraySize); + TBidirectionalState state; + state.ReorderLine(iRunInfoArray, arraySize, ETrue, ETrue, EFalse, TChar::EOtherNeutral, TChar::EOtherNeutral); + TEST(iRunInfoArray->iLength > 0); + } + +//Truncation after space character in Bidirectional text classes. +//Actually it doesn't prove missing space character but proves +//truncation at the middle of "text" word - yet another defect. +void CTBiDiDefect::INC016665L() + { + iTestFont = new (ELeave) CTestFont; + iBidiText = TBidiText::NewL(_L("Truncated text"), 1); + iBidiText->WrapText(110, *iTestFont, NULL);//"Truncated " and "text" + TEST(iBidiText->DisplayText().Length() == 10); + TEST(iBidiText->DisplayText()[9] == 0x2026); + delete (iBidiText); + + iBidiText = TBidiText::NewL(_L("Truncated text"), 1); + iBidiText->WrapText(110, *iTestFont, NULL);//"Truncated " and "text" + TEST(iBidiText->DisplayText().Length() == 10); + TEST(iBidiText->DisplayText()[9] == 0x2026); + } + +//TBidiText crashes with length 0 descriptor. +void CTBiDiDefect::INC017825L() + { + delete iTestGraphicsContext; + iTestGraphicsContext = NULL; + CreateTestGraphicsContextL(); + + delete iTestFont; + iTestFont = NULL; + iTestFont = new (ELeave) CTestFont; + + delete iBidiText; + iBidiText = NULL; + iBidiText = TBidiText::NewL(KNullDesC(), 1); + iBidiText->WrapText(100, *iTestFont, NULL); + + iBidiText->DrawText(*iTestGraphicsContext, TPoint(0, 20), 20, CGraphicsContext::ERight); + } + +//BidiText does not show 0x062A character correctly if it is a first character. +void CTBiDiDefect::INC017974L() + { + _LIT(KTextWithLatinLettersFirstArabicLetter, "\x062A abcdef"); + + delete iTestFont; + iTestFont = NULL; + iTestFont = new (ELeave) CTestFont; + + delete iBidiText; + iBidiText = NULL; + iBidiText = TBidiText::NewL(KTextWithLatinLettersFirstArabicLetter, 1); + iBidiText->WrapText(100, *iTestFont, NULL); + const TText* text = iBidiText->DisplayText().Ptr(); + TEST(text[7] == 0x062A);//the arabic character should be the first at the end. + } + +//TBidiText::DrawText draws out of the area if alignment is right. +void CTBiDiDefect::INC017991L() + { + delete iTestGraphicsContext; + iTestGraphicsContext = NULL; + CreateTestGraphicsContextL(); + + _LIT(KTextWithLatinLetters, "abc def ghijk lmnop qrstuvw xyz 12.34."); + const TInt KTextWidth = 200; + + delete iTestFont; + iTestFont = NULL; + iTestFont = new (ELeave) CTestFont; + + delete iBidiText; + iBidiText = NULL; + iBidiText = TBidiText::NewL(KTextWithLatinLetters, 2); + iBidiText->WrapText(KTextWidth, *iTestFont, NULL); + + iBidiText->DrawText(*iTestGraphicsContext, TPoint(0, 20), 20, CGraphicsContext::ERight); + const TTestGCDisplayLine& line1 = iTestGraphicsContext->DisplayLine(0); + const TDesC& text1 = line1.iLineData; + TInt width1 = iTestFont->TextWidthInPixels(text1); + TEST((width1 + line1.iLinePos.iX) <= KTextWidth); + const TTestGCDisplayLine& line2 = iTestGraphicsContext->DisplayLine(1); + const TDesC& text2 = line2.iLineData; + TInt width2 = iTestFont->TextWidthInPixels(text2); + TEST((width2 + line2.iLinePos.iX) <= KTextWidth); + } + +//TBidiLogicalToVisual seems to lose characters. +void CTBiDiDefect::DEF021227() + { + _LIT(KTestText, "Waitnote + D prompt "); +// _LIT(KTestText, "Waitnote H D prompt "); + TBuf<100> visualText; + visualText.Fill(0xCDCD); + TBidirectionalState::TRunInfo runArray[6]; + + TBidiLogicalToVisual bidiConverter(KTestText, EFalse, runArray, + sizeof(runArray)/sizeof(runArray[0])); + bidiConverter.Reorder(); + TDesC des = KTestText; + bidiConverter.GetVisualLine(visualText, 0, des.Length() - 1, 0xFFFF); + TInt len = visualText.Length(); + TEST((des.Length() - 1) == len); + } + +//DrawText should not draw control codes (particularly Bidirectional ones) +void CTBiDiDefect::DEF021347L() + { + TestDEF021347L(0x200C); + TestDEF021347L(0x200D); + TestDEF021347L(0x200E); + TestDEF021347L(0x200F); + TestDEF021347L(0x202A); + TestDEF021347L(0x202B); + TestDEF021347L(0x202C); + TestDEF021347L(0x202D); + TestDEF021347L(0x202E); + // Tested in TGLYPHSEL now following rewrite. + //TestDEF021347L(0xFFFF); + } + +void CTBiDiDefect::TestDEF021347L(TUint16 aControlCharacter) + { + const TInt KTestTextLen = 5; + TBuf<100> testText(KTestTextLen); + testText[0] = 'a'; + testText[1] = 'b'; + testText[2] = aControlCharacter; + testText[3] = 'c'; + testText[4] = 'd'; + + delete iTestFont; + iTestFont = NULL; + iTestFont = new (ELeave) CTestFont; + + CFont::TPositionParam param; + param.iDirection = 0; + param.iFlags = 1; + param.iText.Set(testText); + param.iPosInText = 0; + param.iPen.iX = 0; + param.iPen.iY = 0; + param.iPosInText = 2; //testText[2] = aControlCharacter + TBool r = iTestFont->GetCharacterPosition(param); + + TEST(r && param.iPen.iX == 0 && param.iOutputGlyphs == 0); + } + +//TBidiLogicalToVisual::GetVisualLine() panics when aEnd == 0 +void CTBiDiDefect::INC023337() + { + _LIT(KTestText, ""); + TBuf<100> visualText; + visualText.Fill(0xCDCD); + TBidirectionalState::TRunInfo runArray[6]; + TBidiLogicalToVisual bidiConverter(KTestText, EFalse, runArray, sizeof(runArray)/sizeof(runArray[0])); + bidiConverter.Reorder(); + + TDesC des = KTestText; + const TUint KEmptyChar = TUint(0xFFFF); + //The next statement will panics, if INC023337 is not fixed. + bidiConverter.GetVisualLine(visualText, 0, des.Length(), KEmptyChar); + } + +//TBidiLogicalToVisual indexes over the given text. +void CTBiDiDefect::INC023917() + { + const TInt dest_buf_len = 10; + TBidirectionalState::TRunInfo runInfoArray[dest_buf_len]; + const TInt src_buf_len = 4; + TBuf logical; + logical.Fill(0x0639, src_buf_len); + + _LIT(KArabicWord, "\x0631\x0641\x0636"); + logical = KArabicWord; + + TBidiLogicalToVisual bidiConverter(logical, runInfoArray, sizeof(runInfoArray)/sizeof(runInfoArray[0])); + bidiConverter.Reorder(); + + TBuf visual; + bidiConverter.GetVisualLine(visual, 0, logical.Length(), 0xFFFF); + + TEST(visual[0] == 0x0636); + } + +// DEF037928 - TBidiLogicalToVisual::GetVisualLine does not work correctly for 0 length strings +void CTBiDiDefect::DEF037928() + { + // Zero length string for testing + _LIT(KTestText, ""); + TBuf<100> visualText; + visualText.Fill(0xCDCD); + visualText.SetMax(); + + TBidirectionalState::TRunInfo runArray[6]; + TBidiLogicalToVisual bidiConverter(KTestText, EFalse, runArray, + sizeof(runArray)/sizeof(runArray[0])); + bidiConverter.Reorder(); + + bidiConverter.GetVisualLine(visualText, 0, 1, 0xFFFF); + TEST( visualText.Length() == 0); + } + + +// INC037549 - TBidiText crashes if appear at the end of the text +void CTBiDiDefect::INC037549L() + { + // This crash occured when the final character is + // and following memory location is + // To test this testString has a length of 5, but sPtr has length 4 + _LIT( testString, "123\r\n" ) ; + TBuf<5> string( testString ) ; + TPtrC sPtr( string.Ptr(), 4 ) ; + TBidiText* bText = TBidiText::NewL( sPtr, 1, TBidiText::ELeftToRight ) ; + + delete bText; + } + +// INC042422 - when calculated length in BidiCompact.cpp TRunInfoCompact::Reorder < 0 +// +// This defect causes an extra blank line to be added when text contains \r\n +// This was caused by a miscalculation in Biditext.cpp SizeLineBreak(). +// this test case is modified due to change of TBidiText::DoWrapText for fixing PDEF117110 +void CTBiDiDefect::INC042422L() + { + _LIT( testString, "123\r\n" ) ; + TBidiText* bText = TBidiText::NewL( testString, 1, TBidiText::ELeftToRight ) ; + bText->WrapText(100,*iTestFont,0); + TPtrC text = bText->DisplayText(); + + // The defect caused text to contain an extra blank line + // So the length was 5 ( text contained:1,2,3, 0x2028, 0x2026) + // when the correct value is 4 (text should contain: 1,2,3, 0x2026) + // Note: Due to fix for PDEF117109, the correct value is 3 now (text contains: 1,2,3) + TEST(text.Length() == 3); + TEST(text[0] == '1'); + TEST(text[1] == '2'); + TEST(text[2] == '3'); + + delete bText; + } + +//DEF043720 - Assert fails in TBiDiText wrapping when more than one \n is present in the text +void CTBiDiDefect::TestDEF043720L() + { + delete iTestFont; + iTestFont = NULL; + iTestFont = new (ELeave) CTestFont; + + delete iBidiText; + iBidiText = NULL; + iBidiText = TBidiText::NewL(_L("\n\nAB\n\n\nCD\n"),10); + iBidiText->WrapText(10,*iTestFont,0); + + //After wrapping text should look like "\x2028\x2028A\x2028B\x2028\x2028\x2028C\x2028D" + //where \x2028 is the line separator + TPtrC afterwrap(iBidiText->DisplayText()); + TEST(afterwrap.Length()==11); + TEST(afterwrap[0]==0x2028); + TEST(afterwrap[1]==0x2028); + TEST(afterwrap[3]==0x2028); + TEST(afterwrap[5]==0x2028); + TEST(afterwrap[6]==0x2028); + TEST(afterwrap[7]==0x2028); + TEST(afterwrap[9]==0x2028); + + INFO_PRINTF1(iBidiText->DisplayText()); + + delete iBidiText; + iBidiText = NULL; + delete iTestFont; + iTestFont = NULL; + } + +void CTBiDiDefect::DEF059214L() + { + TBidirectionalState::TRunInfo runs[4]; + TBidirectionalState bs; + TBool ambig; + + // entirely left to right paragraph is not ambiguous + ambig = 3000; + bs.Reset(); + runs[0].iCategory = TChar::ELeftToRight; + runs[0].iStart = 0; + runs[0].iLength = 10; + bs.ReorderLine(runs, 1, ETrue, EFalse, EFalse, TChar::ELeftToRight, + TChar::ELeftToRight, ambig); + + // entirely right to left paragraph is not ambiguous + ambig = 3000; + bs.Reset(); + runs[0].iCategory = TChar::ERightToLeft; + runs[0].iStart = 0; + runs[0].iLength = 10; + bs.ReorderLine(runs, 1, ETrue, EFalse, ETrue, TChar::ERightToLeft, + TChar::ERightToLeft, ambig); + TEST(!ambig); + + // right to left portion within left to right paragraph is ambiguous + ambig = 3000; + bs.Reset(); + runs[0].iCategory = TChar::ERightToLeft; + runs[0].iStart = 0; + runs[0].iLength = 10; + bs.ReorderLine(runs, 1, ETrue, EFalse, EFalse, TChar::ERightToLeft, + TChar::ERightToLeft, ambig); + TEST(ambig && ambig != 3000); + ambig = 3000; + bs.Reset(); + runs[0].iCategory = TChar::ERightToLeft; + runs[0].iStart = 0; + runs[0].iLength = 10; + bs.ReorderLine(runs, 1, ETrue, EFalse, EFalse, TChar::EOtherNeutral, + TChar::ERightToLeft, ambig); + TEST(ambig && ambig != 3000); + + // left to right portion within right to left paragraph is ambiguous + ambig = 3000; + bs.Reset(); + runs[0].iCategory = TChar::ELeftToRight; + runs[0].iStart = 0; + runs[0].iLength = 10; + bs.ReorderLine(runs, 1, ETrue, EFalse, ETrue, TChar::ELeftToRight, + TChar::ELeftToRight, ambig); + TEST(ambig && ambig != 3000); + ambig = 3000; + bs.Reset(); + runs[0].iCategory = TChar::ELeftToRight; + runs[0].iStart = 0; + runs[0].iLength = 10; + bs.ReorderLine(runs, 1, ETrue, EFalse, ETrue, TChar::EOtherNeutral, + TChar::ELeftToRight, ambig); + TEST(ambig && ambig != 3000); + + // right to left following on from left to right paragraph is ambiguous + ambig = 3000; + bs.Reset(); + runs[0].iCategory = TChar::ELeftToRight; + runs[0].iStart = 0; + runs[0].iLength = 10; + bs.ReorderLine(runs, 1, ETrue, EFalse, EFalse, TChar::ERightToLeft, + TChar::ERightToLeft, ambig); + TEST(ambig && ambig != 3000); + ambig = 3000; + bs.Reset(); + runs[0].iCategory = TChar::ELeftToRight; + runs[0].iStart = 0; + runs[0].iLength = 10; + bs.ReorderLine(runs, 1, ETrue, EFalse, EFalse, TChar::EOtherNeutral, + TChar::ERightToLeft, ambig); + TEST(ambig && ambig != 3000); + + // left to right following on from right to left paragraph is ambiguous + ambig = 3000; + bs.Reset(); + runs[0].iCategory = TChar::ERightToLeft; + runs[0].iStart = 0; + runs[0].iLength = 10; + bs.ReorderLine(runs, 1, ETrue, EFalse, ETrue, TChar::ELeftToRight, + TChar::ELeftToRight, ambig); + TEST(ambig && ambig != 3000); + ambig = 3000; + bs.Reset(); + runs[0].iCategory = TChar::ERightToLeft; + runs[0].iStart = 0; + runs[0].iLength = 10; + bs.ReorderLine(runs, 1, ETrue, EFalse, ETrue, TChar::EOtherNeutral, + TChar::ELeftToRight, ambig); + TEST(ambig && ambig != 3000); + } + +void CTBiDiDefect::TestPDEF117110L() + { + TPtrC wrappedText; + TPtrC expectedText; + + delete iTestFont; + iTestFont = new (ELeave) CTestFont; + + delete iBidiText; + iBidiText = TBidiText::NewL(_L("Test Text\n"), 5); + iBidiText->WrapText(KMaxTInt, *iTestFont, NULL, 1); + wrappedText.Set(iBidiText->DisplayText()); + expectedText.Set(_L("Test Text")); + TEST(expectedText.Compare(wrappedText) == 0); + + delete iBidiText; + iBidiText = TBidiText::NewL(_L("Test Text\r"), 5); + iBidiText->WrapText(KMaxTInt, *iTestFont, NULL, 1); + wrappedText.Set(iBidiText->DisplayText()); + expectedText.Set(_L("Test Text")); + TEST(expectedText.Compare(wrappedText) == 0); + + delete iBidiText; + iBidiText = TBidiText::NewL(_L("Test Text\r\n"), 5); + iBidiText->WrapText(KMaxTInt, *iTestFont, NULL, 1); + wrappedText.Set(iBidiText->DisplayText()); + expectedText.Set(_L("Test Text")); + TEST(expectedText.Compare(wrappedText) == 0); + + delete iBidiText; + iBidiText = TBidiText::NewL(_L("Test Text\x2028"), 5); + iBidiText->WrapText(KMaxTInt, *iTestFont, NULL, 1); + wrappedText.Set(iBidiText->DisplayText()); + expectedText.Set(_L("Test Text")); + TEST(expectedText.Compare(wrappedText) == 0); + + delete iBidiText; + iBidiText = TBidiText::NewL(_L("Test Text\n\x2028"), 5); + iBidiText->WrapText(KMaxTInt, *iTestFont, NULL, 2); + wrappedText.Set(iBidiText->DisplayText()); + expectedText.Set(_L("Test Text\x2028")); + TEST(expectedText.Compare(wrappedText) == 0); + + delete iBidiText; + iBidiText = TBidiText::NewL(_L("Test\nText\n"), 5); + iBidiText->WrapText(KMaxTInt, *iTestFont, NULL, 2); + wrappedText.Set(iBidiText->DisplayText()); + expectedText.Set(_L("Test\x2028Text")); + TEST(expectedText.Compare(wrappedText) == 0); + + delete iBidiText; + iBidiText = TBidiText::NewL(_L("Test\nText\n"), 5); + iBidiText->WrapText(KMaxTInt, *iTestFont, NULL, 1); + wrappedText.Set(iBidiText->DisplayText()); + expectedText.Set(_L("Test\x2026")); + TEST(expectedText.Compare(wrappedText) == 0); + + delete iBidiText; + iBidiText = TBidiText::NewL(_L("TestText\n"), 5); + iBidiText->WrapText(45, *iTestFont, NULL, 2); + wrappedText.Set(iBidiText->DisplayText()); + expectedText.Set(_L("Test\x2028Text")); + TEST(expectedText.Compare(wrappedText) == 0); + + delete iBidiText; + iBidiText = TBidiText::NewL(_L("Test Text"), 5); + iBidiText->WrapText(KMaxTInt, *iTestFont, NULL, 1); + wrappedText.Set(iBidiText->DisplayText()); + expectedText.Set(_L("Test Text")); + TEST(expectedText.Compare(wrappedText) == 0); + + delete iBidiText; + iBidiText = NULL; + delete iTestFont; + iTestFont = NULL; + } + +//-------------- +CTBiDiDefectStep::CTBiDiDefectStep() + { + SetTestStepName(KTBiDiDefectStep); + } + +CTGraphicsBase* CTBiDiDefectStep::CreateTestL() + { + return new (ELeave) CTBiDiDefect(this); + }