Notepad3/test/TestAhkNotepad3.ahk
2019-07-15 13:33:19 +02:00

143 lines
4.3 KiB
AutoHotkey

; =============================================================================
; Regression Tests Notepad3 Gui
; Needs files in a Test Directory:
; Notepad3.exe and Notepad3.ini (from distrib)
; Execute: AutoHotkeyU32.exe "TestAhkNotepad3.ahk"
; =============================================================================
#NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases.
; #Warn ; Enable warnings to assist with detecting common errors.
SendMode Input ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory.
SetBatchLines, -1
StringCaseSense, Off
CoordMode, Pixel, Screen
; =============================================================================
v_NP3Name = Notepad3
v_NP3TestDir = %A_WorkingDir%\_TESTDIR
v_NP3IniFile = %v_NP3Name%.ini
stdout := FileOpen("*", "w")
v_ExitCode := 0
; =============================================================================
Run, %v_NP3TestDir%/%v_NP3Name%.exe %v_NP3TestDir%/%v_NP3IniFile%, , UseErrorLevel, v_Notepad3_PID
v_ErrLevel = %ErrorLevel%
if (v_ErrLevel != 0)
{
stdout.WriteLine("*** ERROR: " . v_NP3Name . "could not be launched.")
v_ExitCode := 1
Goto LABEL_END
}
; -----------------------------------------------------------------------------
GoSub CHECK_NP3_STARTS
Sleep, 500
GoSub CHECK_WIN_TITLE
Sleep, 500
GoSub CHECK_ABOUT_BOX
Goto LABEL_END
; =============================================================================
; =============================================================================
CHECK_NP3_STARTS:
; check that NP3 starts up
WinWait ahk_pid %v_Notepad3_PID%, , 10
v_ErrLevel = %ErrorLevel%
if (v_ErrLevel != 0)
{
stdout.WriteLine("*** ERROR: " . v_NP3Name . "'s seems not to start in time ???")
v_ExitCode := 2
Goto LABEL_END
}
Return
; =============================================================================
; =============================================================================
CHECK_WIN_TITLE:
; check Main Window Title
WinGetTitle, v_NP3Title, ahk_pid %v_Notepad3_PID%
IfNotInString, v_NP3Title, %v_NP3Name%
{
v_ExitCode := 3
stdout.WriteLine("*** ERROR: " . v_NP3Name . " missing in Title: " . v_NP3Title)
}
IfNotInString, v_NP3Title, %v_NP3IniFile%
{
v_ExitCode := 3
stdout.WriteLine("*** ERROR: " . v_NP3IniFile . " missing in Title: " . v_NP3Title)
}
IfNotInString, v_NP3Title, %v_NP3TestDir%
{
v_ExitCode := 3
stdout.WriteLine("*** ERROR: " . v_NP3TestDir . " missing in Title: " . v_NP3Title)
}
If (v_ExitCode != 0)
{
Goto LABEL_END
}
Return
; =============================================================================
; =============================================================================
CHECK_ABOUT_BOX:
; check About DlgBox
WinActivate, ahk_pid %v_Notepad3_PID%
; This will select File->Open in Notepad:
WinMenuSelectItem, ahk_pid %v_Notepad3_PID%, , Help, About...
WinWait, About %v_NP3Name%, , 3
v_ErrLevel = %ErrorLevel%
if (v_ErrLevel != 0)
{
v_ExitCode := 4
stdout.WriteLine("*** ERROR: " . v_NP3Name . "'s About Box is not displayed!")
Goto LABEL_END
}
WinActivate ; About Box
;ControlFocus, OK, About %v_NP3Name%
ControlClick, OK, About %v_NP3Name%
;Send {Enter}
WinWaitClose, About %v_NP3Name%, , 2
v_ErrLevel = %ErrorLevel%
if (v_ErrLevel != 0)
{
v_ExitCode := 5
stdout.WriteLine("*** ERROR: " . v_NP3Name . "'s About Box can not be closed!")
Goto LABEL_END
}
Return
; =============================================================================
; =============================================================================
LABEL_END:
WinClose ahk_pid %v_Notepad3_PID%, , 2
v_ErrLevel = %ErrorLevel%
if (v_ErrLevel != 0)
{
v_ExitCode := 99
stdout.WriteLine("*** ERROR: " . v_NP3Name . "can not be closed!")
}
; -------------------------------------
WinWaitClose ahk_pid %v_Notepad3_PID%
v_ErrLevel = %ErrorLevel%
if (v_ErrLevel != 0)
{
v_ExitCode := 111
; FORCED Kill / HANGUP
}
; -------------------------------------
if (v_ExitCode != 0)
{
stdout.WriteLine("*** ERROR: Testing " . v_NP3Name . " exit with: " . v_ExitCode)
ExitApp, %v_ExitCode%
}
stdout.WriteLine("Testing " . v_NP3Name . ": All tests PASSED.")
ExitApp, 0
; =============================================================================