// Objects declared here can be used by all tests in the test case for Foo.\r
};\r
\r
+TEST_F(DirFrameTest, Menus)\r
+{\r
+ // System menu\r
+ typeAltPlusKey(' ');\r
+ typeKey(VK_RIGHT);\r
+ Sleep(200);\r
+ saveForegroundWindowImage("MDIChildSystem");\r
+ // File menu\r
+ typeKey(VK_RIGHT);\r
+ Sleep(200);\r
+ saveForegroundWindowImage("File");\r
+ // File/ReadOnly menu\r
+ for (int i = 0; i < 6; ++i)\r
+ typeKey(VK_DOWN);\r
+ typeKey(VK_RIGHT);\r
+ Sleep(200);\r
+ saveForegroundWindowImage("FileReadOnly");\r
+ // Edit menu\r
+ typeKey(VK_RIGHT);\r
+ Sleep(200);\r
+ saveForegroundWindowImage("Edit");\r
+ // View menu\r
+ typeKey(VK_RIGHT);\r
+ Sleep(200);\r
+ saveForegroundWindowImage("View");\r
+ // View/3-way Compare menu\r
+ for (int i = 0; i < 7; ++i)\r
+ typeKey(VK_DOWN);\r
+ typeKey(VK_RIGHT);\r
+ Sleep(200);\r
+ saveForegroundWindowImage("View3WayCompare");\r
+ typeKey(VK_LEFT);\r
+ // View/Toolbar\r
+ for (int i = 0; i < 8; ++i)\r
+ typeKey(VK_DOWN);\r
+ typeKey(VK_RIGHT);\r
+ Sleep(200);\r
+ saveForegroundWindowImage("ViewToolbar");\r
+ // Merge menu\r
+ typeKey(VK_RIGHT);\r
+ Sleep(200);\r
+ saveForegroundWindowImage("Merge");\r
+ // Tools menu\r
+ typeKey(VK_RIGHT);\r
+ Sleep(200);\r
+ saveForegroundWindowImage("Tools");\r
+ // Plugins menu\r
+ typeKey(VK_RIGHT);\r
+ Sleep(200);\r
+ saveForegroundWindowImage("Plugins");\r
+ // Window menu\r
+ typeKey(VK_RIGHT);\r
+ Sleep(200);\r
+ saveForegroundWindowImage("Window");\r
+ // Help menu\r
+ typeKey(VK_RIGHT);\r
+ Sleep(200);\r
+ saveForegroundWindowImage("Help");\r
+ // Close menu\r
+ typeKey(VK_MENU);\r
+}\r
+\r
TEST_F(DirFrameTest, FileSaveProject)\r
{\r
selectMenuAndSaveWindowImage(ID_FILE_SAVEPROJECT);\r
\r
TEST_F(DirFrameTest, ToolsGeneratePatch)\r
{\r
- keybd_event(VK_END, 0, 0, 0);\r
- keybd_event(VK_END, 0, KEYEVENTF_KEYUP, 0);\r
+ typeKey(VK_END);\r
HWND hwndDlg = selectOpenDialogMenuAndSaveDialogImage(ID_TOOLS_GENERATEPATCH);\r
if (hwndDlg)\r
{\r
#include "pch.h"\r
+#include <dwmapi.h>\r
+\r
+#pragma comment(lib, "dwmapi.lib")\r
\r
namespace GUITestUtils\r
{\r
bool saveWindowImageAsPNG(HWND hwnd, const std::filesystem::path& filename)\r
{\r
RECT rc{};\r
- GetWindowRect(hwnd, &rc);\r
+ DwmGetWindowAttribute(hwnd, DWMWA_EXTENDED_FRAME_BOUNDS, &rc, sizeof(RECT));\r
CImage img;\r
img.Create(rc.right - rc.left, rc.bottom - rc.top, 24);\r
- PrintWindow(hwnd, img.GetDC(), 0);\r
+ HDC hdc = GetDC(nullptr);\r
+ BitBlt(img.GetDC(), 0, 0, rc.right - rc.left, rc.bottom - rc.top, hdc, rc.left, rc.top, SRCCOPY);\r
img.ReleaseDC();\r
+ ReleaseDC(nullptr, hdc);\r
return SUCCEEDED(img.Save(filename.c_str(), Gdiplus::ImageFormatPNG));\r
}\r
\r
keybd_event(VK_MENU, 0, KEYEVENTF_KEYUP, 0);\r
}\r
\r
+void typeKey(unsigned char vk)\r
+{\r
+ keybd_event(vk, 0, 0, 0);\r
+ keybd_event(vk, 0, KEYEVENTF_KEYUP, 0);\r
+}\r
+\r
std::filesystem::path getModuleFileName()\r
{\r
wchar_t szPath[256];\r
HWND findForegroundDialog();\r
void typeText(const wchar_t *text);\r
void typeAltPlusKey(char key);\r
+ void typeKey(unsigned char vk);\r
std::filesystem::path getModuleFileName();\r
std::filesystem::path getModuleFolder();\r
bool isMenuItemChecked(HWND hwnd, int id);\r
// Objects declared here can be used by all tests in the test case for Foo.\r
};\r
\r
+TEST_F(MainFrameTest, Menus)\r
+{\r
+ // System menu\r
+ typeAltPlusKey(' ');\r
+ saveForegroundWindowImage("System");\r
+ // File menu\r
+ typeKey(VK_RIGHT);\r
+ Sleep(200);\r
+ saveForegroundWindowImage("File");\r
+ // Edit menu\r
+ typeKey(VK_RIGHT);\r
+ Sleep(200);\r
+ saveForegroundWindowImage("Edit");\r
+ // View menu\r
+ typeKey(VK_RIGHT);\r
+ Sleep(200);\r
+ saveForegroundWindowImage("View");\r
+ // View/Toolbar menu\r
+ typeKey(VK_RIGHT);\r
+ Sleep(200);\r
+ saveForegroundWindowImage("ViewToolbar");\r
+ // Tools menu\r
+ typeKey(VK_RIGHT);\r
+ Sleep(200);\r
+ saveForegroundWindowImage("Tools");\r
+ // Plugins menu\r
+ typeKey(VK_RIGHT);\r
+ Sleep(200);\r
+ saveForegroundWindowImage("Plugins");\r
+ // Window menu\r
+ typeKey(VK_RIGHT);\r
+ Sleep(200);\r
+ saveForegroundWindowImage("Window");\r
+ // Help menu\r
+ typeKey(VK_RIGHT);\r
+ Sleep(200);\r
+ saveForegroundWindowImage("Help");\r
+ // Close menu\r
+ typeKey(VK_MENU);\r
+}\r
+\r
TEST_F(MainFrameTest, FileNew)\r
{\r
selectMenuAndSaveWindowImage(ID_FILE_NEW);\r