fep/frontendprocessor/test/src/TFEP1TESTTARGET.CPP
branchRCL_3
changeset 20 ebd48d2de13c
parent 11 c8fb4cf7b3ae
child 21 ecbabf52600f
--- a/fep/frontendprocessor/test/src/TFEP1TESTTARGET.CPP	Thu Aug 19 10:15:25 2010 +0300
+++ b/fep/frontendprocessor/test/src/TFEP1TESTTARGET.CPP	Tue Aug 31 15:31:50 2010 +0300
@@ -1,4 +1,4 @@
-// Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2006-2010 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"
@@ -18,7 +18,7 @@
 // it has not been investigated a way to automate parts of it, particularly key combinations of 'shift+A', 'shift+B' or 'shift+S',
 // which still rely on a live creature checking that the output on the screen is correct (that creature may want to put a delay
 // when sending messages to be able to see that message, otherwise it may be too fast for it/him/her).
-// 
+//
 //
 
 /**
@@ -40,6 +40,7 @@
 
 
 const TUid KUidTFep1 = { 0x102024D0 };
+const TUid KUidTFep4 = { 0x1028716D };
 
 // String literal to represent the language-specific resource file path.
 _LIT(KFep1TestTargetResourceFilePath, "z:\\system\\test\\fepbasetest\\tfep1testtarget.r01");
@@ -49,21 +50,23 @@
 TBuf<16> gTextNormalNumEdwin;
 TBuf<16> gTextKatakanaEdwin;
 TBuf<32> gTextPhoneticalEdwin;
+TBuf<32> gTextCJKEdwin;
 
 // expected results (according to FEP1 settings and the actions performed in the CFep1TestTargetUi::RunTestStepL method below)
 _LIT(KExpectedTextNormalEdwin, "ABCGHIJKLMQRST@");
 _LIT(KExpectedTextNormalNumEdwin, "1230056");
 _LIT(KExpectedTextKatakanaEdwin, "EFG");
 _LIT(KExpectedTextPhoneticalEdwin, "JulietteKiloLimaMNO");
+_LIT(KExpectedTextCJKEdwin, "!\x0411\x0E02\x2E81\x303A\x4E19\xAD00\xD840\xDC00\xD87E\xDC00 !\"#");
 
 
 /*************************************************************
- **  
+ **
  **  TTstResourceFileId - TCleanupItem derived class
- **  
+ **
  *************************************************************/
 /*
-	Encapsulates the clean up operations. The class unloads the resource file from the list maintained by CCoeEnv 
+	Encapsulates the clean up operations. The class unloads the resource file from the list maintained by CCoeEnv
 */
 TTstResourceFileId::TTstResourceFileId(CCoeEnv& aConeEnvironment, TInt aResourceFileId)
 	:TCleanupItem(UnloadResourceFile, this),
@@ -81,9 +84,9 @@
 
 
 /*************************************************************
- **  
+ **
  **  CTstTestTargetDialog - CEikDialog derived class
- **  
+ **
  *************************************************************/
 
 /**
@@ -100,6 +103,10 @@
 	CEikEdwin& phoneticAlphabetEdwin=*static_cast<CEikEdwin*>(Control(EControlIdPhoneticAlphabetEdwin));
 	inputCapabilities=phoneticAlphabetEdwin.InputCapabilities();
 	phoneticAlphabetEdwin.SetInputCapabilitiesL(TCoeInputCapabilities(TCoeInputCapabilities::EWesternAlphabetic|TCoeInputCapabilities::ENavigation, inputCapabilities.FepAwareTextEditor(), inputCapabilities.CaptionRetrieverForFep(), TUid::Uid(KTfep1Uid), this));
+	CEikEdwin& cjkEdwin=*static_cast<CEikEdwin*>(Control(EControlIdCJKEdwin));
+	inputCapabilities=cjkEdwin.InputCapabilities();
+	inputCapabilities.SetCapabilities(TCoeInputCapabilities::EAllText|TCoeInputCapabilities::ENavigation);
+	cjkEdwin.SetInputCapabilitiesL(inputCapabilities);
 	}
 
 
@@ -108,7 +115,7 @@
     RDebug::Print(_L("**************************************************************"));
     RDebug::Print(_L("****                OK or CANCEL key pressed                  "));
     RDebug::Print(_L("**************************************************************\n"));
-    
+
 	// Get fields text values...
 	CEikEdwin* edwinNormal = static_cast<CEikEdwin*>(Control(EControlIdNormalEdwin));
 	edwinNormal->GetText(gTextNormalEdwin);
@@ -122,13 +129,16 @@
 	CEikEdwin* edwinPhonetical = static_cast<CEikEdwin*>(Control(EControlIdPhoneticAlphabetEdwin));
 	edwinPhonetical->GetText(gTextPhoneticalEdwin);
 
+	CEikEdwin* edwinCJK = static_cast<CEikEdwin*>(Control(EControlIdCJKEdwin));
+	edwinCJK->GetText(gTextCJKEdwin);
+
 	//It's always ok to return OK in our case...
 	return ETrue;
 	}
 
 
 /**
-   Flag TRUE for support of Phonetic alphabets 
+   Flag TRUE for support of Phonetic alphabets
 */
 TBool CTstTestTargetDialog::SupportsPhoneticAlphabet() const
 	{
@@ -139,9 +149,9 @@
 
 
 /*************************************************************
- **  
+ **
  **  CFep1TestTargetUi
- **  
+ **
  *************************************************************/
 
 CFep1TestTargetUi::CFep1TestTargetUi(CTmsTestStep* aStep) :
@@ -154,9 +164,9 @@
 	}
 
 /**
-  Install the FEP.\n 
+  Install the FEP.\n
   Set the windows server event as User defined.\n
-  Connect the client session to widows server.\n 
+  Connect the client session to widows server.\n
   Create the Client side handle \n
   Send the user events and close the session on completion\n
 */
@@ -165,7 +175,7 @@
     RDebug::Print(_L("**************************************************************"));
     RDebug::Print(_L("****           CFep1TestTargetUi::ConstructL                  "));
     RDebug::Print(_L("**************************************************************\n"));
- 
+
 	CTestAppUi::ConstructL();
 
 	iCoeEnv->InstallFepL(KNullUid);
@@ -196,14 +206,14 @@
 	{
 	switch(aStep)
 		{
-		
+
 //----------------------------------------------------------------------------------------------
 
 /**
    @SYMTestCaseID 		UIF-FEPTEST-0004
    @SYMPREQ				0000
    @SYMTestCaseDesc  	Offer key events to the dialog having the TFEP1 activated.
-   @SYMTestPriority 	High 
+   @SYMTestPriority 	High
    @SYMTestStatus 		Implemented
    @SYMTestActions 		Simulate key events sent to the dialog box, and do some actions with the fep,
    						like commit, cancel and go back to add a 'missing' letter.
@@ -220,41 +230,41 @@
 			SendKey(code);
 			}
 			break;
-			
+
 		case 4:
 			{
 			INFO_PRINTF1(_L("...simulate Key Event Enter ---> Submits 'ABC'"));
-			SendKey(EKeyEnter);			
+			SendKey(EKeyEnter);
 			}
 			break;
 
-		case 5: case 6: case 7: 
+		case 5: case 6: case 7:
 			{
 			TUint code = 'D' + aStep - 5;
 			INFO_PRINTF2(_L("...simulate Key Event '%d'"), code);
 			SendKey(code);
 			}
 			break;
-			
+
 		case 8:
 			{
 			INFO_PRINTF1(_L("...simulate Key Event Escape ---> Cancels 'DEF'"));
-			SendKey(EKeyEscape);			
+			SendKey(EKeyEscape);
 			}
 			break;
 
-		case 9: case 10: case 11: 
+		case 9: case 10: case 11:
 			{
 			TUint code = 'H' + aStep - 9;
 			INFO_PRINTF2(_L("...simulate Key Event '%d'"), code);
 			SendKey(code);
 			}
 			break;
-			
+
 		case 12: case 13: case 14: case 15: case 16:
 			{
 			INFO_PRINTF1(_L("...simulate Key Cursor Left --->  Go left 5 positions (should not go further than the previous 'H' however"));
-			SendKey(EKeyLeftArrow);			
+			SendKey(EKeyLeftArrow);
 			}
 			break;
 
@@ -269,14 +279,14 @@
 		case 18:
 			{
 			INFO_PRINTF1(_L("...simulate Key Event Enter ---> Submits 'GHIJ'"));
-			SendKey(EKeyEnter);			
+			SendKey(EKeyEnter);
 			}
 			break;
 
 		case 19: case 20: case 21: case 22: case 23:
 			{
 			INFO_PRINTF1(_L("...simulate Key Cursor Right --->  Go right few positions in case we were within inline editing fep mode"));
-			SendKey(EKeyRightArrow);			
+			SendKey(EKeyRightArrow);
 			if(aStep == 23)
 				{
 				RecordTestResultL();
@@ -291,7 +301,7 @@
    @SYMTestCaseID 		UIF-FEPTEST-0005
    @SYMPREQ				0000
    @SYMTestCaseDesc  	Repeat the same as the other but changing mode (inline <--> non inline)
-   @SYMTestPriority 	High 
+   @SYMTestPriority 	High
    @SYMTestStatus 		Implemented
    @SYMTestActions 		Simulate key events sent to the dialog box, and do some actions with the fep,
    						like commit, cancel and go back to add a 'missing' letter.
@@ -304,52 +314,52 @@
 			{
 			SetTestStepID(_L("UIF-FEPTEST-0005"));
 			INFO_PRINTF1(_L("...simulate Key Event 'Shift + I' ---> Changes fep mode!"));
-			SendKey('I', EModifierRightShift);			
+			SendKey('I', EModifierRightShift);
 			}
 			break;
 
-		case 52: case 53: case 54: 
+		case 52: case 53: case 54:
 			{
 			TUint code = 'K' + aStep - 52;
 			INFO_PRINTF2(_L("...simulate Key Event '%d'"), code);
 			SendKey(code);
 			}
 			break;
-			
+
 		case 55:
 			{
 			INFO_PRINTF1(_L("...simulate Key Event Enter ---> Submits 'KLM'"));			// Submit "KLM" ----> We should have "ABCGHIJKLM"
-			SendKey(EKeyEnter);			
+			SendKey(EKeyEnter);
 			}
 			break;
 
-		case 56: case 57: case 58: 
+		case 56: case 57: case 58:
 			{
 			TUint code = 'N' + aStep - 56;
 			INFO_PRINTF2(_L("...simulate Key Event '%d'"), code);
 			SendKey(code);
 			}
 			break;
-			
+
 		case 59:
 			{
 			INFO_PRINTF1(_L("...simulate Key Event Escape ---> Cancels 'NOP'"));
-			SendKey(EKeyEscape);			
+			SendKey(EKeyEscape);
 			}
 			break;
 
-		case 60: case 61: case 62: 
+		case 60: case 61: case 62:
 			{
 			TUint code = 'R' + aStep - 60;
 			INFO_PRINTF2(_L("...simulate Key Event '%d'"), code);
 			SendKey(code);
 			}
 			break;
-			
+
 		case 63: case 64: case 65: case 66: case 67:
 			{
 			INFO_PRINTF1(_L("...simulate Key Cursor Left --->  Go left 5 positions (should not go further than the previous 'R' however"));
-			SendKey(EKeyLeftArrow);			
+			SendKey(EKeyLeftArrow);
 			}
 			break;
 
@@ -364,14 +374,14 @@
 		case 69:
 			{
 			INFO_PRINTF1(_L("...simulate Key Event Enter ---> Submits 'QRST'"));	// Submit "QRST" ----> We should have "ABCGHIJKLMQRST"
-			SendKey(EKeyEnter);			
+			SendKey(EKeyEnter);
 			}
 			break;
 
 		case 70: case 71: case 72: case 73: case 74:
 			{
 			INFO_PRINTF1(_L("...simulate Key Cursor Right --->  Go right few positions in case we were within inline editing fep mode"));
-			SendKey(EKeyRightArrow);			
+			SendKey(EKeyRightArrow);
 			if(aStep == 74)
 					{
 					RecordTestResultL();
@@ -386,7 +396,7 @@
    @SYMTestCaseID 		UIF-FEPTEST-0006
    @SYMPREQ				0000
    @SYMTestCaseDesc  	Test changing focus
-   @SYMTestPriority 	High 
+   @SYMTestPriority 	High
    @SYMTestStatus 		Implemented
    @SYMTestActions 		Simulate key events to change focus of the Fep window and move the windows around.
    						In addition, simulate the key event that sends the Fep window to the current dialog cursor.
@@ -399,14 +409,14 @@
 			{
 			SetTestStepID(_L("UIF-FEPTEST-0006"));
 			INFO_PRINTF1(_L("...simulate Key Event 'Shift + N' ---> Moves the Fep window to dialog cursor!"));
-			SendKey('N', EModifierRightShift);			
+			SendKey('N', EModifierRightShift);
 			}
 			break;
 
 		case 102:
 			{
 			INFO_PRINTF1(_L("...simulate Key Event 'Shift + F' ---> Changes focus!"));
-			SendKey('F', EModifierRightShift);			
+			SendKey('F', EModifierRightShift);
 			}
 			break;
 
@@ -414,14 +424,14 @@
 			{
 			INFO_PRINTF1(_L("...send several cursor right events to move the window"));
 			for (TInt ii=10; ii>0; --ii)
-				SendKey(EKeyRightArrow);			
+				SendKey(EKeyRightArrow);
 			}
 			break;
 
 		case 116:
 			{
 			INFO_PRINTF1(_L("...simulate Key Event Enter ---> Finishes moving the Fep window!"));
-			SendKey(EKeyEnter);			
+			SendKey(EKeyEnter);
 			RecordTestResultL();
 			}
 			break;
@@ -433,7 +443,7 @@
    @SYMTestCaseID 		UIF-FEPTEST-0007
    @SYMPREQ				0000
    @SYMTestCaseDesc  	Test TFEP1 in HEXadecimal mode
-   @SYMTestPriority 	High 
+   @SYMTestPriority 	High
    @SYMTestStatus 		Implemented
    @SYMTestActions 		Change Fep to HEX mode by means of the corresponding key event.
    						Simulate that the combination of 0x0040 produces the symbol '@'
@@ -446,7 +456,7 @@
 			{
 			SetTestStepID(_L("UIF-FEPTEST-0007"));
 			INFO_PRINTF1(_L("...simulate Key Event 'Shift + M' ---> Changes to hex fep!"));
-			SendKey('M', EModifierRightShift);			
+			SendKey('M', EModifierRightShift);
 			}
 			break;
 
@@ -485,7 +495,7 @@
 		case 157:
 			{
 			INFO_PRINTF1(_L("...simulate Key Event Enter ---> Submits '0040' ==> At symbol (@)"));
-			SendKey(EKeyEnter);			
+			SendKey(EKeyEnter);
 			}
 			break;
 
@@ -493,7 +503,7 @@
 			{
 			INFO_PRINTF1(_L("...simulate Key Event 'Shift + M' ---> Changes back to normal fep!"));
 			SendKey('M', EModifierRightShift);
-			
+
 		    RDebug::Print(_L("**************************************************************"));
 		    RDebug::Print(_L("****           UIF-FEPTEST-0007 Finished                      "));
 		    RDebug::Print(_L("**************************************************************\n"));
@@ -509,7 +519,7 @@
    @SYMTestCaseID 		UIF-FEPTEST-0008
    @SYMPREQ				0000
    @SYMTestCaseDesc  	Text selection within a dialog box editor.
-   @SYMTestPriority 	High 
+   @SYMTestPriority 	High
    @SYMTestStatus 		Implemented
    @SYMTestActions 		To test this functionality we simulate a key event to go to the next dialog
    						field (cursor down). Once in there, some numerical key events are sent to the
@@ -528,7 +538,7 @@
 			{
 			SetTestStepID(_L("UIF-FEPTEST-0008"));
 			INFO_PRINTF1(_L("Send cursor down events to move the next dialog"));
-			SendKey(EKeyDownArrow);			
+			SendKey(EKeyDownArrow);
 			}
 			break;
 
@@ -543,11 +553,11 @@
 		case 205:
 			{
 			INFO_PRINTF1(_L("...simulate Key Event 'Shift + W' ---> Change cursor type in case of inline editing!"));
-			SendKey('W', EModifierRightShift);			
+			SendKey('W', EModifierRightShift);
 			}
 			break;
-			
-		case 206: case 207: case 208: 
+
+		case 206: case 207: case 208:
 			{
 			INFO_PRINTF1(_L("...simulate Key Cursor 'shift + Left' --->  Selects non-submitted text"));
 			SendKey(EKeyLeftArrow, EModifierLeftShift|EModifierShift);
@@ -565,14 +575,14 @@
 		case 212:
 			{
 			INFO_PRINTF1(_L("...simulate Key Event Enter ---> Submits '123'"));
-			SendKey(EKeyEnter);			
+			SendKey(EKeyEnter);
 			}
 			break;
 
 		case 213:
 			{
 			INFO_PRINTF1(_L("...simulate Key Event 'Shift + I' ---> Changes fep mode!"));
-			SendKey('I', EModifierRightShift);			
+			SendKey('I', EModifierRightShift);
 			}
 			break;
 
@@ -587,11 +597,11 @@
 		case 217:
 			{
 			INFO_PRINTF1(_L("...simulate Key Event 'Shift + W' ---> Change cursor type in case of inline editing!"));
-			SendKey('W', EModifierRightShift);			
+			SendKey('W', EModifierRightShift);
 			}
 			break;
-			
-		case 218: case 219: case 220: 
+
+		case 218: case 219: case 220:
 			{
 			INFO_PRINTF1(_L("...simulate Key Cursor 'shift + Right' --->  Selects non-submitted text"));
 			SendKey(EKeyLeftArrow, EModifierLeftShift|EModifierShift);
@@ -609,14 +619,14 @@
 		case 224:
 			{
 			INFO_PRINTF1(_L("...simulate Key Event Enter ---> Submits '456'"));
-			SendKey(EKeyEnter);			
+			SendKey(EKeyEnter);
 			}
 			break;
 
 		case 225: case 226: case 227:
 			{
 			INFO_PRINTF1(_L("...simulate Key Cursor Left --->  Go left 3 positions (we should be between digits 3 and 4!"));
-			SendKey(EKeyLeftArrow);			
+			SendKey(EKeyLeftArrow);
 			}
 			break;
 
@@ -630,21 +640,21 @@
 		case 229:
 			{
 			INFO_PRINTF1(_L("...simulate Key Event 'Shift + A' ---> Tells about what's AFTER the selected 4!"));	// Should be 56
-			SendKey('A', EModifierRightShift);			
+			SendKey('A', EModifierRightShift);
 			}
 			break;
-			
+
 		case 230:
 			{
 			INFO_PRINTF1(_L("...simulate Key Event 'Shift + S' ---> Tells about what's SELECTED!"));	// Should be 4
-			SendKey('S', EModifierRightShift);			
+			SendKey('S', EModifierRightShift);
 			}
 			break;
-			
+
 		case 231:
 			{
 			INFO_PRINTF1(_L("...simulate Key Event 'Shift + B' ---> Tells about what's BEFORE the selected 4!"));	// Should be 123
-			SendKey('B', EModifierRightShift);			
+			SendKey('B', EModifierRightShift);
 			}
 			break;
 
@@ -660,8 +670,6 @@
 			{
 			INFO_PRINTF1(_L("...simulate Key Event Enter ---> Submits '00'"));						// We should have 1230056
 			SendKey(EKeyEnter);
-			
-			
 			RecordTestResultL();
 			}
 			break;
@@ -674,12 +682,12 @@
    @SYMTestCaseID 		UIF-FEPTEST-0009
    @SYMPREQ				0000
    @SYMTestCaseDesc  	Fep state within a dialog box editor.
-   @SYMTestPriority 	High 
+   @SYMTestPriority 	High
    @SYMTestStatus 		Implemented
    @SYMTestActions 		To test this functionality we simulate a key event to go to change the state
    						variable (in TFEP1 case it's just a counter), repeating the same event few times.
    						he next dialog.
-   						Move to the next text editor box and go back to the previous one. State is maintained 
+   						Move to the next text editor box and go back to the previous one. State is maintained
    @SYMTestExpectedResults 	The state is maintained even though we move across to other text editor boxes (partly manual)
  */
 
@@ -690,28 +698,28 @@
 		case 252: case 253: case 254: case 255:
 			{
 			INFO_PRINTF1(_L("...simulate Key Event 'Shift + T' ---> Changes State variable!"));
-			SendKey('T', EModifierRightShift);			
+			SendKey('T', EModifierRightShift);
 			}
 			break;
 
 		case 256:
 			{
 			INFO_PRINTF1(_L("Send cursor up events to move the next dialog"));
-			SendKey(EKeyUpArrow);			
+			SendKey(EKeyUpArrow);
 			}
 			break;
 
 		case 257:
 			{
 			INFO_PRINTF1(_L("Send cursor down events to move the next dialog"));
-			SendKey(EKeyDownArrow);			
+			SendKey(EKeyDownArrow);
 			}
 			break;
 
 		case 258: case 259: case 260: case 261: case 262:
 			{
 			INFO_PRINTF1(_L("...simulate Key Event 'Shift + T' ---> Changes State variable!"));
-			SendKey('T', EModifierRightShift);			
+			SendKey('T', EModifierRightShift);
 			if(aStep == 262)
 				{
                 RDebug::Print(_L("**************************************************************"));
@@ -730,10 +738,10 @@
    @SYMTestCaseID 		UIF-FEPTEST-0010
    @SYMPREQ				0000
    @SYMTestCaseDesc  	Kata-kata dialog box editor.
-   @SYMTestPriority 	High 
+   @SYMTestPriority 	High
    @SYMTestStatus 		Implemented
-   @SYMTestActions 		To test this functionality we simulate a key event to go to next dialog box 
-   						editor (Katakana dialog box). Simulate some characters and check that 
+   @SYMTestActions 		To test this functionality we simulate a key event to go to next dialog box
+   						editor (Katakana dialog box). Simulate some characters and check that
    						they appear on the box accordingly.
    @SYMTestExpectedResults 	When the dialog is dismissed, the text box reads as is expected.
  */
@@ -744,11 +752,11 @@
 			{
 			SetTestStepID(_L("UIF-FEPTEST-0010"));
 			INFO_PRINTF1(_L("Send cursor down events to move the next dialog"));
-			SendKey(EKeyDownArrow);			
+			SendKey(EKeyDownArrow);
 			}
 			break;
 
-		case 352: case 353: case 354:  
+		case 352: case 353: case 354:
 			{
 			SetTestStepID(_L("UIF-FEPTEST-0010"));
 			TUint code = 'E' + aStep - 352;
@@ -768,14 +776,14 @@
    @SYMTestCaseID 		UIF-FEPTEST-0011
    @SYMPREQ				0000
    @SYMTestCaseDesc  	Phoneticall dialog box editor.
-   @SYMTestPriority 	High 
+   @SYMTestPriority 	High
    @SYMTestStatus 		Implemented
-   @SYMTestActions 		To test this functionality we simulate a key event to go to next dialog box 
-   						editor (Phoneticall dialog box). Simulate some characters and check that 
+   @SYMTestActions 		To test this functionality we simulate a key event to go to next dialog box
+   						editor (Phoneticall dialog box). Simulate some characters and check that
    						they appear on the box accordingly, i.e, converting single characters to those
    						in the phoneticall alphabet (A-->Alpha, B-->Bravo...)
-   						In addition, uninstall the Fep and write more characters, so they are not 
-   						phonetically 'translated' by the Fep. 		
+   						In addition, uninstall the Fep and write more characters, so they are not
+   						phonetically 'translated' by the Fep.
    @SYMTestExpectedResults 	When the dialog is dismissed, the text box reads as is expected.
  */
 
@@ -785,22 +793,22 @@
 			{
 			SetTestStepID(_L("UIF-FEPTEST-0011"));
 			INFO_PRINTF1(_L("Send cursor down events to move the next dialog"));
-			SendKey(EKeyDownArrow);			
+			SendKey(EKeyDownArrow);
 			}
 			break;
 
-		case 452: case 453: case 454:  
+		case 452: case 453: case 454:
 			{
 			TUint code = 'J' + aStep - 452;
 			INFO_PRINTF2(_L("...simulate Key Event '%d'"), code);
 			SendKey(code);
 			}
 			break;
-			
+
 		case 455:
 			{
 			INFO_PRINTF1(_L("...simulate Key Event Enter ---> Submits 'JulietteKiloLima'"));
-			SendKey(EKeyEnter);			
+			SendKey(EKeyEnter);
 			}
 			break;
 
@@ -819,12 +827,12 @@
 			SendKey(code);
 			}
 			break;
-			
+
 		case 460:
 			{
-			INFO_PRINTF1(_L("...simulate Key Event Enter ---> Submits 'MNO' (not Fep installed --> No Alphabetical!"));
-			SendKey(EKeyEnter);
-			
+			//INFO_PRINTF1(_L("...simulate Key Event Enter ---> Submits 'MNO' (not Fep installed --> No Alphabetical!"));
+			//SendKey(EKeyEnter);
+
 		    RDebug::Print(_L("**************************************************************"));
 		    RDebug::Print(_L("****           UIF-FEPTEST-0011 Finished                      "));
 		    RDebug::Print(_L("**************************************************************\n"));
@@ -833,6 +841,168 @@
 			}
 			break;
 
+//----------------------------------------------------------------------------------------------
+
+/**
+   @SYMTestCaseID 		TI18N-FEPBASE-CIT-4001
+   @SYMPREQ				2471
+   @SYMTestCaseDesc  	Check FEPBASE Unicode 5.0 support.
+   @SYMTestPriority 	High
+   @SYMTestStatus 		Implemented
+   @SYMTestActions 		1. Pass BMP code points to WORD.exe
+                        2. Pass non-BMP code points to WORD.exe
+
+   @SYMTestExpectedResults 	When the dialog is dismissed, the text box reads as is expected.
+ */
+
+//----------------------------------------------------------------------------------------------
+
+		case 461:
+			{
+			SetTestStepID(_L("TI18N-FEPBASE-CIT-4001"));
+			INFO_PRINTF1(_L("Send cursor down events to move the next dialog"));
+			SendKey(EKeyDownArrow);
+			// FEP 1 is already tested in above test cases.
+			// Now install test FEP 4 to test UTF-16 support.
+			INFO_PRINTF1(_L("Install the FEP 4"));
+			iCoeEnv->InstallFepL(KUidTFep4);
+			User::After(TTimeIntervalMicroSeconds32(2000000));
+			}
+			break;
+		case 462:
+			{
+			INFO_PRINTF1(_L("...simulate Key Event 'Shift + M' ---> Changes to hex fep!"));
+			SendKey('M', EModifierRightShift);
+			TUint codes[] = {'0', '0', '0', '2', '1'};	// FEP 4 supports UTF-16, and need 5 digits for one Unicode value
+			for (int i = 0; i < sizeof(codes)/sizeof(TUint); i++)
+				{
+				INFO_PRINTF2(_L("...simulate Key Event '%d'"), codes[i]);
+				SendKey(codes[i]);
+				}
+			INFO_PRINTF1(_L("...simulate Key Event Enter"));
+			SendKey(EKeyEnter);
+			}
+			break;
+		case 463:
+			{
+			TUint codes[] = {'0', '0', '4', '1', '1'};	// FEP 4 supports UTF-16, and need 5 digit for one Unicode value
+			for (int i = 0; i < sizeof(codes)/sizeof(TUint); i++)
+				{
+				INFO_PRINTF2(_L("...simulate Key Event '%d'"), codes[i]);
+				SendKey(codes[i]);
+				}
+			INFO_PRINTF1(_L("...simulate Key Event Enter"));
+			SendKey(EKeyEnter);
+			}
+			break;
+		case 464:
+			{
+			TUint codes[] = {'0', '0', 'E', '0', '2'};	// FEP 4 supports UTF-16, and need 5 digit for one Unicode value
+			for (int i = 0; i < sizeof(codes)/sizeof(TUint); i++)
+				{
+				INFO_PRINTF2(_L("...simulate Key Event '%d'"), codes[i]);
+				SendKey(codes[i]);
+				}
+			INFO_PRINTF1(_L("...simulate Key Event Enter"));
+			SendKey(EKeyEnter);
+			}
+			break;
+		case 465:
+			{
+			TUint codes[] = {'0', '2', 'E', '8', '1'};	// FEP 4 supports UTF-16, and need 5 digit for one Unicode value
+			for (int i = 0; i < sizeof(codes)/sizeof(TUint); i++)
+				{
+				INFO_PRINTF2(_L("...simulate Key Event '%d'"), codes[i]);
+				SendKey(codes[i]);
+				}
+			INFO_PRINTF1(_L("...simulate Key Event Enter"));
+			SendKey(EKeyEnter);
+			}
+			break;
+		case 466:
+			{
+			TUint codes[] = {'0', '3', '0', '3', 'A'};	// FEP 4 supports UTF-16, and need 5 digit for one Unicode value
+			for (int i = 0; i < sizeof(codes)/sizeof(TUint); i++)
+				{
+				INFO_PRINTF2(_L("...simulate Key Event '%d'"), codes[i]);
+				SendKey(codes[i]);
+				}
+			INFO_PRINTF1(_L("...simulate Key Event Enter"));
+			SendKey(EKeyEnter);
+			}
+			break;
+		case 467:
+			{
+			TUint codes[] = {'0', '4', 'E', '1', '9'};	// FEP 4 supports UTF-16, and need 5 digit for one Unicode value
+			for (int i = 0; i < sizeof(codes)/sizeof(TUint); i++)
+				{
+				INFO_PRINTF2(_L("...simulate Key Event '%d'"), codes[i]);
+				SendKey(codes[i]);
+				}
+			INFO_PRINTF1(_L("...simulate Key Event Enter"));
+			SendKey(EKeyEnter);
+			}
+			break;
+		case 468:
+			{
+			TUint codes[] = {'0', 'A', 'D', '0', '0'};	// FEP 4 supports UTF-16, and need 5 digit for one Unicode value
+			for (int i = 0; i < sizeof(codes)/sizeof(TUint); i++)
+				{
+				INFO_PRINTF2(_L("...simulate Key Event '%d'"), codes[i]);
+				SendKey(codes[i]);
+				}
+			INFO_PRINTF1(_L("...simulate Key Event Enter"));
+			SendKey(EKeyEnter);
+			}
+			break;
+		case 469:
+			{
+			TUint codes[] = {'2', '0', '0', '0', '0'};
+			for (int i = 0; i < sizeof(codes)/sizeof(TUint); i++)
+				{
+				INFO_PRINTF2(_L("...simulate Key Event '%d'"), codes[i]);
+				SendKey(codes[i]);
+				}
+			INFO_PRINTF1(_L("...simulate Key Event Enter"));
+			SendKey(EKeyEnter);
+			}
+			break;
+		case 470:
+			{
+			TUint codes[] =  {'2', 'F', '8', '0', '0'};
+			for (int i = 0; i < sizeof(codes)/sizeof(TUint); i++)
+				{
+				INFO_PRINTF2(_L("...simulate Key Event '%d'"), codes[i]);
+				SendKey(codes[i]);
+				}
+			INFO_PRINTF1(_L("...simulate Key Event Enter"));
+			SendKey(EKeyEnter);
+			}
+			break;
+		case 471:
+			{
+			INFO_PRINTF1(_L("...simulate Key Event 'Shift + X' ---> test SimulateKeyEventsL!"));
+			SendKey('X', EModifierRightShift);
+			User::After(TTimeIntervalMicroSeconds32(2000000));
+			INFO_PRINTF1(_L("...simulate Key Event 'Shift + M' ---> Changes to Pinyin!"));
+			SendKey('M', EModifierRightShift);
+			User::After(TTimeIntervalMicroSeconds32(2000000));
+			}
+			break;
+		case 472:
+			{
+			INFO_PRINTF1(_L("Uninstall the FEP 4"));
+			iCoeEnv->InstallFepL(KNullUid);
+			User::After(TTimeIntervalMicroSeconds32(2000000));
+			SendKey(EKeyEnter);
+
+			RDebug::Print(_L("**************************************************************"));
+			RDebug::Print(_L("****           TI18N-FEPBASE-CIT-4001 Finished                      "));
+			RDebug::Print(_L("**************************************************************\n"));
+
+			RecordTestResultL();
+			}
+			break;
 
 //----------------------------------------------------------------------------------------------
 
@@ -840,10 +1010,10 @@
    @SYMTestCaseID 		UIF-FEPTEST-0012
    @SYMPREQ				0000
    @SYMTestCaseDesc  	Dismiss dialog.
-   @SYMTestPriority 	High 
+   @SYMTestPriority 	High
    @SYMTestStatus 		Implemented
    @SYMTestActions 		To test this functionality we simulate a key event to dismiss the dialog.
-   						When the dialog is closed, CTstTestTargetDialog::OkToExitL() is called and 
+   						When the dialog is closed, CTstTestTargetDialog::OkToExitL() is called and
    						general variables are set with the values from the dialog text editors.
    @SYMTestExpectedResults 	All global variables read as expected.
  */
@@ -855,10 +1025,10 @@
 			SetTestStepID(_L("UIF-FEPTEST-0012"));
 			INFO_PRINTF1(_L("Ssimulate Key Enter Event to dismiss the dialog"));
 			AutoTestManager().Cancel();
-			SendKey(EKeyEnter);			
+			SendKey(EKeyEnter);
 			}
 			break;
-			
+
 		case 502:
 			{
 			INFO_PRINTF1(_L("Wait for 2 seconds..."));
@@ -877,11 +1047,13 @@
 			INFO_PRINTF3(_L("gTextNormalNumEdwin was '%S' (expected '%S')"), &gTextNormalNumEdwin, &KExpectedTextNormalNumEdwin);
 			INFO_PRINTF3(_L("gTextKatakanaEdwin was '%S' (expected '%S')"), &gTextKatakanaEdwin, &KExpectedTextKatakanaEdwin);
 			INFO_PRINTF3(_L("gTextPhoneticalEdwin was '%S' (expected '%S')"), &gTextPhoneticalEdwin, &KExpectedTextPhoneticalEdwin);
+			INFO_PRINTF3(_L("gTextCJKEdwin was '%S' (expected '%S')"), &gTextCJKEdwin, &KExpectedTextCJKEdwin);
 
 			TEST(gTextNormalEdwin == KExpectedTextNormalEdwin);
 			TEST(gTextNormalNumEdwin == KExpectedTextNormalNumEdwin);
 			TEST(gTextKatakanaEdwin == KExpectedTextKatakanaEdwin);
 			TEST(gTextPhoneticalEdwin == KExpectedTextPhoneticalEdwin);
+			TEST(gTextCJKEdwin == KExpectedTextCJKEdwin);
 			RecordTestResultL();
 			CloseTMSGraphicsStep();
 			}
@@ -893,7 +1065,7 @@
 			}
 			break;
 		}
-		
+
 	}
 
 
@@ -910,7 +1082,7 @@
 	}
 
 
-/** 
+/**
   Handle the window events.\n
   Create a window server session and connect the client\n
   Create a client side handle for the server.\n
@@ -919,7 +1091,7 @@
 */
 void CFep1TestTargetUi::SendEventToWindowGroups(TWsEvent&	aEvent)
 	{
-    User::After(100000);
+User::After(100000);
 
 	RWsSession	ws;
 	TInt theRes = ws.Connect();
@@ -927,22 +1099,22 @@
 
 	RWindowGroup& winGroup = iCoeEnv->RootWin();
 	TInt theId = winGroup.Identifier();
-	
+
 	aEvent.SetType(EEventKeyDown);
 	aEvent.SetTimeNow();
 	ws.SendEventToWindowGroup(theId, aEvent);
-		
+
 	aEvent.SetType(EEventKey);
 	aEvent.SetTimeNow();
 	ws.SendEventToWindowGroup(theId, aEvent);
-	
- 	aEvent.SetType(EEventKeyUp);
+
+	aEvent.SetType(EEventKeyUp);
 	aEvent.SetTimeNow();
 	ws.SendEventToWindowGroup(theId, aEvent);
-	
+
 	ws.Close();
 	}
-	
+
 /**
   Handle the user defined events.\n
   Search for the resource file that support the language.\n
@@ -954,10 +1126,10 @@
 		{
 		CCoeEnv& coneEnvironment=*CCoeEnv::Static();
 		TFileName* resourceFileName=new(ELeave) TFileName(KFep1TestTargetResourceFilePath);
-	
+
 		TBuf8<128> buf;
 		buf.Copy(*resourceFileName);
-	
+
 		CleanupStack::PushL(resourceFileName);
 		BaflUtils::NearestLanguageFile(coneEnvironment.FsSession(), *resourceFileName);
 		TTstResourceFileId resourceFileId(coneEnvironment, coneEnvironment.AddResourceFileL(*resourceFileName));
@@ -969,17 +1141,17 @@
 		dlg->ExecuteLD(R_TFT_DIALOG);
 		CleanupStack::PopAndDestroy(&resourceFileId);
 		}
-	else 
+	else
 		{
-		CTestAppUi::HandleApplicationSpecificEventL(aType, aEvent);	
+		CTestAppUi::HandleApplicationSpecificEventL(aType, aEvent);
 		}
 	}
 
 
 /*************************************************************
- **  
+ **
  **  CTestFep1TargetStep
- **  
+ **
  *************************************************************/
 
 CTestFep1TargetStep::CTestFep1TargetStep()
@@ -992,10 +1164,10 @@
 	}
 
 
-/**  
+/**
   Call ConstructL() of CEikonEnv and initialize a pointer to CFep1TestTargetUi \n
   Set the application's user interface object \n
-  Call ConstructL() of CFep1TestTargetUi 
+  Call ConstructL() of CFep1TestTargetUi
 */
 void CTestFep1TargetStep::ConstructAppL(CEikonEnv* aCoe)
     { // runs inside a TRAP harness
@@ -1033,7 +1205,7 @@
 	__UHEAP_MARKEND;
 
 	INFO_PRINTF1(_L("...TestFep1Target finished!"));
-	
+
 	return TestStepResult();
 	}