'FTESTUtl.inc - definitions for Fast Test Utility routines ' ' Copyright (c) 1991-1992, Microsoft Corporation. All rights reserved. ' 'Purpose: ' This file defines the utility functions of the Fast Test functionality ' 'NOTES: ' See FASTTEST.INC for description of the Error catching that is coded ' throughout this module. '********************************************************** '***************** File Subroutines *********************** '********************************************************** ' ' XFileExists(stFileSpec$) ' ' Description: ' Checks that stFileSpec$ exists. ' logs a failure if it can't find it (them; accept wildcards) ' ' Parameters: ' stFileSpec$ - file specification ' ' Returns: ' nothing ' ' Example: ' XFileExists "*.bak" ' ' SUB XFileExists(stFileSpec$) STATIC IF NOT EXISTS(stFileSpec$) THEN XLogFailure stFileSpec$ + " doesn't exist" END IF END SUB ' ' XFileNotExists(stFileSpec$) ' ' Description: ' Checks that stFileSpec$ doesn't exist. ' logs a failure if it finds it (them; accepts wildcards) ' ' Parameters: ' stFileSpec$ - file specification ' ' Returns: ' nothing ' ' Example: ' XFileNotExists "*.bak" ' ' SUB XFileNotExists(stFileSpec$) STATIC IF EXISTS(stFileSpec$) THEN XLogFailure stFileSpec$ + " exists" END IF END SUB ' ' BFileExists(stFileSpec$) ' ' Description: ' Checks if stFileSpec$ exists ' ' Parameters: ' stFileSpec$ - file specification ' ' Returns: ' TRUE if it exists, FALSE if not ' ' ' FUNCTION BFileExists%(stFileSpec$) STATIC BFileExists = EXISTS(stFileSpec$) END FUNCTION ' ' XFileCmp(stFileSpec1$,stFileSpec2$) ' ' Description: ' Compares two files, line by line ' Logs a Failure if the files don't exist or are different ' ' Parameters: ' stFileSpec1$,stFileSpec2 - file specifications ' ' Returns: ' nothing ' ' Example: ' XFileCmp "Foo.dat","foo.bsl" ' ' ' SUB XFileCmp(stFileSpec1$,stFileSpec2$) STATIC DIM fh1% ' file handle of first file DIM fh2% ' file handle of second file DIM line1$ ' line from first file DIM line2$ ' line from second file DIM done ' flag to stop looping DIM diff ' flag to indicate if files compare gErrorType = ET_NEXT fh1% = FREEFILE OPEN stFileSpec1$ FOR INPUT AS #fh1% fh2% = FREEFILE OPEN stFileSpec2$ FOR INPUT AS #fh2% IF gfError THEN XLogFailure "Could not open files for XFileCmp" gErrorType = ET_NOTHING gfError = FALSE EXIT SUB END IF done = FALSE diff = FALSE IF EOF(fh1%) AND EOF(fh2%) THEN done = TRUE ELSEIF EOF(fh1%) OR EOF(fh2%) THEN diff = TRUE done = TRUE END IF WHILE NOT done LINE INPUT #fh1%,line1$ LINE INPUT #fh2%,line2$ IF gfError THEN XLogFailure "XFileCmp INPUT or EOF errors" gErrorType = ET_NOTHING gfError = FALSE EXIT SUB END IF IF line1$ <> line2$ THEN done = TRUE diff = TRUE END IF IF NOT done AND EOF(fh1%) AND EOF(fh2%) THEN done = TRUE END IF IF NOT done AND (EOF(fh1%) OR EOF(fh2%)) THEN diff = TRUE done = TRUE END IF WEND CLOSE #fh1% CLOSE #fh2% IF gfError THEN XLogFailure "XFileCmp CLOSE errors" gErrorType = ET_NOTHING gfError = FALSE EXIT SUB END IF gErrorType = ET_NOTHING IF diff THEN XLogFailure "Files " + stFileSpec1$ + "," + stFileSpec2$ + " don't compare" END IF END SUB ' ' XFileNotCmp(stFileSpec1$,stFileSpec2$) ' ' Description: ' Compares two files, line by line ' Logs a Failure if the files don't exist or are same ' ' Parameters: ' stFileSpec1$,stFileSpec2 - file specifications ' ' Returns: ' nothing ' ' Example: ' XFileNotCmp "Foo.dat","foo.bsl" ' ' ' SUB XFileNotCmp(stFileSpec1$,stFileSpec2$) STATIC DIM fh1% ' file handle of first file DIM fh2% ' file handle of second file DIM line1$ ' line from first file DIM line2$ ' line from second file DIM done ' flag to stop looping DIM diff ' flag to indicate if files compare gErrorType = ET_NEXT fh1% = FREEFILE OPEN stFileSpec1$ FOR INPUT AS #fh1% fh2% = FREEFILE OPEN stFileSpec2$ FOR INPUT AS #fh2% IF gfError THEN XLogFailure "Could not open files for XFileNotCmp" gErrorType = ET_NOTHING gfError = FALSE EXIT SUB END IF done = FALSE diff = FALSE IF EOF(fh1%) AND EOF(fh2%) THEN done = TRUE END IF IF NOT done AND (EOF(fh1%) OR EOF(fh2%)) THEN diff = TRUE done = TRUE END IF WHILE NOT done LINE INPUT #fh1%,line1$ LINE INPUT #fh2%,line2$ IF gfError THEN XLogFailure "XFileNotCmp INPUT or EOF errors" gErrorType = ET_NOTHING gfError = FALSE EXIT SUB END IF IF line1$ <> line2$ THEN done = TRUE diff = TRUE END IF IF NOT done AND EOF(fh1%) AND EOF(fh2%) THEN done = TRUE END IF IF NOT done AND (EOF(fh1%) OR EOF(fh2%)) THEN diff = TRUE done = TRUE END IF WEND CLOSE #fh1% CLOSE #fh2% IF gfError THEN XLogFailure "XFileNotCmp CLOSE errors" gErrorType = ET_NOTHING gfError = FALSE EXIT SUB END IF gErrorType = ET_NOTHING IF NOT diff THEN XLogFailure "Files " + stFileSpec1$ + "," + stFileSpec2$ + " do compare" END IF END SUB ' ' BFileCmp%(stFileSpec1$,stFileSpec2$) ' ' Description: ' Compares two files, line by line ' Logs a Failure if the files don't exist ' ' Parameters: ' stFileSpec1$,stFileSpec2 - file specifications ' ' Returns: ' FALSE IF XFileCmp would detect an error ' ' Example: ' x% = BFileCmp "Foo.dat","foo.bsl" ' ' ' FUNCTION BFileCmp%(stFileSpec1$,stFileSpec2$) STATIC DIM fh1% DIM fh2% DIM line1$ DIM line2$ DIM done DIM diff gErrorType = ET_NEXT fh1% = FREEFILE OPEN stFileSpec1$ FOR INPUT AS #fh1% fh2% = FREEFILE OPEN stFileSpec2$ FOR INPUT AS #fh2% IF gfError THEN BFileCmp = FALSE gErrorType = ET_NOTHING gfError = FALSE EXIT FUNCTION END IF done = FALSE diff = FALSE IF EOF(fh1%) AND EOF(fh2%) THEN done = TRUE END IF IF NOT done AND (EOF(fh1%) OR EOF(fh2%)) THEN diff = TRUE done = TRUE END IF WHILE NOT done LINE INPUT #fh1%,line1$ LINE INPUT #fh2%,line2$ IF gfError THEN BFileCmp = FALSE gErrorType = ET_NOTHING gfError = FALSE EXIT FUNCTION END IF IF line1$ <> line2$ THEN done = TRUE diff = TRUE END IF IF NOT done AND EOF(fh1%) AND EOF(fh2%) THEN done = TRUE END IF IF NOT done AND (EOF(fh1%) OR EOF(fh2%)) THEN diff = TRUE done = TRUE END IF WEND CLOSE #fh1% CLOSE #fh2% IF gfError THEN BFileCmp = FALSE gErrorType = ET_NOTHING gfError = FALSE EXIT FUNCTION END IF BFileCmp = NOT diff ' IF different a log failure would normally happen END FUNCTION ' ' XDeleteFile(stFileSpec$) ' ' Description: ' Will delete stFileSpec$ if it, they, exists. ' logs a failure if it can't delete them or if the file(s) ' doesn't exist ' ' Parameters: ' stFileSpec$ - file specification ' ' Returns: ' nothing ' ' Example: ' XDeleteFile "*.bak" ' ' SUB XDeleteFile(stFileSpec$) STATIC IF EXISTS(stFileSpec$) THEN gErrorType = ET_NEXT KILL stFileSpec$ IF gfError THEN XLogFailure "XDeleteFile " + stFileSpec$ + " could NOT be deleted" gfError = FALSE END IF gErrorType = ET_NOTHING ELSE XLogFailure "XDeleteFile " + stFileSpec$ + " NOT deleted (doesn't exist)." END IF END SUB ' ' XDeleteFileIfExists(stFileSpec$) ' ' Description: ' Will delete stFileSpec$ if it, they, exists. ' logs a failure if it can't delete them but doesn't if the file(s) ' doesn't exist ' ' Parameters: ' stFileSpec$ - file specification ' ' Returns: ' nothing ' ' Example: ' XDeleteFileIfExists "*.bak" ' ' SUB XDeleteFileIfExists(stFileSpec$) STATIC IF EXISTS(stFileSpec$) THEN gErrorType = ET_NEXT KILL stFileSpec$ IF gfError THEN XLogFailure "XDeleteFileIfExists " + stFileSpec$ + " could NOT be deleted" gfError = FALSE END IF gErrorType = ET_NOTHING END IF END SUB ' ' XCreateFile(stFileSpec$,s$) ' ' Description: ' Will Create stFileSpec$ and put string in it ' logs a failure if it can't Create it ' ' Parameters: ' stFileSpec$ - file specification ' ' Returns: ' nothing ' ' Example: ' XCreateFile "foo.dat","Hello world" ' ' ' SUB XCreateFile(stFileSpec$,s$) STATIC DIM fh% gErrorType = ET_NEXT fh% = FREEFILE OPEN stFileSpec$ FOR OUTPUT AS #fh% PRINT #fh%,s$ ' put the string in the file CLOSE #fh% IF gfError THEN XLogFailure "XCreateFile encountered runtime errors" gfError = FALSE END IF gErrorType = ET_NOTHING END SUB ' ' XAppendFile(stFileSpec$,s$) ' ' Description: ' Will Append stFileSpec$ and put string in it ' logs a failure if it can't Append it ' ' Parameters: ' stFileSpec$ - file specification ' ' Returns: ' nothing ' ' Example: ' XAppendFile "foo.dat","Hello world" ' ' ' SUB XAppendFile(stFileSpec$,s$) STATIC DIM fh% gErrorType = ET_NEXT fh% = FREEFILE OPEN stFileSpec$ FOR APPEND AS #fh% PRINT #fh%,s$ ' put the string in the file CLOSE #fh% IF gfError THEN XLogFailure "XAppendFile encountered runtime errors" gfError = FALSE END IF gErrorType = ET_NOTHING END SUB ' ' XWaitMessageFile(s$,Message$,WaitTime%) ' ' Description: ' Wait for file to exist, only wait up to given time, ' check if string is in file (if string is non-empty) ' logs a failure if the files doesn't exist, or when ' it does and the string isn't in it. ' ' Parameters: ' s$ - file specification ' Message$ - the string to look for ' WaitTime% - the longest to wait ' ' Returns: ' nothing ' ' Example: ' XWaitMessageFile "foo.dat","Hello world",20 ' ' ' SUB XWaitMessageFile(s$,Message$, WaitTime%) STATIC DIM fDone% ' flag to stop looping DIM fFound% ' flag to indicate if file found DIM lineIn$ ' line from file DIM inret% ' return from INSTR DIM fh% ' File handle fDone = FALSE fFound = FALSE WHILE NOT fDone IF EXISTS(s$) THEN fDone = TRUE fFound = TRUE ELSE SLEEP 1 WaitTime% = WaitTime% - 1 IF WaitTime% <= 0 THEN fDone = TRUE END IF END IF WEND IF NOT fFound% THEN XLogFailure "FAIL """ + s$ + """ Message File not found" ELSE IF Message$ = "" THEN ' don't bother searching if no string given EXIT SUB END IF fDone = FALSE fFOUND = FALSE gErrorType = ET_NEXT fh% = FREEFILE OPEN s$ FOR INPUT AS # fh% IF EOF(fh%) THEN fDone% = TRUE END IF IF gfError THEN XLogFailure "XWaitMessageFile encountered runtime error during OPEN" gErrorType = ET_NOTHING gfError = FALSE EXIT SUB END IF WHILE NOT fDone% LINE INPUT # fh%, lineIn$ IF gfError THEN XLogFailure "XWaitMessageFile encountered runtime error during INPUT" gErrorType = ET_NOTHING gfError = FALSE EXIT SUB END IF inret% = INSTR(lineIn$,Message$) IF inret% <> 0 THEN fFound% = TRUE fDone = TRUE END IF IF EOF(fh%) THEN fDone% = TRUE END IF WEND CLOSE # fh% IF gfError THEN XLogFailure "XWaitMessageFile encountered runtime error during CLOSE" gErrorType = ET_NOTHING gfError = FALSE EXIT SUB END IF gErrorType = ET_NOTHING IF NOT fFound% THEN XLogFailure "FAIL, found """ + s$ + """ Message File, """ + Message$ + """ not in it" END IF END IF END SUB '********************************************************** '***************** Directory Subroutines ****************** '********************************************************** ' ' XCWDCmp(s$) ' ' Description: ' Compare the current working directory and log error if it ' doesn't match the expected value ' ' Parameters: ' s$ - the expected value for the current directory ' ' Returns: ' nothing ' ' Example: ' XCWDCmp "c:\tests" ' SUB XCWDCmp(s$) STATIC IF BCWDCmp(s$) = 0 THEN XLogFailure "Current working directory (" + UCASE$(CURDIR$) + ") doesn't match " + UCASE$(s$) END IF END SUB ' ' XCWDNotCmp(s$) ' ' Description: ' Compare the current working directory and log error if it ' does match the given value ' ' Parameters: ' s$ - the value for the directory that isn't expected ' ' Returns: ' nothing ' ' Example: ' XCWDNotCmp "c:\tests" ' SUB XCWDNotCmp(s$) STATIC IF UCASE$(CURDIR$) = UCASE$(s$) THEN XLogFailure "Current working directory (" + UCASE$(CURDIR$) + ") matches " + UCASE$(s$) END IF END SUB ' ' BCWDCmp(s$) ' ' Description: ' return compare of the current working directory and the expected value ' ' Parameters: ' s$ - the expected value for the current directory ' ' Returns: ' TRUE if matches, FALSE if doesn't ' ' Example: ' flag% = BCWDCmp("c:\tests") ' FUNCTION BCWDCmp%(s$) STATIC BCWDCmp = UCASE$(CURDIR$) = UCASE$(s$) END FUNCTION ' ' XDriveCmp(s$) ' ' Description: ' Compare the current working drive and log error if it ' doesn't match the expected value ' ' Parameters: ' s$ - the expected value for the current drive ' ' Returns: ' nothing ' ' Example: ' XDriveCmp "c:" ' SUB XDriveCmp(s$) STATIC IF BDriveCmp%(s$) = 0 THEN XLogFailure "Current working Drive (" + MID$(UCASE$(CURDIR$),1,2) + ") doesn't match " + UCASE$(s$) END IF END SUB ' ' XDriveNotCmp(s$) ' ' Description: ' Compare the current working drive and log error if it ' does match the given value ' ' Parameters: ' s$ - the expected value for the current drive ' ' Returns: ' nothing ' ' Example: ' XDriveNotCmp "c:" ' SUB XDriveNotCmp(s$) STATIC IF MID$(UCASE$(CURDIR$),1,2) = UCASE$(s$) THEN XLogFailure "Current working Drive (" + MID$(UCASE$(CURDIR$),1,2) + ") matches " + s$ END IF END SUB ' ' BDriveCmp(s$) ' ' Description: ' return compare the current working drive and the expected value ' ' Parameters: ' s$ - the expected value for the current drive ' ' Returns: ' TRUE if matches, FALSE if doesn't ' ' Example: ' flag% = BDriveCmp("c:") ' FUNCTION BDriveCmp%(s$) STATIC BDriveCmp = MID$(UCASE$(CURDIR$),1,2) = UCASE$(s$) END FUNCTION ' ' XChangeCWD(s$) ' ' Description: ' Change to given working directory, log failure if doesn't succeed ' ' Parameters: ' s$ - directory to change to ' ' Returns: ' nothing ' ' Example: ' XChangeCWD "\tmp" ' ' SUB XChangeCWD(s$) STATIC gErrorType = ET_NEXT CHDIR s$ IF gfError THEN XLogFailure "XChangeCWD could not change directory" gfError = FALSE END IF gErrorType = ET_NOTHING END SUB ' ' XCreateDir(s$) ' ' Description: ' Create the given directory, log failure if doesn't succeed ' ' Parameters: ' s$ - directory to create ' ' Returns: ' nothing ' ' Example: ' XCreateDir "\tmpdir" ' ' SUB XCreateDir(s$) STATIC gErrorType = ET_NEXT MKDIR s$ IF gfError THEN XLogFailure "XCreateDir could not create directory" gfError = FALSE END IF gErrorType = ET_NOTHING END SUB ' ' XChangeDrive(s$) ' ' Description: ' Change the current working drive, log failure if doesn't succeed ' ' Parameters: ' s$ - drive to change to ' ' Returns: ' nothing ' ' Example: ' XChangeDrive "c:" ' ' SUB XChangeDrive(s$) STATIC gErrorType = ET_NEXT CHDRIVE s$ IF gfError THEN XLogFailure "XChangeDrive could not change drive" gfError = FALSE END IF gErrorType = ET_NOTHING END SUB '********************************************************** '***************** Program Subroutines ******************** '********************************************************** ' ' HStartApp%(stAppName$) ' ' Description: ' Starts app AppName and returns the handle to the App ' ' Parameters: ' stAppName$ - name of app to WinExec and get handle to ' ' Returns: ' handle to application started ' ' Example: ' hWinHelp% = HStartApp("winhelp.exe") ' ' FUNCTION HStartApp%(stAppName$) STATIC DIM Bogus%, hwndActive%, hwndNewApp% DIM lpszTemp$ ' Get the current foreground window hwndActive = GetForegroundWindow () Bogus% = WinExec (stAppName$, SW_SHOWNORMAL) lpszTemp$ = "WinExec error with " + stAppName$ + " :" ' WinExec defines SOME of the values between 0 and 32 ' as errors... any return value greater than 32 ' should be considered a success! SELECT CASE Bogus% CASE 0 XLogFailure lpszTemp$ + "Out of memory - exiting" CASE 2 XLogFailure lpszTemp$ + "File not found" End CASE 3 XLogFailure lpszTemp$ + "Path not found" CASE 5 XLogFailure lpszTemp$ + "Attempt to dynamically link to a task" CASE 6 XLogFailure lpszTemp$ + "Library requires separate data segments" CASE 10 XLogFailure lpszTemp$ + "Incorrect Windows version" CASE 11 XLogFailure lpszTemp$ + "Invalid EXE file" CASE 12 XLogFailure lpszTemp$ + "OS/2 application" CASE 13 XLogFailure lpszTemp$ + "DOS 4.0 application" CASE 14 XLogFailure lpszTemp$ + "Unknown EXE type" CASE 15 XLogFailure lpszTemp$ + "Must run in real mode Windows" CASE 16 XLogFailure lpszTemp$ + "Cannot run more than one instance" CASE 17 XLogFailure lpszTemp$ + "Large-frame EMS allows only one instance" CASE 18 XLogFailure lpszTemp$ + "Must run in standard or enhanced mode Windows" CASE 0 TO 32 XLogFailure lpszTemp$ + "Unknown Error in WinExec" END SELECT ' Wait until the old foreground window is no longer the foreground wnd while hwndActive = GetForegroundWindow sleep 1 wend HStartApp = GetForegroundWindow () END FUNCTION ' ' XStartApp(stAppName$) ' ' Description: ' Starts app AppName and sets handle to ghAppHwnd. ' if we get a null handle, THEN we end the script here. ' ' Parameters: ' stAppName$ - name of app to WinExec ' ' Returns: ' nothing ' ' Example: ' XStartApp "winhelp.exe" ' ' SUB XStartApp(stAppName$, stClassname$) STATIC DIM logstr$ 'ghAppHwnd is a global ghAppHwnd = HStartApp(stAppName$) IF (ghAppHwnd = 0) THEN 'we didn't get a handle XLogFailure "Unable to start app " + stAppName$ ELSEIF stClassname$ <> "" THEN gsAppClassname = stClassname$ ' remember it for later IF FindWindow(stClassname$,NULL) = 0 THEN ' The app isn't around logstr$ = "The app " + stAppName$ + " started but didn't stay OR..." logstr$ = logstr$ + CRLF$ + "the given class name (" logstr$ = logstr$ + stClassname$ + ") is incorrect" XLogFailure logstr$ END IF END IF END SUB ' ' XSetCleanup(sCleanup$) ' ' Description: ' Stores a user defined DoKeys string to be used to exit the ' application automatically. If set to an empty string, ' nothing will be sent with DoKeys but there will still be ' a log failure if the application is still running when the ' script ends (no check is done if there wasn't a classname ' supplied with XStartApp ' ' Parameters: ' sCleanup$ - the string to use with DoKeys to end the app ' ' Returns: ' nothing ' ' Example: ' XSetCleanup "{esc 5}%vx" ' ' SUB XSetCleanup (sCleanup$) STATIC gsCleanup$ = sCleanup$ END SUB ' This routine is not intended to be called in the user script. ' This routine is executed when the script finishes with an END ' statement. Its purpose is to find the application started with ' XStartapp using the classname supplied there. if it exists, ' and the gsCleanup string is nonempty, the gsCleanup string will ' be played. This may still not get rid of the app for various ' reasons: maybe it is prompting to save a file, or it won't exit ' a dialog... SUB XDoCleanup STATIC DIM logstr$ IF gsCleanup$ <> "" AND gsAppClassname$ <> "" AND FindWindow(gsAppClassname$,NULL) <> 0 THEN DoKeys gsCleanup$ END IF IF gsAppClassname$ <> "" AND FindWindow(gsAppClassname$,NULL) <> 0 THEN logstr$ = "The app with class name " + gsAppClassname$ + " was not" logstr$ = logstr$ + CRLF$ + "halted by the cleanup string " + gsCleanup$ XLogFailure logstr$ END IF END SUB '********************************************************** '***************** Mouse Subroutines ********************** '********************************************************** ' The mouse routines use the VK_LBUTTON, VK_RBUTTON, VK_MBUTTON ' constants to determine which button to use (or LBUTTON, MBUTTON or RBUTTON ' as defined in fasttest.inc ' ' XMoveMouse(x%,y%) ' ' Description: ' Moves the mouse pointer to specified absolute screen coordinates ' ' Parameters: ' x%,y% - x and y coordinates to move to ' ' Returns: ' nothing ' ' Example: ' XMoveMouse 100,120 ' ' SUB XMoveMouse (x%, y%) STATIC QueMouseMove x%,y% QueFlush FALSE END SUB ' ' XClickMouse(button%,x%,y%) ' ' Description: ' Clicks the mouse pointer to specified absolute screen coordinates ' ' Parameters: ' button% - which button to click ' x%,y% - x and y coordinates to move to ' ' Returns: ' nothing ' ' Example: ' XClickMouse LBUTTON,100,120 ' ' SUB XClickMouse(button%, x%, y%) STATIC QueMouseDn button%,x%,y% QueMouseUp button%,x%,y% QueFlush FALSE END SUB ' ' XDblClickMouse(button%,x%,y%) ' ' Description: ' Clicks the mouse pointer to specified absolute screen coordinates ' ' Parameters: ' button% - which button to double click ' x%,y% - x and y coordinates to move to ' ' Returns: ' nothing ' ' Example: ' XDblClickMouse LBUTTON,100,120 ' ' SUB XDblClickMouse(button%, x%, y%) STATIC QueMouseDblClk button%,x%,y% QueFlush FALSE END SUB ' ' XDragMouse (button%, Begx%, Begy%, Endx%, Endy%) ' ' Description: ' Drags the mouse pointer to specified absolute screen coordinates ' ' Parameters: ' button% - which button to use for dragging ' Begx%,Begy% - x and y coordinates to Drag from ' Endx%,Endy% - x and y coordinates to Drag to ' ' Returns: ' nothing ' ' Example: ' XDragMouse LBUTTON,100,120, 200,220 ' ' SUB XDragMouse (button%, Begx%, Begy%, Endx%, Endy%) STATIC QueMouseDn button%,Begx%,Begy% QueMouseMove Endx%,Endy% QueMouseUp button%,Endx%,Endy% QueFlush FALSE END SUB '********************************************************** '***************** ClipBoard Subroutines ****************** '********************************************************** ' ' XClipBoardCmp(s$) ' ' Description: ' Compare given string to what is in the clipboard, log failure ' if they don't match ' ' Parameters: ' s$ - string to compare ' ' Returns: ' nothing ' ' Example: ' XClipBoardCmp "07734" ' ' SUB XClipBoardCmp (s$) STATIC IF s$ <> CLIPBOARD$ THEN XLogFailure "String does not match clipboard" END IF END SUB ' ' XClipBoardNotCmp(s$) ' ' Description: ' Compare given string to what is in the clipboard, log failure ' if they match ' ' Parameters: ' s$ - string to compare ' ' Returns: ' nothing ' ' Example: ' XClipBoardNotCmp "07734" ' ' SUB XClipBoardNotCmp (s$) STATIC IF s$ = CLIPBOARD$ THEN XLogFailure "String does match clipboard" END IF END SUB ' ' BClipBoardCmp(s$) ' ' Description: ' Compare given string to what is in the clipboard, log failure ' if they don't match ' ' Parameters: ' s$ - string to compare ' ' Returns: ' TRUE if matches, FALSE if doesn't ' ' Example: ' flag% = BClipBoardCmp "07734" ' ' FUNCTION BClipBoardCmp (s$) STATIC BClipBoardCmp = s$ = CLIPBOARD$ END FUNCTION