'FastTest.inc - definitions/declarations for Fast Test routines ' ' Copyright (c) 1991-1992, Microsoft Corporation. All rights reserved. ' 'Purpose: ' This file declares the functions, constants and variables ' used by the Fast Test routines. ' 'NOTES: ' A common code sequence is used throughout to catch unexpected errors ' using the ON ERROR command. The sequence is explained in this note ' but not each time that it is used. ' ' gErrorType = ET_NEXT ' Global variable to indicate how to handle ' ' an unexpected error: ' ' ET_NEXT : save that error happened ' ' and continue on next statement ' ' ET_NOTHING : let driver catch unexpected ' ' errors with message ' ' ET_LOG : error happened in log routine ' ' ' some code that could cause runtime errors ' fh1% = FREEFILE ' out of handles? ' OPEN stFileSpec1$ FOR INPUT AS #fh1% ' file doesn't exist? ' fh2% = FREEFILE ' out of handles? ' OPEN stFileSpec2$ FOR INPUT AS #fh2% ' file doesn't exist? ' ' IF gfError THEN ' since ET_NEXT was used above, we would ' ' execute this block if an error had ' ' occurred. ' XLogFailure "Could not open files for XFileCmp" ' log a failure ' ' specific to this section of code ' ' if XSetTerminate is called to have scripts continue in event ' ' of errors, then the script will continue executing here ' gErrorType = ET_NOTHING ' reset so other unexpected errors are ' ' caught ' gfError = FALSE ' reset because we logged this already ' EXIT SUB ' can't continue with this function, ' ' something went wrong ' END IF '$DEFINE TESTCTRL '$DEFINE TESTEVNT '$INCLUDE 'MSTEST.inc' '$INCLUDE 'WNAPIDEC.INC' ' XLog constants to determine where to log information to CONST LOG_DISK = 2 'log to disk CONST LOG_SCREEN = 4 'log to screen (viewport in testdrvr) CONST LOG_COM1 = 8 'log to COM1 port CONST LOG_COM2 = 16 'log to COM2 port CONST LOG_MSGBOX = 32 'log the string in a msgbox (Pause in testdrvr) ' Mouse button constants that map to QueMouse function names, X functions ' can use either ones CONST LBUTTON% = VK_LBUTTON CONST MBUTTON% = VK_MBUTTON CONST RBUTTON% = VK_RBUTTON 'Global to be used to describe Log Options by ORing above Const's GLOBAL gfLogOptions% 'Global to be used to save above flag when logging is temporarily turned off. GLOBAL gfTmpLogOptions% gfLogOptions = LOG_SCREEN 'default to showing in viewport gfTmpLogOptions = LOG_SCREEN 'default to showing in viewport GLOBAL gsCurrentDir$ gsCurrentDir$ = curdir$ ' get current directory that started execution ' Global variable to hold log file name GLOBAL gsLogFileName$ gsLogFileName$ = gsCurrentDir$ + "\FASTTEST.LOG" ' Global variable to hold string to use as the keystrokes necessary ' to close the app in the case of errors GLOBAL gsCleanup$ gsCleanup$ = "{esc 5}%( )c" ' five escapes, alt-space C (for close) ' Global variable to hold class name of app GLOBAL gsAppClassname$ gsAppClassname$ = "" ' Global variable to hold state of whether to terminate on XLogFailure GLOBAL gfTerminate% gfTerminate% = TRUE ' default to terminate at first failure ' Global variable that indicates if failure occured GLOBAL gfFailure% gfFailure% = FALSE 'Global variable that indicates an ON ERROR occurred GLOBAL gfError% gfError% = FALSE 'Global variable that is the string value for the dialog window class GLOBAL gsDialogClass$ gsDialogClass$ = "#32770" ' Error Type constants (don't use 0) CONST ET_NOTHING = 1 ' no handling, log unexpected runtime error CONST ET_NEXT = 2 ' flag error, continue next statement CONST ET_LOG = 3 ' error happened in log routines, inform user elsewise 'Global variable that shows what type of error to handle GLOBAL gErrorType% gErrorType% = ET_NOTHING 'Prototypes from FTestLog.mst DECLARE SUB XSetLogFilename(sFilename$) DECLARE SUB XSetTerminate(fTerminate%) DECLARE SUB XLog (stLog$) DECLARE SUB XLogBanner(lpszInput$) DECLARE SUB XLogWarning(lpszInput$) DECLARE SUB XLogFailure(stFailure$) DECLARE SUB XFailureCheck DECLARE SUB XSetLogOptions (wLogOptions%) DECLARE SUB XLogOff () DECLARE SUB XLogOn () DECLARE SUB XDialogBoxExists(s$) DECLARE SUB XDialogBoxNotExists(s$) DECLARE SUB XWaitDialogBox(s$, WaitTime%) DECLARE SUB XButtonExists(stButton$) DECLARE SUB XButtonNotExists(stButton$) DECLARE SUB XButtonEnabled(stButton$) DECLARE SUB XButtonNotEnabled(stButton$) DECLARE SUB XClickButton(stButtonName$) DECLARE SUB XListBoxExists(stListBox$) DECLARE SUB XListBoxNotExists(stListBox$) DECLARE SUB XFocusListBox(stListBox$) DECLARE SUB XListBoxItemExists (stListBox$, stListBoxItem$) DECLARE SUB XListBoxItemNotExists (stListBox$, stListBoxItem$) DECLARE SUB XClickListBoxItem (stListBox$, stListBoxItem$) DECLARE SUB XDblClickListBoxItem (stListBox$, stListBoxItem$) DECLARE SUB XComboBoxExists(stComboBox$) DECLARE SUB XComboBoxNotExists(stComboBox$) DECLARE SUB XFocusComboBox(stComboBox$) DECLARE SUB XComboBoxItemExists (stComboBox$, stComboBoxItem$) DECLARE SUB XComboBoxItemNotExists (stComboBox$, stComboBoxItem$) DECLARE SUB XClickComboBoxItem (stComboBox$, stComboBoxItem$) DECLARE SUB XDblClickComboBoxItem (stComboBox$, stComboBoxItem$) DECLARE SUB XCheckBoxExists(stCheckBox$) DECLARE SUB XCheckBoxNotExists(stCheckBox$) DECLARE SUB XCheckBoxChecked(stCheckBox$) DECLARE SUB XCheckBoxNotChecked(stCheckBox$) DECLARE SUB XCheckBoxEnabled(stCheckBox$) DECLARE SUB XCheckBoxNotEnabled(stCheckBox$) DECLARE SUB XClickCheckBox(stCheckBox$) DECLARE SUB XEditTextExists(stEditText$) DECLARE SUB XEditTextNotExists(stEditTextNot$) DECLARE SUB XSetEditText (stEditCaption$, stEditText$) DECLARE SUB XOptionButtonExists(stOptionButton$) DECLARE SUB XOptionButtonNotExists(stOptionButton$) DECLARE SUB XOptionButtonEnabled(stOptionButton$) DECLARE SUB XOptionButtonNotEnabled(stOptionButton$) DECLARE SUB XOptionButtonChecked(stOptionButton$) DECLARE SUB XOptionButtonNotChecked(stOptionButton$) DECLARE SUB XClickOptionButton(stOptionButton$) DECLARE FUNCTION BDialogBoxExists%(s$) DECLARE FUNCTION BButtonExists%(stButtonName$) DECLARE FUNCTION BButtonEnabled%(stButtonName$) DECLARE FUNCTION BListBoxExists%(stListBox$) DECLARE FUNCTION IGetListBoxItemCount%(stListBox$) DECLARE FUNCTION BListBoxItemExists%(stListBox$, stListBoxItem$) DECLARE FUNCTION SGetListBoxItemText$(stListBox$) DECLARE FUNCTION BComboBoxExists%(stComboBox$) DECLARE FUNCTION IGetComboBoxItemCount%(stComboBox$) DECLARE FUNCTION BComboBoxItemExists%(stComboBox$, stComboBoxItem$) DECLARE FUNCTION SGetComboBoxItemText$(stComboBox$) DECLARE FUNCTION BCheckBoxExists%(stCheckBox$) DECLARE FUNCTION BCheckBoxChecked%(stCheckBox$) DECLARE FUNCTION BCheckBoxEnabled%(stCheckBox$) DECLARE FUNCTION BEditTextExists%(stEditText$) DECLARE FUNCTION SGetEditText$(stEditCaption$) DECLARE FUNCTION BOptionButtonExists%(stOptionButton$) DECLARE FUNCTION BOptionButtonEnabled%(stOptionButton$) DECLARE FUNCTION BOptionButtonChecked%(stOptionButton$) 'Prototypes from FTestKey.mst DECLARE SUB XKey (s$) DECLARE SUB XAlt (s$) DECLARE SUB XCtrl (s$) DECLARE SUB XShift (s$) DECLARE SUB XCtrlAlt (s$) DECLARE SUB XAltShift (s$) DECLARE SUB XCtrlShift (s$) DECLARE SUB XCtrlAltShift (s$) DECLARE SUB XText(s$) DECLARE SUB XEnter(s$) DECLARE SUB XSelectMenuItem(stMenu$,stMenuItem$,stHMenuItem$) DECLARE SUB XMenuItemExists(stMenu$,stMenuItem$, stHMenuItem$) DECLARE SUB XMenuItemNotExists(stMenu$,stMenuItem$, stHMenuItem$) DECLARE SUB XMenuItemGrayed(stMenu$,stMenuItem$, stHMenuItem$) DECLARE SUB XMenuItemNotGrayed(stMenu$,stMenuItem$, stHMenuItem$) DECLARE SUB XMenuItemChecked(stMenu$,stMenuItem$, stHMenuItem$) DECLARE SUB XMenuItemNotChecked(stMenu$,stMenuItem$, stHMenuItem$) DECLARE SUB XMenuItemEnabled(stMenu$,stMenuItem$, stHMenuItem$) DECLARE SUB XMenuItemNotEnabled(stMenu$,stMenuItem$, stHMenuItem$) DECLARE SUB XCaptionExists(stCaption$) DECLARE SUB XCaptionNotExists(stCaption$) DECLARE SUB XZoomWindow DECLARE SUB XMaxWindow DECLARE SUB XWindowMaximized DECLARE SUB XWindowNotMaximized DECLARE SUB XMinWindow DECLARE SUB XWindowMinimized DECLARE SUB XWindowNotMinimized DECLARE SUB XRestoreWindow DECLARE SUB XSizeActiveWindow (iXPixels%, iYPixels%, fAbsOrRel%) DECLARE SUB XMoveActiveWindow (iXPixels%, iYPixels%, fAbsOrRel%) DECLARE FUNCTION SKeyString$(s$) DECLARE FUNCTION SHideKeys$(s$) DECLARE FUNCTION BMenuItemExists%(stMenu$,stMenuItem$,stHMenuItem$) DECLARE FUNCTION IGetMenuCount%(stMenu$, stMenuItem$) DECLARE FUNCTION SGetMenuItemText$(stMenu$,stMenuItem$, iIndex%) DECLARE FUNCTION BMenuItemGrayed%(stMenu$, stMenuItem$, stHMenuItem$) DECLARE FUNCTION BMenuItemChecked%(stMenu$, stMenuItem$, stHMenuItem$) DECLARE FUNCTION BMenuItemEnabled%(stMenu$,stMenuItem$, stHMenuItem$) DECLARE FUNCTION SGetCaption$() DECLARE FUNCTION BWindowMaximized% DECLARE FUNCTION BWindowMinimized% 'Prototypes from FTestUtl.mst DECLARE SUB XFileExists(stFileSpec$) DECLARE SUB XFileNotExists(stFileSpec$) DECLARE SUB XFileCmp(stFileSpec1$,stFileSpec2$) DECLARE SUB XFileNotCmp(stFileSpec1$,stFileSpec2$) DECLARE SUB XDeleteFile(stFileSpec$) DECLARE SUB XDeleteFileIfExists(stFileSpec$) DECLARE SUB XCreateFile(stFileSpec$,s$) DECLARE SUB XAppendFile(stFileSpec$,s$) DECLARE SUB XWaitMessageFile(s$,Message$, WaitTime%) DECLARE SUB XCWDCmp(s$) DECLARE SUB XCWDNotCmp(s$) DECLARE SUB XDriveCmp(s$) DECLARE SUB XDriveNotCmp(s$) DECLARE SUB XChangeCWD(s$) DECLARE SUB XCreateDir(s$) DECLARE SUB XChangeDrive(s$) DECLARE SUB XStartApp(stAppName$, stClassname$) DECLARE SUB XSetCleanup (sCleanup$) DECLARE SUB XDoCleanup DECLARE SUB XMoveMouse (x%, y%) DECLARE SUB XClickMouse(button%, x%, y%) DECLARE SUB XDblClickMouse(button%, x%, y%) DECLARE SUB XDragMouse (button%, Begx%, Begy%, Endx%, Endy%) DECLARE SUB XClipBoardCmp (s$) DECLARE SUB XClipBoardNotCmp (s$) DECLARE FUNCTION BFileExists%(stFileSpec$) DECLARE FUNCTION BFileCmp%(stFileSpec1$,stFileSpec2$) DECLARE FUNCTION BCWDCmp%(s$) DECLARE FUNCTION BDriveCmp%(s$) DECLARE FUNCTION HStartApp%(stAppName$) DECLARE FUNCTION BClipBoardCmp (s$) '$INCLUDE 'FTestLog.mst' '$INCLUDE 'FTestKey.mst' '$INCLUDE 'FTestUtl.mst' ' These routines have to be after the above includes so that ' the functions used are declared ON END XDoCleanup ' Set a UAE trap and log failure if one occurs TRAP UAETrap FROM "TESTDRVR.EXE" XSetTerminate TRUE XLogFailure "Application UAEed" END TRAP ' in the FastTest code, gErrorType will be set to one of the following ' CASE items to be handled and set back to ET_NOTHING when the particular ' place where an error could occur is past. ON ERROR GOTO XErrorHandler GOTO UsersCode ' branch around code used by On Error XErrorHandler: ' execute here on error conditions SELECT CASE gErrorType CASE 0 XSetTerminate TRUE XLogFailure "Internal FastTest Error" ' catch undeclared ET vars CASE ET_NOTHING XSetTerminate TRUE XLogFailure "Unexpected RunTime error;" + ERF + ":" + STR$(ERR) + " " + ERROR$(ERR) CASE ET_NEXT ' Code that uses this will check the global error variable ' and log an appropriate error if one occurred gfError = TRUE RESUME NEXT CASE ET_LOG ' something happened during logging, let user know Print "****** A Log error occurred ******" Pause "****** A Log error occurred ******" END END SELECT XSetTerminate TRUE XLogFailure "Internal FastTest error" UsersCode: