textrendering/textformatting/test/src/TTextView.cpp
branchRCL_3
changeset 54 748ec5531811
parent 0 1fb32624e06b
child 55 336bee5c2d35
--- a/textrendering/textformatting/test/src/TTextView.cpp	Wed Jun 09 11:40:52 2010 +0300
+++ b/textrendering/textformatting/test/src/TTextView.cpp	Tue Aug 31 17:01:26 2010 +0300
@@ -1585,17 +1585,10 @@
 	charFormatMask.SetAll();
 	iCharLayer->SetL(charFormat, charFormatMask);
 	iEtext->SetGlobalCharFormat(iCharLayer);
-
+	_LIT(KLtoRChar,"a");
+	_LIT(KRtoLChar,"\x6B2");
 	_LIT(KLtoRText,"aaa");
 	_LIT(KRtoLText,"\x6B2\x6B2\x6B2");
-	_LIT(KLtoRTextLong,"aaaaaaaaaaaa");
-	_LIT(KLtoRTextLong2,"aaaaaaaaaaaaaaa");
-	_LIT(KRtoLTextLong,"\x6B2\x6B2\x6B2\x6B2\x6B2\x6B2\x6B2\x6B2\x6B2\x6B2\x6B2\x6B2"); //12 char
-	_LIT(KRtoLTextLong2,"\x6B2\x6B2\x6B2\x6B2\x6B2\x6B2\x6B2\x6B2\x6B2\x6B2\x6B2\x6B2\x6B2\x6B2\x6B2"); //15 char
-	_LIT(KLtoRTextVeryLong,"aaaaaaaaaaaaaaaaaaaa"); // 20 characters
-	_LIT(KLtoRTextVeryLong2,"aaaaaaaaaaaaaaaaaaaaaaaaa"); // 25 characters
-	_LIT(KRtoLTextVeryLong,"\x6B2\x6B2\x6B2\x6B2\x6B2\x6B2\x6B2\x6B2\x6B2\x6B2\x6B2\x6B2\x6B2\x6B2\x6B2\x6B2\x6B2\x6B2\x6B2\x6B2"); //20 char
-	_LIT(KRtoLTextVeryLong2,"\x6B2\x6B2\x6B2\x6B2\x6B2\x6B2\x6B2\x6B2\x6B2\x6B2\x6B2\x6B2\x6B2\x6B2\x6B2\x6B2\x6B2\x6B2\x6B2\x6B2\x6B2\x6B2\x6B2\x6B2\x6B2"); //25 char
 	_LIT(KParaSep, "\x2029");
 
 	TRect rect;
@@ -1616,40 +1609,53 @@
 	TPoint point1,point2;
 	iLayout->DocPosToXyPosL(0,point1);
 	iLayout->DocPosToXyPosL(1,point2);
-	
-	TInt w = point2.iX - point1.iX;		//It depends on platform. WINSCW/H4 w=5; H6 w=4
+
+	TInt wLTR = point2.iX - point1.iX;		//It depends on platform. WINSCW/H4 w=5; H6 w=4
 	
-//	DocPos1 is LTR, DocPos1+1 is LTR, DocPos2 is LTR, DocPos2+1 is LTR
-	rect = iLayout->GetLineRectL(0,7);
-	test(rect.iTl.iX == 0 && rect.iBr.iX == 8*w);
+	iLayout->DocPosToXyPosL(5,point1);
+	iLayout->DocPosToXyPosL(4,point2);
+	TInt wRTL = point2.iX - point1.iX;        //It depends on platform. WINSCW/H4 w=5; H6 w=4
+	RDebug::Print(_L("wLTR %d,wRTL %d"), wLTR,wRTL);
+
+	//  DocPos1 is LTR, DocPos1+1 is LTR, DocPos2 is LTR, DocPos2+1 is RTL
+    rect = iLayout->GetLineRectL(0,2);
+    RDebug::Print(_L("iTl.iX %d,iY %d, iBr.iX %d,iY %d"), rect.iTl.iX,rect.iTl.iY,rect.iBr.iX,rect.iBr.iY);
+    test(rect.iTl.iX == 0 && rect.iBr.iX == 3*wLTR);
 
-//	DocPos1 is LTR, DocPos1+1 is LTR, DocPos2 is LTR, DocPos2+1 is RTL
-	rect = iLayout->GetLineRectL(0,2);
-	test(rect.iTl.iX == 0 && rect.iBr.iX == 3*w);
+    //  DocPos1 is LTR, DocPos1+1 is LTR, DocPos2 is RTL, DocPos2+1 is RTL
+    rect = iLayout->GetLineRectL(0,4);
+    RDebug::Print(_L("iTl.iX %d,iY %d, iBr.iX %d,iY %d"), rect.iTl.iX,rect.iTl.iY,rect.iBr.iX,rect.iBr.iY);
+    test(rect.iTl.iX == 0 && rect.iBr.iX == 3*wLTR + 2*wRTL);
 
-//	DocPos1 is LTR, DocPos1+1 is LTR, DocPos2 is RTL, DocPos2+1 is LTR
-	rect = iLayout->GetLineRectL(0,5);
-	test(rect.iTl.iX == 0 && rect.iBr.iX == 4*w);
-
-//	DocPos1 is LTR, DocPos1+1 is LTR, DocPos2 is RTL, DocPos2+1 is RTL
-	rect = iLayout->GetLineRectL(0,4);
-	test(rect.iTl.iX == 0 && rect.iBr.iX == 5*w);
-
+    //  DocPos1 is LTR, DocPos1+1 is LTR, DocPos2 is RTL, DocPos2+1 is LTR
+    rect = iLayout->GetLineRectL(0,5);
+    RDebug::Print(_L("iTl.iX %d,iY %d, iBr.iX %d,iY %d"), rect.iTl.iX,rect.iTl.iY,rect.iBr.iX,rect.iBr.iY);
+    test(rect.iTl.iX == 0 && rect.iBr.iX == 3*wLTR + wRTL);
+    
+    //	DocPos1 is LTR, DocPos1+1 is LTR, DocPos2 is LTR, DocPos2+1 is LTR
+	rect = iLayout->GetLineRectL(0,7);
+    RDebug::Print(_L("iTl.iX %d,iY %d, iBr.iX %d,iY %d"), rect.iTl.iX,rect.iTl.iY,rect.iBr.iX,rect.iBr.iY);
+	test(rect.iTl.iX == 0 && rect.iBr.iX == 3*wLTR + 3*wRTL + 2*wLTR);
+	
 //	DocPos1 is LTR, DocPos1+1 is RTL, DocPos2 is LTR, DocPos2+1 is LTR
 	rect = iLayout->GetLineRectL(2,7);
-	test(rect.iTl.iX == 2*w && rect.iBr.iX == 8*w);
+	RDebug::Print(_L("iTl.iX %d,iY %d, iBr.iX %d,iY %d"), rect.iTl.iX,rect.iTl.iY,rect.iBr.iX,rect.iBr.iY);
+	test(rect.iTl.iX == 2*wLTR && rect.iBr.iX == 3*wLTR + 3*wRTL + 2*wLTR);
 
 //	DocPos1 is LTR, DocPos1+1 is RTL, DocPos2 is LTR, DocPos2+1 is RTL
 	rect = iLayout->GetLineRectL(2,8);
-	test(rect.iTl.iX == 2*w && rect.iBr.iX == 9*w);
+	RDebug::Print(_L("iTl.iX %d,iY %d, iBr.iX %d,iY %d"), rect.iTl.iX,rect.iTl.iY,rect.iBr.iX,rect.iBr.iY);
+	test(rect.iTl.iX == 2*wLTR && rect.iBr.iX == 3*wLTR + 3*wRTL + 3*wLTR);
 
 //	DocPos1 is LTR, DocPos1+1 is RTL, DocPos2 is RTL, DocPos2+1 is LTR
 	rect = iLayout->GetLineRectL(2,5);
-	test(rect.iTl.iX == 2*w && rect.iBr.iX == 4*w);
+	RDebug::Print(_L("iTl.iX %d,iY %d, iBr.iX %d,iY %d"), rect.iTl.iX,rect.iTl.iY,rect.iBr.iX,rect.iBr.iY);
+	test(rect.iTl.iX == 2*wLTR && rect.iBr.iX == 3*wLTR + wRTL);
 
 //	DocPos1 is LTR, DocPos1+1 is RTL, DocPos2 is RTL, DocPos2+1 is RTL
 	rect = iLayout->GetLineRectL(2,4);
-	test(rect.iTl.iX == 2*w && rect.iBr.iX == 5*w);
+	RDebug::Print(_L("iTl.iX %d,iY %d, iBr.iX %d,iY %d"), rect.iTl.iX,rect.iTl.iY,rect.iBr.iX,rect.iBr.iY);
+	test(rect.iTl.iX == 2*wLTR && rect.iBr.iX == 3*wLTR + 2*wRTL);
 
 //	Sample text for test
 //	Doc_Pos:     | 9|10|11| 8| 7| 6| 3| 4| 5| 2| 1| 0|
@@ -1665,77 +1671,45 @@
 	
 //	DocPos1 is RTL, DocPos1+1 is LTR, DocPos2 is LTR, DocPos2+1 is LTR
 	rect = iLayout->GetLineRectL(2,4);
-	test(rect.iTl.iX == (75/5-20)*w+100 && rect.iBr.iX == (90/5-20)*w+100);
+	RDebug::Print(_L("iTl.iX %d,iY %d, iBr.iX %d,iY %d"), rect.iTl.iX,rect.iTl.iY,rect.iBr.iX,rect.iBr.iY);	
+	test(rect.iTl.iX == iWindowRect.Width() - 3*wRTL - 2*wLTR && rect.iBr.iX == iWindowRect.Width() - 2*wRTL);
 			
 //	DocPos1 is RTL, DocPos1+1 is LTR, DocPos2 is LTR, DocPos2+1 is RTL
 	rect = iLayout->GetLineRectL(2,5);
-	test(rect.iTl.iX == (80/5-20)*w+100 && rect.iBr.iX == (90/5-20)*w+100);
+	RDebug::Print(_L("iTl.iX %d,iY %d, iBr.iX %d,iY %d"), rect.iTl.iX,rect.iTl.iY,rect.iBr.iX,rect.iBr.iY);	
+	test(rect.iTl.iX == iWindowRect.Width() - 3*wRTL - wLTR && rect.iBr.iX == iWindowRect.Width() - 2*wRTL);
 
 //	DocPos1 is RTL, DocPos1+1 is LTR, DocPos2 is RTL, DocPos2+1 is LTR
 	rect = iLayout->GetLineRectL(2,8);
-	test(rect.iTl.iX == (55/5-20)*w+100 && rect.iBr.iX == (90/5-20)*w+100);
+	RDebug::Print(_L("iTl.iX %d,iY %d, iBr.iX %d,iY %d"), rect.iTl.iX,rect.iTl.iY,rect.iBr.iX,rect.iBr.iY);	
+	test(rect.iTl.iX == iWindowRect.Width() - 3*wRTL - 3*wLTR - 3*wRTL && rect.iBr.iX == iWindowRect.Width() - 2*wRTL);
 
 //	DocPos1 is RTL, DocPos1+1 is LTR, DocPos2 is RTL, DocPos2+1 is RTL
 	rect = iLayout->GetLineRectL(2,7);
-	test(rect.iTl.iX == (60/5-20)*w+100 && rect.iBr.iX == (90/5-20)*w+100);
+	RDebug::Print(_L("iTl.iX %d,iY %d, iBr.iX %d,iY %d"), rect.iTl.iX,rect.iTl.iY,rect.iBr.iX,rect.iBr.iY);
+	test(rect.iTl.iX == iWindowRect.Width() - 3*wRTL - 3*wLTR - 2*wRTL && rect.iBr.iX == iWindowRect.Width() - 2*wRTL);
 
 //	DocPos1 is RTL, DocPos1+1 is RTL, DocPos2 is LTR, DocPos2+1 is LTR
 	rect = iLayout->GetLineRectL(0,4);
-	test(rect.iTl.iX == (75/5-20)*w+100 && rect.iBr.iX == 100);
+	RDebug::Print(_L("iTl.iX %d,iY %d, iBr.iX %d,iY %d"), rect.iTl.iX,rect.iTl.iY,rect.iBr.iX,rect.iBr.iY);	
+	test(rect.iTl.iX == iWindowRect.Width() - 3*wRTL - 2*wLTR && rect.iBr.iX == 100);
 
 //	DocPos1 is RTL, DocPos1+1 is RTL, DocPos2 is LTR, DocPos2+1 is RTL
 	rect = iLayout->GetLineRectL(0,5);
-	test(rect.iTl.iX == (80/5-20)*w+100 && rect.iBr.iX == 100);
+	RDebug::Print(_L("iTl.iX %d,iY %d, iBr.iX %d,iY %d"), rect.iTl.iX,rect.iTl.iY,rect.iBr.iX,rect.iBr.iY);
+	test(rect.iTl.iX == iWindowRect.Width() - 3*wRTL - wLTR && rect.iBr.iX == 100);
 
 //	DocPos1 is RTL, DocPos1+1 is RTL, DocPos2 is RTL, DocPos2+1 is LTR
 	rect = iLayout->GetLineRectL(0,8);
-	test(rect.iTl.iX == (55/5-20)*w+100 && rect.iBr.iX == 100);
+	RDebug::Print(_L("iTl.iX %d,iY %d, iBr.iX %d,iY %d"), rect.iTl.iX,rect.iTl.iY,rect.iBr.iX,rect.iBr.iY);	
+	test(rect.iTl.iX == iWindowRect.Width() - 3*wRTL - 3*wLTR - 3*wRTL && rect.iBr.iX == 100);
 
 //	DocPos1 is RTL, DocPos1+1 is RTL, DocPos2 is RTL, DocPos2+1 is RTL
 	rect = iLayout->GetLineRectL(0,7);
-	test(rect.iTl.iX == (60/5-20)*w+100 && rect.iBr.iX == 100);
-	
-	STestDataTInt4 DataEmH4[] = {
-			{0,12,0,100 },{20,24,0,20},{0,0,0,5},{12,12,95,100},{7,7,35,40},
-			{7,12,35,100},{13,20,95,100},{10,9,50,100},
-			{3,19,15,100},{20,38,5,100},{19,19,95,100},{20,20,95,100},{19,20,95,100},
-	};
-	STestDataTInt4 DataH6[] = {
-			{0,15,0,100}, {25,30,0,20},{0,0,0,4},{15,15,96,100},{7,7,28,32},
-			{7,15,28,100},{16,25,96,100},{10,9,40,100},
-			{3,24,12,100},{25,48,4,100}, {24,24,96,100},{25,25,96,100},{24,25,96,100},
-	};
-	
-	test(sizeof(DataEmH4)/sizeof(STestDataTInt4) == sizeof(DataH6)/sizeof(STestDataTInt4));
-	
-	STestDataTInt4 *testdata;
-	TPtrC pLtoRTextLong;
-	TPtrC pRtoLTextLong;
-	TPtrC pLtoRTextVeryLong;
-	TPtrC pRtoLTextVeryLong;
+	RDebug::Print(_L("iTl.iX %d,iY %d, iBr.iX %d,iY %d"), rect.iTl.iX,rect.iTl.iY,rect.iBr.iX,rect.iBr.iY);	
+	test(rect.iTl.iX == iWindowRect.Width() - 3*wRTL - 3*wLTR - 2*wRTL && rect.iBr.iX == 100);
 	
-	if(w == 5)// for WINSCW(Em) and H4
-		{
-		testdata = DataEmH4;
-		pLtoRTextLong.Set(KLtoRTextLong);
-		pRtoLTextLong.Set(KRtoLTextLong);
-		pLtoRTextVeryLong.Set(KLtoRTextVeryLong);
-		pRtoLTextVeryLong.Set(KRtoLTextVeryLong);
-		}
-	else if (w == 4)  // for H6
-		{
-		testdata = DataH6;
-		pLtoRTextLong.Set(KLtoRTextLong2);
-		pRtoLTextLong.Set(KRtoLTextLong2);
-		pLtoRTextVeryLong.Set(KLtoRTextVeryLong2);
-		pRtoLTextVeryLong.Set(KRtoLTextVeryLong2);
-		}
-	else
-		{
-		test(0);
-		Destroy();
-		return;
-		}
+
 	
 //	Edge case tests
 //	Sample text
@@ -1749,24 +1723,68 @@
 //	X-Coords:  | 0| 4| 8|12|16|20|24|28|32|36|40|44|48|52|56|60|64|68|72|76|80|84|88|92|96|100|  w=4
 //	2nd Line:    |29|28|27|26|25|24|23|22|21|20|
 	
+	TInt LtoRLength = (iWindowRect.Width() - 5*wRTL)/wLTR;
+	TInt RtoLLength = 10;
+	TInt RtoLinLine1= (iWindowRect.Width() - LtoRLength * wLTR)/wRTL;
+	TInt Line2Start = LtoRLength + RtoLinLine1;
+	
 	iEtext->Reset();
-	iEtext->InsertL(0,pLtoRTextLong);
-	iEtext->InsertL(iEtext->DocumentLength(),pRtoLTextLong);	
+	for(TInt i=0;i<LtoRLength;i++)
+        {
+        iEtext->InsertL(iEtext->DocumentLength(),KLtoRChar);
+        }
+	
+	for(TInt i=0;i<RtoLLength;i++)
+	    {
+	    iEtext->InsertL(iEtext->DocumentLength(),KRtoLChar);
+	    }	
 	iEtext->InsertL(iEtext->DocumentLength(),KParaSep);
 	iView->FormatTextL();
 
-	for (TInt i = 0; i < 8;i++)
-		{
-		//	Test for whole line i=0 to 1
-		//	Test for one char   i=2 to 4
-		//	Test for DocPos2 at the end of line  i=5
-		//	Test for DocPos2 at a different line i=6
-		//	Test for DocPos2 < DocPos1			 i=7
-		rect = iLayout->GetLineRectL(testdata[i].iDoc1,testdata[i].iDoc2);
-		test.Printf(_L("GetLineRect edge test i=%d \n"),i);
-		test(rect.iTl.iX == testdata[i].iPos1 && rect.iBr.iX == testdata[i].iPos2); //Line 1
-		}
-			
+    for(TInt i=0;i<LtoRLength + RtoLLength;i++)
+    {
+        rect = iLayout->GetLineRectL(i,i+1);
+        RDebug::Print(_L("%d: iTl.iX %d,iY %d, iBr.iX %d,iY %d"), i,rect.iTl.iX,rect.iTl.iY,rect.iBr.iX,rect.iBr.iY);
+    }          
+    
+    rect = iLayout->GetLineRectL(0,LtoRLength);
+    RDebug::Print(_L("iTl.iX %d,iY %d, iBr.iX %d,iY %d"), rect.iTl.iX,rect.iTl.iY,rect.iBr.iX,rect.iBr.iY);    
+    test(rect.iTl.iX == 0 && rect.iBr.iX == LtoRLength*wLTR + RtoLinLine1*wRTL ); //Line 1
+  
+    rect = iLayout->GetLineRectL(Line2Start, LtoRLength + RtoLLength);
+    RDebug::Print(_L("iTl.iX %d,iY %d, iBr.iX %d,iY %d"), rect.iTl.iX,rect.iTl.iY,rect.iBr.iX,rect.iBr.iY);
+    test(rect.iTl.iX == 0 && rect.iBr.iX == (RtoLLength - RtoLinLine1)*wRTL); //Line 2
+
+    rect = iLayout->GetLineRectL(0,0);
+    RDebug::Print(_L("iTl.iX %d,iY %d, iBr.iX %d,iY %d"), rect.iTl.iX,rect.iTl.iY,rect.iBr.iX,rect.iBr.iY);    
+    test(rect.iTl.iX == 0 && rect.iBr.iX == wLTR); //first char
+    
+    //firt char of RTL
+    rect = iLayout->GetLineRectL(LtoRLength,LtoRLength);
+    RDebug::Print(_L("iTl.iX %d,iY %d, iBr.iX %d,iY %d"), rect.iTl.iX,rect.iTl.iY,rect.iBr.iX,rect.iBr.iY);    
+    test(rect.iTl.iX == LtoRLength*wLTR + (RtoLinLine1-1)*wRTL && rect.iBr.iX == LtoRLength*wLTR + RtoLinLine1*wRTL); //end of line 1
+
+    //middle of L to R
+    rect = iLayout->GetLineRectL(LtoRLength/2,LtoRLength/2);
+    RDebug::Print(_L("iTl.iX %d,iY %d, iBr.iX %d,iY %d"), rect.iTl.iX,rect.iTl.iY,rect.iBr.iX,rect.iBr.iY);    
+    test(rect.iTl.iX == LtoRLength/2 * wLTR && rect.iBr.iX == (LtoRLength/2+1) * wLTR);
+      
+    //middle of LTR to first of RTL
+    rect = iLayout->GetLineRectL(LtoRLength/2,LtoRLength);
+    RDebug::Print(_L("iTl.iX %d,iY %d, iBr.iX %d,iY %d"), rect.iTl.iX,rect.iTl.iY,rect.iBr.iX,rect.iBr.iY);    
+    test(rect.iTl.iX == LtoRLength/2 * wLTR && rect.iBr.iX == LtoRLength*wLTR + RtoLinLine1*wRTL);
+ 
+    //second of RTL to start of 2nd line ??
+    rect = iLayout->GetLineRectL(LtoRLength+1,Line2Start);
+    RDebug::Print(_L("iTl.iX %d,iY %d, iBr.iX %d,iY %d"), rect.iTl.iX,rect.iTl.iY,rect.iBr.iX,rect.iBr.iY);    
+    test(rect.iTl.iX == LtoRLength*wLTR + (RtoLinLine1-1)*wRTL && rect.iBr.iX == LtoRLength*wLTR + RtoLinLine1*wRTL); //end of line 1
+  
+    //middle of L to R
+    rect = iLayout->GetLineRectL(LtoRLength/2,LtoRLength/2-1);
+    RDebug::Print(_L("iTl.iX %d,iY %d, iBr.iX %d,iY %d"), rect.iTl.iX,rect.iTl.iY,rect.iBr.iX,rect.iBr.iY);    
+    test(rect.iTl.iX == LtoRLength/2 * wLTR && rect.iBr.iX == LtoRLength*wLTR + RtoLinLine1*wRTL);
+    
+		
 //	Test for edge cases while two lines are in different direction
 //	Sample text
 //	1st Line:    | 0| 1| 2| 3| 4| 5| 6| 7| 8| 9|10|11|12|13|14|15|16|17|18|19|
@@ -1778,19 +1796,56 @@
 //	1st Line:    | 0| 1| 2| 3| 4| 5| 6| 7| 8| 9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|
 //	X-Coords:  | 0| 4| 8| 12|16|20|24|28|32|36|40|44|48|52|56|60|64|68|72|76|80|84|88|92|96|100|  w=4
 //	2nd Line:    |49|48|47|46|45|44|43|42|41|40|39|38|37|36|35|34|33|32|31|30|29|28|27|26|25|
-	iEtext->Reset();
-	iEtext->InsertL(0,pLtoRTextVeryLong);
-	iEtext->InsertL(iEtext->DocumentLength(),pRtoLTextVeryLong);
+    
+    LtoRLength = iWindowRect.Width()/wLTR;
+    RtoLLength = iWindowRect.Width()/wRTL;
+        
+    iEtext->Reset();
+    for(TInt i=0;i<LtoRLength;i++)
+        {
+        iEtext->InsertL(iEtext->DocumentLength(),KLtoRChar);
+        }
+    
+    for(TInt i=0;i<RtoLLength;i++)
+        {
+        iEtext->InsertL(iEtext->DocumentLength(),KRtoLChar);
+        }       
 	iEtext->InsertL(iEtext->DocumentLength(),KParaSep);
 	iView->FormatTextL();
 
-	for (TInt i = 8; i < 13; i++)
-		{
-		rect = iLayout->GetLineRectL(testdata[i].iDoc1,testdata[i].iDoc2);
-		test.Printf(_L("GetLineRect edge test i=%d \n"),i);
-		test(rect.iTl.iX == testdata[i].iPos1 && rect.iBr.iX == testdata[i].iPos2); //Line 1
-		}	
-	Destroy();
+    for(TInt i=0;i<LtoRLength + RtoLLength;i++)
+    {
+        rect = iLayout->GetLineRectL(i,i+1);
+        RDebug::Print(_L("%d: iTl.iX %d,iY %d, iBr.iX %d,iY %d"), i,rect.iTl.iX,rect.iTl.iY,rect.iBr.iX,rect.iBr.iY);
+    }  
+ 
+    
+    //1st line
+    rect = iLayout->GetLineRectL(3, LtoRLength-1);
+    RDebug::Print(_L("iTl.iX %d,iY %d, iBr.iX %d,iY %d"), rect.iTl.iX,rect.iTl.iY,rect.iBr.iX,rect.iBr.iY);
+    test(rect.iTl.iX == 3*wLTR && rect.iBr.iX == LtoRLength*wLTR); //Line 2
+
+    //2nd line
+    rect = iLayout->GetLineRectL(LtoRLength,LtoRLength + RtoLLength -2);
+    RDebug::Print(_L("iTl.iX %d,iY %d, iBr.iX %d,iY %d"), rect.iTl.iX,rect.iTl.iY,rect.iBr.iX,rect.iBr.iY);
+    test(rect.iTl.iX == wRTL && rect.iBr.iX == RtoLLength*wRTL); //Line 2
+
+    //end of 1st line
+    rect = iLayout->GetLineRectL(LtoRLength-1, LtoRLength-1);
+    RDebug::Print(_L("iTl.iX %d,iY %d, iBr.iX %d,iY %d"), rect.iTl.iX,rect.iTl.iY,rect.iBr.iX,rect.iBr.iY);
+    test(rect.iTl.iX == (LtoRLength-1)*wLTR && rect.iBr.iX == LtoRLength*wLTR); //Line 2
+
+    //start of 2nd line
+    rect = iLayout->GetLineRectL(LtoRLength, LtoRLength);
+    RDebug::Print(_L("iTl.iX %d,iY %d, iBr.iX %d,iY %d"), rect.iTl.iX,rect.iTl.iY,rect.iBr.iX,rect.iBr.iY);
+    test(rect.iTl.iX == (RtoLLength-1)*wRTL && rect.iBr.iX == RtoLLength*wRTL); //Line 2
+
+     //1st line to 2nd line
+     rect = iLayout->GetLineRectL(LtoRLength-1, LtoRLength);
+     RDebug::Print(_L("iTl.iX %d,iY %d, iBr.iX %d,iY %d"), rect.iTl.iX,rect.iTl.iY,rect.iBr.iX,rect.iBr.iY);
+     test(rect.iTl.iX == (LtoRLength-1)*wLTR && rect.iBr.iX == LtoRLength*wLTR); //Line 2
+
+
 	}
 
 /**