--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/textrendering/texthandling/ttext/T_SCANDC.CPP Tue Feb 02 02:02:46 2010 +0200
@@ -0,0 +1,682 @@
+/*
+* Copyright (c) 1997-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 <e32test.h>
+#include <txtetext.h>
+
+#define UNUSED_VAR(a) a = a
+
+LOCAL_D RTest test(_L("SCANNING OF TEXT DOCUMENTS"));
+LOCAL_D CTrapCleanup* TheTrapCleanup;
+
+template<class S,CEditableText::TDocumentStorage D>
+class CTestScan : public CPlainText
+ {
+public:
+ static CTestScan* NewL();
+ void Destruct();
+ void Test1L(); // Tests all operations of the class.
+ void Test2L(); // Test public methods of class.
+ void Test2aL(); // Tests for CountWords
+ void Test2bL(); // Tests for ScanWord
+ void Test2cL(); // Tests for CountParagraphs
+ void Test2dL(); // Tests for ScanParagraph
+ void TestHeapSpace(); // Test for memory leakage
+ void StoreTextL(TBuf<64>&);
+ void DoCountWords(TInt);
+ void DoCountParas(TInt);
+ void DoScanWords(TInt aPos,TUint aFlags,TInt aEndPos,TInt aCharCheck);
+ void DoScanParas(TInt aPos,TUint aFlags,TInt aEndPos,TInt aCharCheck);
+ void InsertL(TInt aPos,const TDesC& aBuf);
+public:
+ CPlainText *iDocument;
+ TInt iUnitCount;
+ TInt iCharsSkipped;
+ TChar iDelimiter;
+ TInt startAvail,endAvail,temp;
+private:
+ CTestScan(); // Default constructor
+ CTestScan(const CTestScan& aCTestScan);
+ CTestScan& operator=(const CTestScan& aCTestScan);
+ };
+
+
+template<class S,CEditableText::TDocumentStorage D>
+GLDEF_C CTestScan<S,D>* CTestScan<S,D>::NewL()
+//
+// constructs a new instance of this class.
+//
+ {
+ CTestScan<S,D>* tmp=new(ELeave) CTestScan<S,D>;
+ tmp->ConstructL(D);
+ return tmp;
+ }
+
+
+template<class S,CEditableText::TDocumentStorage D>
+GLDEF_C CTestScan<S,D>::CTestScan()
+//
+// Default constructor
+//
+ :iDelimiter(EParagraphDelimiter)
+ {
+ TRAPD(ret,iDocument=CPlainText::NewL(D));
+ UNUSED_VAR(ret);
+ }
+
+
+template<class S,CEditableText::TDocumentStorage D>
+void CTestScan<S,D>::Destruct()
+//
+//
+//
+ {
+ delete iDocument;
+ }
+
+
+template<class S,CEditableText::TDocumentStorage D>
+GLDEF_C void CTestScan<S,D>::InsertL(TInt aPos,const TDesC& aBuf)
+//
+ {CPlainText::InsertL(aPos,aBuf);}
+
+
+
+template<class S,CEditableText::TDocumentStorage D>
+GLDEF_C void CTestScan<S,D>::StoreTextL(TBuf<64>& aBuf)
+//
+// Insert from aBuf into document storage at position 0.
+//
+ {
+ TInt length=iDocument->DocumentLength();
+ if (length>0)
+ {
+ iDocument->DeleteL(0,(length));
+ }
+ TPtrC buf(aBuf);
+ iDocument->InsertL(0,buf);
+ iUnitCount=0;
+ }
+
+
+template<class S,CEditableText::TDocumentStorage D>
+GLDEF_C void CTestScan<S,D>::DoCountWords(TInt aCount)
+//
+// Calls CountWords, and checks that number of words
+// counted, matches the known good value 'count'.
+//
+ {
+ iUnitCount=iDocument->WordCount();
+ test(aCount==iUnitCount);
+ }
+
+
+template<class S,CEditableText::TDocumentStorage D>
+GLDEF_C void CTestScan<S,D>::DoCountParas(TInt aCount)
+//
+// Calls CountParagraphs, and checks that number
+// counted, matches the known good value 'count'.
+//
+ {
+ iUnitCount=iDocument->ParagraphCount();
+ test(aCount==iUnitCount);
+ }
+
+
+template<class S,CEditableText::TDocumentStorage D>
+GLDEF_C void CTestScan<S,D>::DoScanWords(TInt aPos,TUint aFlags,TInt aEndPos,TInt aCharCheck)
+//
+// Calls ScanWords and tests results are as expected.
+//
+ {
+ iCharsSkipped=iDocument->ScanWords(aPos,aFlags);
+ test(iCharsSkipped==aCharCheck);
+ test(aPos==aEndPos);
+ iCharsSkipped=0;
+ }
+
+
+template<class S,CEditableText::TDocumentStorage D>
+GLDEF_C void CTestScan<S,D>::DoScanParas(TInt aPos,TUint aFlags,TInt aEndPos,TInt aCharCheck)
+//
+// Calls ScanParas and checks results are as expected.
+//
+ {
+ iCharsSkipped=iDocument->ScanParas(aPos,aFlags);
+ test(iCharsSkipped==aCharCheck);
+ test(aPos==aEndPos);
+ iCharsSkipped=0;
+ }
+
+
+template<class S,CEditableText::TDocumentStorage D>
+GLDEF_C void CTestScan<S,D>::Test1L()
+//
+// Tests all operations of the class.
+//
+ {
+ TBuf<64> temp1;
+ temp1.Append(_L("The world")); // Create a descriptor over some text
+ temp1.Append(iDelimiter);
+ temp1.Append(iDelimiter);
+ temp1.Append(_L("is a"));
+ StoreTextL(temp1);
+ iDocument->WordCount();
+ TInt pos=5;
+ TUint flags=(CPlainText::EScanToUnitStart|CPlainText::EScanJoinDelimiters|CPlainText::EScanStayIfBoundary);
+ ((CTestScan*)iDocument)->ScanWords(pos,flags);
+ TBuf<64> temp2(_L("This is a paragraph"));
+ temp2.Append(iDelimiter);
+ iDocument->DeleteL(0,temp1.Length());
+ StoreTextL(temp2);
+ pos=0;
+ flags=(CPlainText::EScanToUnitStart|CPlainText::EScanJoinDelimiters);
+ ((CTestScan*)iDocument)->ScanParas(pos,flags);
+ iDocument->ParagraphCount();
+ }
+
+template<class S,CEditableText::TDocumentStorage D>
+GLDEF_C void CTestScan<S,D>::Test2aL()
+//
+// Tests the CountWords method with different cases
+//
+ {
+ TBuf<64> temp;
+
+ //test.Start(_L("0 words"));
+ //iDocument->InsertL(0,buf.Ptr(),buf.Size());
+ //DoCountWords(0);
+ // This test has been removed since it is no longer feasible.
+ // The design currently inserts an end of document character
+ // as soon as the document is created, hence, there can not
+ // be 0 words.
+
+ test.Start(_L("0 words, all delimiters"));
+ temp.Append(_L(" "));
+ temp.Append(iDelimiter);
+ temp.Append(_L(" "));
+ StoreTextL(temp);
+ DoCountWords(0);
+
+ test.Next(_L("1 word, no delimiter"));
+ temp.Append(_L("This"));
+ StoreTextL(temp);
+ DoCountWords(1);
+
+ test.Next(_L("1 word, at start, no delimiter"));
+ temp.Delete(0,temp.Size());
+ temp.Append(_L("THIS"));
+ StoreTextL(temp);
+ DoCountWords(1);
+
+ test.Next(_L("1 word, with delimiter"));
+ temp.Append(' ');
+ StoreTextL(temp);
+ DoCountWords(1);
+
+ test.Next(_L("Many words, no delimiter"));
+ temp.Append(_L(" is a wonderful world"));
+ StoreTextL(temp);
+ DoCountWords(5);
+
+ test.Next(_L("Many words with delimiter"));
+ temp.Append(' ');
+ StoreTextL(temp);
+ DoCountWords(5);
+
+ test.End();
+ }
+
+
+template<class S,CEditableText::TDocumentStorage D>
+GLDEF_C void CTestScan<S,D>::Test2bL()
+//
+// Tests the ScanWord method with different flag settings
+//
+ {
+ TBuf<64> buf;
+ buf.Append(_L(" This tEsT TeXT"));
+ StoreTextL(buf);
+
+ iCharsSkipped=iUnitCount=0;
+ test.Start(_L("Forward scan"));
+
+ test.Next(_L("Stay at boundary:to unit start"));
+ TUint flags=(CPlainText::EScanStayIfBoundary | CPlainText::EScanToUnitStart);
+ DoScanWords(8,flags,12,4);
+ DoScanWords(7,flags,7,0);
+ DoScanWords(6,flags,6,0);
+ DoScanWords(5,flags,6,1);
+
+ test.Next(_L("Stay at boundary:to unit end"));
+ flags |= CPlainText::EScanToUnitEnd;
+ flags &=~CPlainText::EScanToUnitStart;
+ DoScanWords(8,flags,11,3);
+ DoScanWords(7,flags,11,4);
+ DoScanWords(6,flags,6,0);
+ DoScanWords(5,flags,5,0);
+
+ test.Next(_L("Stay at boundary:to unit start:join delimiters"));
+ flags=(CPlainText::EScanStayIfBoundary|CPlainText::EScanToUnitStart|CPlainText::EScanJoinDelimiters);
+ DoScanWords(8,flags,13,5);
+ DoScanWords(7,flags,7,0);
+ DoScanWords(6,flags,7,1);
+ DoScanWords(5,flags,7,2);
+
+ test.Next(_L("Stay at boundary:to unit end:join delimiters"));
+ flags |= CPlainText::EScanToUnitEnd;
+ flags &=~CPlainText::EScanToUnitStart;
+ DoScanWords(8,flags,11,3);
+ DoScanWords(7,flags,11,4);
+ DoScanWords(6,flags,11,5);
+ DoScanWords(5,flags,5,0);
+
+ test.Next(_L("To unit start"));
+ flags=CPlainText::EScanToUnitStart;
+ DoScanWords(8,flags,12,4);
+ DoScanWords(7,flags,12,5);
+ DoScanWords(6,flags,7,1);
+ DoScanWords(5,flags,6,1);
+
+ test.Next(_L("To unit end"));
+ flags |= CPlainText::EScanToUnitEnd;
+ flags &=~CPlainText::EScanToUnitStart;
+ DoScanWords(8,flags,11,3);
+ DoScanWords(7,flags,11,4);
+ DoScanWords(6,flags,11,5);
+ DoScanWords(5,flags,6,1);
+
+ test.Next(_L("To unit start:join delimiters"));
+ flags=(CPlainText::EScanToUnitStart|CPlainText::EScanJoinDelimiters);
+ DoScanWords(8,flags,13,5);
+ DoScanWords(7,flags,13,6);
+ DoScanWords(6,flags,7,1);
+ DoScanWords(5,flags,7,2);
+
+ test.Next(_L("To unit end:join delimiters"));
+ flags |= CPlainText::EScanToUnitEnd;
+ flags &=~CPlainText::EScanToUnitStart;
+ DoScanWords(8,flags,11,3);
+ DoScanWords(7,flags,11,4);
+ DoScanWords(6,flags,11,5);
+ DoScanWords(5,flags,11,6);
+
+ test.Next(_L("Backward scan"));
+ test.Next(_L("Stay at boundary:to unit start"));
+ flags=(CPlainText::EScanBackwards|CPlainText::EScanStayIfBoundary|CPlainText::EScanToUnitStart);
+ DoScanWords(9,flags,7,2);
+ DoScanWords(10,flags,7,3);
+ DoScanWords(11,flags,7,4);
+ DoScanWords(12,flags,12,0);
+ DoScanWords(13,flags,13,0);
+
+ test.Next(_L("Stay at boundary:to unit end"));
+ flags |= CPlainText::EScanToUnitEnd;
+ flags &=~CPlainText::EScanToUnitStart;
+ DoScanWords(9,flags,6,3);
+ DoScanWords(10,flags,6,4);
+ DoScanWords(11,flags,11,0);
+ DoScanWords(12,flags,12,0);
+ DoScanWords(13,flags,12,1);
+
+ test.Next(_L("Stay at boundary:to unit start:join delimiters"));
+ flags=CPlainText::EScanBackwards|CPlainText::EScanStayIfBoundary|CPlainText::EScanToUnitStart|CPlainText::EScanJoinDelimiters;
+ DoScanWords(9,flags,7,2);
+ DoScanWords(10,flags,7,3);
+ DoScanWords(11,flags,7,4);
+ DoScanWords(12,flags,7,5);
+ DoScanWords(13,flags,13,0);
+
+ test.Next(_L("Stay at boundary:to unit end:join delimiters"));
+ flags |= CPlainText::EScanToUnitEnd;
+ flags &=~CPlainText::EScanToUnitStart;
+ DoScanWords(9,flags,5,4);
+ DoScanWords(10,flags,5,5);
+ DoScanWords(11,flags,11,0);
+ DoScanWords(12,flags,11,1);
+ DoScanWords(13,flags,11,2);
+
+ test.Next(_L("To unit start"));
+ flags=CPlainText::EScanBackwards|CPlainText::EScanToUnitStart;
+ DoScanWords(9,flags,7,2);
+ DoScanWords(10,flags,7,3);
+ DoScanWords(11,flags,7,4);
+ DoScanWords(12,flags,7,5);
+ DoScanWords(13,flags,12,1);
+
+ test.Next(_L("To unit end"));
+ flags |= CPlainText::EScanToUnitEnd;
+ flags &=~CPlainText::EScanToUnitStart;
+ DoScanWords(9,flags,6,3);
+ DoScanWords(10,flags,6,4);
+ DoScanWords(11,flags,6,5);
+ DoScanWords(12,flags,11,1);
+ DoScanWords(13,flags,12,1);
+
+ test.Next(_L("To unit start:join delimiters"));
+ flags=CPlainText::EScanBackwards|CPlainText::EScanToUnitStart|CPlainText::EScanJoinDelimiters;
+ DoScanWords(9,flags,7,2);
+ DoScanWords(10,flags,7,3);
+ DoScanWords(11,flags,7,4);
+ DoScanWords(12,flags,7,5);
+ DoScanWords(13,flags,7,6);
+
+ test.Next(_L("To unit end:join delimiters"));
+ flags=CPlainText::EScanToUnitEnd|CPlainText::EScanJoinDelimiters|CPlainText::EScanBackwards;
+ DoScanWords(9,flags,5,4);
+ DoScanWords(10,flags,5,5);
+ DoScanWords(11,flags,5,6);
+ DoScanWords(12,flags,11,1);
+ DoScanWords(13,flags,11,2);
+ test.End();
+ }
+
+
+template<class S,CEditableText::TDocumentStorage D>
+GLDEF_C void CTestScan<S,D>::Test2cL()
+//
+// Tests the CountParagraphs method with different cases
+//
+ {
+ TBuf<64> buf;
+
+ //test.Start(_L("0 paras"));
+ //iDocument->InsertL(0,buf.Ptr(),buf.Size());
+ //DoCountParagraphs(0);
+ // This test no longer applies, since documents are created with
+ // an end of document character. ie, The document can not have
+ // 0 words.
+
+ test.Start(_L("Empty text source"));
+// buf.Append(iDelimiter);
+// buf.Append(iDelimiter);
+ StoreTextL(buf);
+ DoCountParas(1);
+
+ test.Next(_L("1 para. no delimiter"));
+ buf.Append(_L("This"));
+ StoreTextL(buf);
+ DoCountParas(1);
+
+ test.Next(_L("1 para. at start, no delimiter"));
+ buf.Delete(0,buf.Size());
+ buf.Append(_L(" THIS "));
+ StoreTextL(buf);
+ DoCountParas(1);
+
+ test.Next(_L("1 para, with delimiter"));
+ buf.Append(iDelimiter);
+ StoreTextL(buf);
+ DoCountParas(2);
+
+ test.Next(_L("2 paras, no delimiter"));
+ buf.Append(' ');
+ StoreTextL(buf);
+ DoCountParas(2);
+
+ test.Next(_L("2 paras with delimiter"));
+ buf.Append(iDelimiter);
+ StoreTextL(buf);
+ DoCountParas(3);
+
+ test.End();
+ }
+
+
+template<class S,CEditableText::TDocumentStorage D>
+GLDEF_C void CTestScan<S,D>::Test2dL()
+//
+// Tests the ScanParagraph method with different flag settings
+//
+ {
+ TBuf<64> buf;
+ buf.Append(_L(" This"));
+ buf.Append(iDelimiter);
+ buf.Append(iDelimiter);
+ buf.Append(_L("tEsT"));
+ buf.Append(iDelimiter);
+ buf.Append(iDelimiter);
+ buf.Append(_L("TeXT"));
+ StoreTextL(buf);
+
+ iCharsSkipped=iUnitCount=0;
+ test.Start(_L("Forward scan"));
+
+ test.Next(_L("Stay at boundary:to unit start"));
+ TUint flags=(CPlainText::EScanStayIfBoundary|CPlainText::EScanToUnitStart);
+ DoScanParas(8,flags,12,4);
+ DoScanParas(7,flags,7,0);
+ DoScanParas(6,flags,6,0);
+ DoScanParas(5,flags,6,1);
+
+ test.Next(_L("Stay at boundary:to unit end"));
+ flags |= CPlainText::EScanToUnitEnd;
+ flags &=~CPlainText::EScanToUnitStart;
+ DoScanParas(8,flags,11,3);
+ DoScanParas(7,flags,11,4);
+ DoScanParas(6,flags,6,0);
+ DoScanParas(5,flags,5,0);
+
+ test.Next(_L("Stay at boundary:to unit start:join delimiters"));
+ flags=(CPlainText::EScanStayIfBoundary | CPlainText::EScanToUnitStart | CPlainText::EScanJoinDelimiters);
+ DoScanParas(8,flags,13,5);
+ DoScanParas(7,flags,7,0);
+ DoScanParas(6,flags,7,1);
+ DoScanParas(5,flags,7,2);
+
+ test.Next(_L("Stay at boundary:to unit end:join delimiters"));
+ flags |= CPlainText::EScanToUnitEnd;
+ flags &=~CPlainText::EScanToUnitStart;
+ DoScanParas(8,flags,11,3);
+ DoScanParas(7,flags,11,4);
+ DoScanParas(6,flags,11,5);
+ DoScanParas(5,flags,5,0);
+
+ test.Next(_L("To unit start"));
+ flags=CPlainText::EScanToUnitStart;
+ DoScanParas(8,flags,12,4);
+ DoScanParas(7,flags,12,5);
+ DoScanParas(6,flags,7,1);
+ DoScanParas(5,flags,6,1);
+
+ test.Next(_L("To unit end"));
+ flags |= CPlainText::EScanToUnitEnd;
+ flags &=~CPlainText::EScanToUnitStart;
+ DoScanParas(8,flags,11,3);
+ DoScanParas(7,flags,11,4);
+ DoScanParas(6,flags,11,5);
+ DoScanParas(5,flags,6,1);
+
+ test.Next(_L("To unit start:join delimiters"));
+ flags=(CPlainText::EScanToUnitStart | CPlainText::EScanJoinDelimiters);
+ DoScanParas(8,flags,13,5);
+ DoScanParas(7,flags,13,6);
+ DoScanParas(6,flags,7,1);
+ DoScanParas(5,flags,7,2);
+
+ test.Next(_L("To unit end:join delimiters"));
+ flags |= CPlainText::EScanToUnitEnd;
+ flags &=~CPlainText::EScanToUnitStart;
+ DoScanParas(8,flags,11,3);
+ DoScanParas(7,flags,11,4);
+ DoScanParas(6,flags,11,5);
+ DoScanParas(5,flags,11,6);
+
+ test.Next(_L("Backward scan"));
+ test.Next(_L("Stay at boundary:to unit start"));
+ flags=(CPlainText::EScanBackwards|CPlainText::EScanStayIfBoundary|CPlainText::EScanToUnitStart);
+ DoScanParas(9,flags,7,2);
+ DoScanParas(10,flags,7,3);
+ DoScanParas(11,flags,7,4);
+ DoScanParas(12,flags,12,0);
+ DoScanParas(13,flags,13,0);
+ DoScanParas(7,flags,7,0);
+ DoScanParas(1,flags,0,1);
+ DoScanParas(5,flags,0,5);
+ DoScanParas(4,flags,0,4);
+ DoScanParas(3,flags,0,3);
+ DoScanParas(2,flags,0,2);
+ DoScanParas(1,flags,0,1);
+ test.Next(_L("Testing at buffer boundaries."));
+ DoScanParas(0,flags,0,0);
+ DoScanParas(16,flags,13,3);
+
+
+ test.Next(_L("Stay at boundary:to unit end"));
+ flags |= CPlainText::EScanToUnitEnd;
+ flags &=~CPlainText::EScanToUnitStart;
+ DoScanParas(9,flags,6,3);
+ DoScanParas(10,flags,6,4);
+ DoScanParas(11,flags,11,0);
+ DoScanParas(12,flags,12,0);
+ DoScanParas(13,flags,12,1);
+
+ test.Next(_L("Stay at boundary:to unit start:join delimiters"));
+ flags=CPlainText::EScanBackwards|CPlainText::EScanStayIfBoundary|CPlainText::EScanToUnitStart|CPlainText::EScanJoinDelimiters;
+ DoScanParas(9,flags,7,2);
+ DoScanParas(10,flags,7,3);
+ DoScanParas(11,flags,7,4);
+ DoScanParas(12,flags,7,5);
+ DoScanParas(13,flags,13,0);
+
+ test.Next(_L("Stay at boundary:to unit end:join delimiters"));
+ flags |= CPlainText::EScanToUnitEnd;
+ flags &=~CPlainText::EScanToUnitStart;
+ DoScanParas(9,flags,5,4);
+ DoScanParas(10,flags,5,5);
+ DoScanParas(11,flags,11,0);
+ DoScanParas(12,flags,11,1);
+ DoScanParas(13,flags,11,2);
+
+ test.Next(_L("To unit start"));
+ flags=CPlainText::EScanBackwards|CPlainText::EScanToUnitStart;
+ DoScanParas(9,flags,7,2);
+ DoScanParas(10,flags,7,3);
+ DoScanParas(11,flags,7,4);
+ DoScanParas(12,flags,7,5);
+ DoScanParas(13,flags,12,1);
+
+ test.Next(_L("To unit end"));
+ flags |= CPlainText::EScanToUnitEnd;
+ flags &=~CPlainText::EScanToUnitStart;
+ DoScanParas(9,flags,6,3);
+ DoScanParas(10,flags,6,4);
+ DoScanParas(11,flags,6,5);
+ DoScanParas(12,flags,11,1);
+ DoScanParas(13,flags,12,1);
+
+ test.Next(_L("To unit start:join delimiters"));
+ flags=CPlainText::EScanBackwards|CPlainText::EScanToUnitStart|CPlainText::EScanJoinDelimiters;
+ DoScanParas(9,flags,7,2);
+ DoScanParas(10,flags,7,3);
+ DoScanParas(11,flags,7,4);
+ DoScanParas(12,flags,7,5);
+ DoScanParas(13,flags,7,6);
+
+ test.Next(_L("To unit end:join delimiters"));
+ flags |= CPlainText::EScanToUnitEnd;
+ flags &=~CPlainText::EScanToUnitStart;
+ DoScanParas(9,flags,5,4);
+ DoScanParas(10,flags,5,5);
+ DoScanParas(11,flags,5,6);
+ DoScanParas(12,flags,11,1);
+ DoScanParas(13,flags,11,2);
+
+ test.End();
+ }
+
+
+template<class S,CEditableText::TDocumentStorage D>
+GLDEF_C void CTestScan<S,D>::Test2L()
+//
+// Test all the methods of the class
+//
+ {
+ test.Start(_L("CountWords"));
+ Test2aL();
+
+ test.Next(_L("ScanWord"));
+ Test2bL();
+
+ test.Next(_L("Count Paragraphs"));
+ Test2cL();
+
+ test.Next(_L("Scan Paragraph"));
+ Test2dL();
+
+ test.End();
+ }
+
+
+GLDEF_C TInt E32Main()
+//
+// Test the OLIB Varray types.
+//
+ {
+ TheTrapCleanup=CTrapCleanup::New();
+
+ test.Title();
+ test.Start(_L(" @SYMTestCaseID:SYSLIB-TTEXT-LEGACY-T_SCANDC-0001 CPlainText - Flat "));
+ typedef CTestScan<TText,CEditableText::EFlatStorage> instance1;
+ typedef CTestScan<TText,CEditableText::ESegmentedStorage> instance2;
+
+ instance1* aa=NULL;
+ TRAPD(ret, aa=instance1::NewL());
+ test(ret == KErrNone);
+
+ test.Start(_L("Registering all methods"));
+
+ TRAP(ret,aa->Test1L());
+ test(ret == KErrNone);
+
+ test.Next(_L("Testing all methods"));
+
+ TRAP(ret,aa->Test2L());
+ test(ret == KErrNone);
+
+ __UHEAP_MARK;
+ delete aa;
+ __UHEAP_MARKEND;
+
+ test.End();
+
+ test.Next(_L("CPlainText - Segmented"));
+
+ instance2* bb=NULL;
+ TRAP(ret, bb=instance2::NewL());
+ test(ret == KErrNone);
+
+ __UHEAP_MARK;
+ test.Start(_L("Registering all methods"));
+ TRAP(ret,bb->Test1L());
+ test(ret == KErrNone);
+ test.Next(_L("Testing all methods"));
+ TRAP(ret,bb->Test2L());
+ test(ret == KErrNone);
+ delete bb;
+ __UHEAP_MARKEND;
+ test.End();
+
+ test.End();
+ test.Close();
+
+ delete TheTrapCleanup;
+
+ return(0);
+ }
+