diff -r 000000000000 -r eb1f2e154e89 fep/frontendprocessor/test/src/TFEP1TESTTARGET.CPP --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/fep/frontendprocessor/test/src/TFEP1TESTTARGET.CPP Tue Feb 02 01:02:04 2010 +0200 @@ -0,0 +1,1208 @@ +// Copyright (c) 2006-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: +// Launch the test dialog application with edit boxes and load the FEP. +// Create the character codes of the key events. +// Send them to the dialog box for the FEP to intercept and to display on the editboxes of the target dialog box. +// NOTE: This test is mostly automated as the result of the dialog boxes is checked. However, due to time constraints +// 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). +// +// + +/** + @file + @test + @internalComponent - Internal Symbian test code +*/ + + +#include +#include +#include + +#include + +#include "TFEP1TESTTARGET.h" +#include "TFEP1TESTTARGET.hrh" + + + +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"); + +// global variables +TBuf<16> gTextNormalEdwin; +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 +*/ +TTstResourceFileId::TTstResourceFileId(CCoeEnv& aConeEnvironment, TInt aResourceFileId) + :TCleanupItem(UnloadResourceFile, this), + iConeEnvironment(aConeEnvironment), + iResourceFileId(aResourceFileId) + { + } + +void TTstResourceFileId::UnloadResourceFile(TAny* aThis) + { + TTstResourceFileId& resourceFileId=*static_cast(aThis); + resourceFileId.iConeEnvironment.DeleteResourceFile(resourceFileId.iResourceFileId); + } + + + +/************************************************************* + ** + ** CTstTestTargetDialog - CEikDialog derived class + ** + *************************************************************/ + +/** + This fucntion is derived to perform the pre-layout dialog initialisation.\n + This is called by the dialog framework before the dialog is sized and laid out. \n + It is overloaded to initialise the control values that influence sizing and layout.\n +*/ +void CTstTestTargetDialog::PreLayoutDynInitL() + { + CEikEdwin& halfWidthKatakanaEdwin=*static_cast(Control(EControlIdHalfWidthKatakanaEdwin)); + TCoeInputCapabilities inputCapabilities=halfWidthKatakanaEdwin.InputCapabilities(); + inputCapabilities.SetCapabilities(TCoeInputCapabilities::EJapaneseKatakanaHalfWidth|TCoeInputCapabilities::ENavigation); + halfWidthKatakanaEdwin.SetInputCapabilitiesL(inputCapabilities); + CEikEdwin& phoneticAlphabetEdwin=*static_cast(Control(EControlIdPhoneticAlphabetEdwin)); + inputCapabilities=phoneticAlphabetEdwin.InputCapabilities(); + phoneticAlphabetEdwin.SetInputCapabilitiesL(TCoeInputCapabilities(TCoeInputCapabilities::EWesternAlphabetic|TCoeInputCapabilities::ENavigation, inputCapabilities.FepAwareTextEditor(), inputCapabilities.CaptionRetrieverForFep(), TUid::Uid(KTfep1Uid), this)); + CEikEdwin& cjkEdwin=*static_cast(Control(EControlIdCJKEdwin)); + inputCapabilities=cjkEdwin.InputCapabilities(); + inputCapabilities.SetCapabilities(TCoeInputCapabilities::EAllText|TCoeInputCapabilities::ENavigation); + cjkEdwin.SetInputCapabilitiesL(inputCapabilities); + } + + +TBool CTstTestTargetDialog::OkToExitL(TInt /*aKeyCode*/) + { + // Get fields text values... + CEikEdwin* edwinNormal = static_cast(Control(EControlIdNormalEdwin)); + edwinNormal->GetText(gTextNormalEdwin); + + CEikEdwin* edwinNormalNum = static_cast(Control(EControlIdNormalNumEdwin)); + edwinNormalNum->GetText(gTextNormalNumEdwin); + + CEikEdwin* edwinKatana = static_cast(Control(EControlIdHalfWidthKatakanaEdwin)); + edwinKatana->GetText(gTextKatakanaEdwin); + + CEikEdwin* edwinPhonetical = static_cast(Control(EControlIdPhoneticAlphabetEdwin)); + edwinPhonetical->GetText(gTextPhoneticalEdwin); + + CEikEdwin* edwinCJK = static_cast(Control(EControlIdCJKEdwin)); + edwinCJK->GetText(gTextCJKEdwin); + + //It's always ok to return OK in our case... + return ETrue; + } + + +/** + Flag TRUE for support of Phonetic alphabets +*/ +TBool CTstTestTargetDialog::SupportsPhoneticAlphabet() const + { + return ETrue; + } + + + + +/************************************************************* + ** + ** CFep1TestTargetUi + ** + *************************************************************/ + +CFep1TestTargetUi::CFep1TestTargetUi(CTmsTestStep* aStep) : + CTestAppUi(aStep, KNullDesC) + { + } + +CFep1TestTargetUi::~CFep1TestTargetUi() + { + } + +/** + Install the FEP.\n + Set the windows server event as User defined.\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 +*/ +void CFep1TestTargetUi::ConstructL() + { + CTestAppUi::ConstructL(); + + iCoeEnv->InstallFepL(KNullUid); + iCoeEnv->InstallFepL(KUidTFep1); + + TWsEvent theEvent; + theEvent.SetType(EEventUser); + + RWsSession ws; + TInt theRes = ws.Connect(); + + if(theRes == KErrNone) + { + RWindowGroup& winGroup = iCoeEnv->RootWin(); + theEvent.SetType(EEventUser + 1); + theEvent.SetTimeNow(); + TInt theId = winGroup.Identifier(); + ws.SendEventToWindowGroup(theId, theEvent); + } + ws.Close(); + } + + + + + +void CFep1TestTargetUi::RunTestStepL(TInt aStep) + { + switch(aStep) + { + +//---------------------------------------------------------------------------------------------- + +/** + @SYMTestCaseID UIF-FEPTEST-0004 + @SYMPREQ 0000 + @SYMTestCaseDesc Offer key events to the dialog having the TFEP1 activated. + @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. + @SYMTestExpectedResults When the dialog is dismissed, the text box reads as is expected. + */ + +//---------------------------------------------------------------------------------------------- + case 1: + SetTestStepID(_L("UIF-FEPTEST-0004")); + case 2: case 3: + { + TUint code = 'A' + aStep - 1; + INFO_PRINTF2(_L("...simulate Key Event '%d'"), code); + SendKey(code); + } + break; + + case 4: + { + INFO_PRINTF1(_L("...simulate Key Event Enter ---> Submits 'ABC'")); + SendKey(EKeyEnter); + } + break; + + 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); + } + break; + + 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); + } + break; + + case 17: + { + TUint code = 'G' + aStep - 17; + INFO_PRINTF2(_L("...simulate Key Event '%d'"), code); + SendKey(code); + } + break; + + case 18: + { + INFO_PRINTF1(_L("...simulate Key Event Enter ---> Submits 'GHIJ'")); + 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); + if(aStep == 23) + { + RecordTestResultL(); + } + } + break; + + +//---------------------------------------------------------------------------------------------- + +/** + @SYMTestCaseID UIF-FEPTEST-0005 + @SYMPREQ 0000 + @SYMTestCaseDesc Repeat the same as the other but changing mode (inline <--> non inline) + @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. + @SYMTestExpectedResults When the dialog is dismissed, the text box reads as is expected. + */ + +//---------------------------------------------------------------------------------------------- + + case 51: + { + SetTestStepID(_L("UIF-FEPTEST-0005")); + INFO_PRINTF1(_L("...simulate Key Event 'Shift + I' ---> Changes fep mode!")); + SendKey('I', EModifierRightShift); + } + break; + + 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); + } + break; + + 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); + } + break; + + 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); + } + break; + + case 68: + { + TUint code = 'Q' + aStep - 68; + INFO_PRINTF2(_L("...simulate Key Event '%d'"), code); + SendKey(code); + } + break; + + case 69: + { + INFO_PRINTF1(_L("...simulate Key Event Enter ---> Submits 'QRST'")); // Submit "QRST" ----> We should have "ABCGHIJKLMQRST" + 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); + if(aStep == 74) + { + RecordTestResultL(); + } + } + break; + + +//---------------------------------------------------------------------------------------------- + +/** + @SYMTestCaseID UIF-FEPTEST-0006 + @SYMPREQ 0000 + @SYMTestCaseDesc Test changing focus + @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. + @SYMTestExpectedResults When the dialog is dismissed, the text box reads as is expected. + */ + +//---------------------------------------------------------------------------------------------- + + case 101: + { + SetTestStepID(_L("UIF-FEPTEST-0006")); + INFO_PRINTF1(_L("...simulate Key Event 'Shift + N' ---> Moves the Fep window to dialog cursor!")); + SendKey('N', EModifierRightShift); + } + break; + + case 102: + { + INFO_PRINTF1(_L("...simulate Key Event 'Shift + F' ---> Changes focus!")); + SendKey('F', EModifierRightShift); + } + break; + + case 103: case 104: case 105: case 106: case 107: case 108: case 109: case 110: case 111: case 112: case 113: case 114: case 115: + { + INFO_PRINTF1(_L("...send several cursor right events to move the window")); + for (TInt ii=10; ii>0; --ii) + SendKey(EKeyRightArrow); + } + break; + + case 116: + { + INFO_PRINTF1(_L("...simulate Key Event Enter ---> Finishes moving the Fep window!")); + SendKey(EKeyEnter); + RecordTestResultL(); + } + break; + + +//---------------------------------------------------------------------------------------------- + +/** + @SYMTestCaseID UIF-FEPTEST-0007 + @SYMPREQ 0000 + @SYMTestCaseDesc Test TFEP1 in HEXadecimal mode + @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 '@' + @SYMTestExpectedResults When the dialog is dismissed, the text box reads as is expected. + */ + +//---------------------------------------------------------------------------------------------- + + case 151: + { + SetTestStepID(_L("UIF-FEPTEST-0007")); + INFO_PRINTF1(_L("...simulate Key Event 'Shift + M' ---> Changes to hex fep!")); + SendKey('M', EModifierRightShift); + } + break; + + case 153: + { + TUint code = '0'; + INFO_PRINTF2(_L("...simulate Key Event '%d'"), code); + SendKey(code); + } + break; + + case 154: + { + TUint code = '0'; + INFO_PRINTF2(_L("...simulate Key Event '%d'"), code); + SendKey(code); + } + break; + + case 155: + { + TUint code = '4'; + INFO_PRINTF2(_L("...simulate Key Event '%d'"), code); + SendKey(code); + } + break; + + case 156: + { + TUint code = '0'; + INFO_PRINTF2(_L("...simulate Key Event '%d'"), code); + SendKey(code); + } + break; + + case 157: + { + INFO_PRINTF1(_L("...simulate Key Event Enter ---> Submits '0040' ==> At symbol (@)")); + SendKey(EKeyEnter); + } + break; + + case 158: + { + INFO_PRINTF1(_L("...simulate Key Event 'Shift + M' ---> Changes back to normal fep!")); + SendKey('M', EModifierRightShift); + RecordTestResultL(); + } + break; + + +//---------------------------------------------------------------------------------------------- + +/** + @SYMTestCaseID UIF-FEPTEST-0008 + @SYMPREQ 0000 + @SYMTestCaseDesc Text selection within a dialog box editor. + @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 + application. + The selection of uncommited text and replacing it for new characters is also tested. + Simulate the selection of some of the characters in the box, and by means + of Fep capabilities, show what's been selected, what's after the selection, and + what's the text before the selection. + @SYMTestExpectedResults Fep shows the selection by means of User::InfoPrint() on the screen (partly manual) + When the dialog is dismissed, the text box reads as is expected. + */ + +//---------------------------------------------------------------------------------------------- + + case 201: + { + SetTestStepID(_L("UIF-FEPTEST-0008")); + INFO_PRINTF1(_L("Send cursor down events to move the next dialog")); + SendKey(EKeyDownArrow); + } + break; + + case 202: case 203: case 204: + { + TUint code = 'x' + aStep - 202; + INFO_PRINTF2(_L("...simulate Key Event '%d'"), code); + SendKey(code); + } + break; + + case 205: + { + INFO_PRINTF1(_L("...simulate Key Event 'Shift + W' ---> Change cursor type in case of inline editing!")); + SendKey('W', EModifierRightShift); + } + break; + + case 206: case 207: case 208: + { + INFO_PRINTF1(_L("...simulate Key Cursor 'shift + Left' ---> Selects non-submitted text")); + SendKey(EKeyLeftArrow, EModifierLeftShift|EModifierShift); + } + break; + + case 209: case 210: case 211: + { + TUint code = '1' + aStep - 209; + INFO_PRINTF2(_L("...simulate Key Event '%d'"), code); //should replace uncommitted 'xyz' to '123' + SendKey(code); + } + break; + + case 212: + { + INFO_PRINTF1(_L("...simulate Key Event Enter ---> Submits '123'")); + SendKey(EKeyEnter); + } + break; + + case 213: + { + INFO_PRINTF1(_L("...simulate Key Event 'Shift + I' ---> Changes fep mode!")); + SendKey('I', EModifierRightShift); + } + break; + + case 214: case 215: case 216: + { + TUint code = 'x' + aStep - 214; + INFO_PRINTF2(_L("...simulate Key Event '%d'"), code); + SendKey(code); + } + break; + + case 217: + { + INFO_PRINTF1(_L("...simulate Key Event 'Shift + W' ---> Change cursor type in case of inline editing!")); + SendKey('W', EModifierRightShift); + } + break; + + case 218: case 219: case 220: + { + INFO_PRINTF1(_L("...simulate Key Cursor 'shift + Right' ---> Selects non-submitted text")); + SendKey(EKeyLeftArrow, EModifierLeftShift|EModifierShift); + } + break; + + case 221: case 222: case 223: + { + TUint code = '4' + aStep - 221; + INFO_PRINTF2(_L("...simulate Key Event '%d'"), code); //should replace uncommitted 'xyz' to '456' + SendKey(code); + } + break; + + case 224: + { + INFO_PRINTF1(_L("...simulate Key Event Enter ---> Submits '456'")); + 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); + } + break; + + case 228: + { + INFO_PRINTF1(_L("...simulate Key Cursor 'shift + Right' ---> Selects 4!")); + SendKey(EKeyRightArrow, EModifierLeftShift|EModifierShift); + } + break; + + case 229: + { + INFO_PRINTF1(_L("...simulate Key Event 'Shift + A' ---> Tells about what's AFTER the selected 4!")); // Should be 56 + 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); + } + 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); + } + break; + + case 232: case 233: + { + TUint code = '0'; + INFO_PRINTF2(_L("...simulate Key Event '%d'"), code); + SendKey(code); + } + break; + + case 234: + { + INFO_PRINTF1(_L("...simulate Key Event Enter ---> Submits '00'")); // We should have 1230056 + SendKey(EKeyEnter); + RecordTestResultL(); + } + break; + + + +//---------------------------------------------------------------------------------------------- + +/** + @SYMTestCaseID UIF-FEPTEST-0009 + @SYMPREQ 0000 + @SYMTestCaseDesc Fep state within a dialog box editor. + @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 + @SYMTestExpectedResults The state is maintained even though we move across to other text editor boxes (partly manual) + */ + +//---------------------------------------------------------------------------------------------- + case 251: + SetTestStepID(_L("UIF-FEPTEST-0009")); + + case 252: case 253: case 254: case 255: + { + INFO_PRINTF1(_L("...simulate Key Event 'Shift + T' ---> Changes State variable!")); + SendKey('T', EModifierRightShift); + } + break; + + case 256: + { + INFO_PRINTF1(_L("Send cursor up events to move the next dialog")); + SendKey(EKeyUpArrow); + } + break; + + case 257: + { + INFO_PRINTF1(_L("Send cursor down events to move the next dialog")); + 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); + if(aStep == 262) + { + RecordTestResultL(); + } + } + break; + + +//---------------------------------------------------------------------------------------------- + +/** + @SYMTestCaseID UIF-FEPTEST-0010 + @SYMPREQ 0000 + @SYMTestCaseDesc Kata-kata dialog box editor. + @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 + they appear on the box accordingly. + @SYMTestExpectedResults When the dialog is dismissed, the text box reads as is expected. + */ + +//---------------------------------------------------------------------------------------------- + + case 351: + { + SetTestStepID(_L("UIF-FEPTEST-0010")); + INFO_PRINTF1(_L("Send cursor down events to move the next dialog")); + SendKey(EKeyDownArrow); + } + break; + + case 352: case 353: case 354: + { + SetTestStepID(_L("UIF-FEPTEST-0010")); + TUint code = 'E' + aStep - 352; + INFO_PRINTF2(_L("...simulate Key Event '%d'"), code); + SendKey(code); + if(aStep == 354) + { + RecordTestResultL(); + } + } + break; + + +//---------------------------------------------------------------------------------------------- + +/** + @SYMTestCaseID UIF-FEPTEST-0011 + @SYMPREQ 0000 + @SYMTestCaseDesc Phoneticall dialog box editor. + @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 + 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. + @SYMTestExpectedResults When the dialog is dismissed, the text box reads as is expected. + */ + +//---------------------------------------------------------------------------------------------- + + case 451: + { + SetTestStepID(_L("UIF-FEPTEST-0011")); + INFO_PRINTF1(_L("Send cursor down events to move the next dialog")); + SendKey(EKeyDownArrow); + } + break; + + 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); + } + break; + + case 456: + { + INFO_PRINTF1(_L("Uninstall the FEP")); + iCoeEnv->InstallFepL(KNullUid); + User::After(TTimeIntervalMicroSeconds32(2000000)); + } + break; + + case 457: case 458: case 459: + { + TUint code = 'M' + aStep - 457; + INFO_PRINTF2(_L("...simulate Key Event '%d'"), code); + SendKey(code); + } + break; + + case 460: + { + //INFO_PRINTF1(_L("...simulate Key Event Enter ---> Submits 'MNO' (not Fep installed --> No Alphabetical!")); + //SendKey(EKeyEnter); + RecordTestResultL(); + } + 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); + INFO_PRINTF1(_L("Install the FEP 1")); + iCoeEnv->InstallFepL(KUidTFep1); + 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', '2', '1'}; + for (int i = 0; i < sizeof(codes)/sizeof(TUint); i++) + { + INFO_PRINTF2(_L("...simulate Key Event '%d'"), codes[i]); + SendKey(codes[i]); + User::After(TTimeIntervalMicroSeconds32(200000)); + } + INFO_PRINTF1(_L("...simulate Key Event Enter")); + SendKey(EKeyEnter); + } + break; + case 463: + { + TUint codes[] = {'0', '4', '1', '1'}; + for (int i = 0; i < sizeof(codes)/sizeof(TUint); i++) + { + INFO_PRINTF2(_L("...simulate Key Event '%d'"), codes[i]); + SendKey(codes[i]); + User::After(TTimeIntervalMicroSeconds32(200000)); + } + INFO_PRINTF1(_L("...simulate Key Event Enter")); + SendKey(EKeyEnter); + } + break; + case 464: + { + TUint codes[] = {'0', 'E', '0', '2'}; + for (int i = 0; i < sizeof(codes)/sizeof(TUint); i++) + { + INFO_PRINTF2(_L("...simulate Key Event '%d'"), codes[i]); + SendKey(codes[i]); + User::After(TTimeIntervalMicroSeconds32(200000)); + } + INFO_PRINTF1(_L("...simulate Key Event Enter")); + SendKey(EKeyEnter); + } + break; + + case 465: + { + TUint codes[] = {'2', 'E', '8', '1'}; + for (int i = 0; i < sizeof(codes)/sizeof(TUint); i++) + { + INFO_PRINTF2(_L("...simulate Key Event '%d'"), codes[i]); + SendKey(codes[i]); + User::After(TTimeIntervalMicroSeconds32(1000000)); + } + INFO_PRINTF1(_L("...simulate Key Event Enter")); + SendKey(EKeyEnter); + } + break; + case 466: + { + TUint codes[] = {'3', '0', '3', 'A'}; + for (int i = 0; i < sizeof(codes)/sizeof(TUint); i++) + { + INFO_PRINTF2(_L("...simulate Key Event '%d'"), codes[i]); + SendKey(codes[i]); + User::After(TTimeIntervalMicroSeconds32(1000000)); + } + INFO_PRINTF1(_L("...simulate Key Event Enter")); + SendKey(EKeyEnter); + } + break; + case 467: + { + TUint codes[] = {'4', 'E', '1', '9'}; + for (int i = 0; i < sizeof(codes)/sizeof(TUint); i++) + { + INFO_PRINTF2(_L("...simulate Key Event '%d'"), codes[i]); + SendKey(codes[i]); + User::After(TTimeIntervalMicroSeconds32(1000000)); + } + INFO_PRINTF1(_L("...simulate Key Event Enter")); + SendKey(EKeyEnter); + } + break; + case 468: + { + TUint codes[] = {'A', 'D', '0', '0'}; + for (int i = 0; i < sizeof(codes)/sizeof(TUint); i++) + { + INFO_PRINTF2(_L("...simulate Key Event '%d'"), codes[i]); + SendKey(codes[i]); + User::After(TTimeIntervalMicroSeconds32(1000000)); + } + INFO_PRINTF1(_L("...simulate Key Event Enter")); + SendKey(EKeyEnter); + } + break; + + case 469: + { + INFO_PRINTF1(_L("Uninstall the FEP")); + iCoeEnv->InstallFepL(KNullUid); + INFO_PRINTF1(_L("Install the FEP 4")); + iCoeEnv->InstallFepL(KUidTFep4); + User::After(TTimeIntervalMicroSeconds32(2000000)); + } + break; + + case 471: + { + 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]); + User::After(TTimeIntervalMicroSeconds32(1000000)); + } + INFO_PRINTF1(_L("...simulate Key Event Enter")); + SendKey(EKeyEnter); + } + break; + case 472: + { + 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]); + User::After(TTimeIntervalMicroSeconds32(1000000)); + } + INFO_PRINTF1(_L("...simulate Key Event Enter")); + SendKey(EKeyEnter); + } + break; + + case 473: + { + 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 474: + { + INFO_PRINTF1(_L("...simulate Key Event 'Shift + M' ---> Changes back to Plain!")); + SendKey('M', EModifierRightShift); + User::After(TTimeIntervalMicroSeconds32(2000000)); + } + break; + case 475: + { + INFO_PRINTF1(_L("Uninstall the FEP")); + iCoeEnv->InstallFepL(KNullUid); + SendKey(EKeyEnter); + RecordTestResultL(); + } + break; + +//---------------------------------------------------------------------------------------------- + +/** + @SYMTestCaseID UIF-FEPTEST-0012 + @SYMPREQ 0000 + @SYMTestCaseDesc Dismiss dialog. + @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 + general variables are set with the values from the dialog text editors. + @SYMTestExpectedResults All global variables read as expected. + */ + +//---------------------------------------------------------------------------------------------- + + case 501: + { + SetTestStepID(_L("UIF-FEPTEST-0012")); + INFO_PRINTF1(_L("Ssimulate Key Enter Event to dismiss the dialog")); + AutoTestManager().Cancel(); + SendKey(EKeyEnter); + } + break; + + case 502: + { + INFO_PRINTF1(_L("Wait for 2 seconds...")); + User::After(TTimeIntervalMicroSeconds32(2000000)); + } + break; + + case 503: + { + INFO_PRINTF1(_L("Checking dialog values...")); + INFO_PRINTF3(_L("gTextNormalEdwin was '%S' (expected '%S')"), &gTextNormalEdwin, &KExpectedTextNormalEdwin); + 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(); + } + break; + + case 504: + { + AutoTestManager().FinishAllTestCases(CAutoTestManager::EPass); + } + break; + } + + } + + + +void CFep1TestTargetUi::SendKey(TUint aCode, TUint aModifiers, TInt aRepeats, TInt aScanCode) + { + TWsEvent theEvent; + TKeyEvent *theKey = theEvent.Key(); + theKey->iScanCode = aScanCode; + theKey->iModifiers = aModifiers; + theKey->iRepeats = aRepeats; + theKey->iCode = aCode; + SendEventToWindowGroups(theEvent); + } + + +/** + Handle the window events.\n + Create a window server session and connect the client\n + Create a client side handle for the server.\n + Set the window event type and call the SendEventToWindowGroup().\n + Close the session on completion \n +*/ +void CFep1TestTargetUi::SendEventToWindowGroups(TWsEvent& aEvent) + { +User::After(100000); + + RWsSession ws; + TInt theRes = ws.Connect(); + TEST(theRes == KErrNone); + + 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.SetTimeNow(); + ws.SendEventToWindowGroup(theId, aEvent); + + ws.Close(); + } + +/** + Handle the user defined events.\n + Search for the resource file that support the language.\n + Adds the specified resource file to the list maintained by CCoeEnv. \n +*/ +void CFep1TestTargetUi::HandleApplicationSpecificEventL(TInt aType,const TWsEvent& aEvent) + { + if(aEvent.Type() == (EEventUser + 1)) + { + 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)); + CleanupStack::PopAndDestroy(resourceFileName); + CleanupStack::PushL(resourceFileId); + CTstTestTargetDialog* dlg = new(ELeave) CTstTestTargetDialog; + + AutoTestManager().StartAutoTest(); + dlg->ExecuteLD(R_TFT_DIALOG); + CleanupStack::PopAndDestroy(&resourceFileId); + } + else + { + CTestAppUi::HandleApplicationSpecificEventL(aType, aEvent); + } + } + + +/************************************************************* + ** + ** CTestFep1TargetStep + ** + *************************************************************/ + +CTestFep1TargetStep::CTestFep1TargetStep() + { + SetTestStepName(KFep1TestTargetStep); + } + +CTestFep1TargetStep::~CTestFep1TargetStep() + { + } + + +/** + Call ConstructL() of CEikonEnv and initialize a pointer to CFep1TestTargetUi \n + Set the application's user interface object \n + Call ConstructL() of CFep1TestTargetUi +*/ +void CTestFep1TargetStep::ConstructAppL(CEikonEnv* aCoe) + { // runs inside a TRAP harness + aCoe->ConstructL(); + CTestAppUi* appUi= new (ELeave) CFep1TestTargetUi(this); + aCoe->SetAppUi(appUi); + appUi->ConstructL(); + } + + +/** + Entry function for the test steps.\n + Provide an active environment for creating controls and utility functions \n + Launches the application using ExecuteD().\n + */ +TVerdict CTestFep1TargetStep::doTestStepL() + { + PreallocateHALBuffer(); + + INFO_PRINTF1(_L("TestFep1Target started...")); + + __UHEAP_MARK; + + CEikonEnv* coe=new(ELeave) CEikonEnv; + TRAPD(err,ConstructAppL(coe)); + + if (!err) + coe->ExecuteD(); + else + { + delete coe; + SetTestStepResult(EFail); + } + + __UHEAP_MARKEND; + + INFO_PRINTF1(_L("...TestFep1Target finished!")); + + return TestStepResult(); + } + +