OSDN Git Service

GUITests: Take a screenshot after selecting a menu item
authorTakashi Sawanaka <sdottaka@users.sourceforge.net>
Thu, 25 Jul 2019 23:12:30 +0000 (08:12 +0900)
committerTakashi Sawanaka <sdottaka@users.sourceforge.net>
Thu, 25 Jul 2019 23:12:30 +0000 (08:12 +0900)
Testing/GoogleTest/GUITests/DirFrameTest.cpp
Testing/GoogleTest/GUITests/GUITestUtils.cpp
Testing/GoogleTest/GUITests/GUITestUtils.h
Testing/GoogleTest/GUITests/GUITests.vs2017.vcxproj
Testing/GoogleTest/GUITests/MainFrameTest.cpp
Testing/GoogleTest/GUITests/pch.h

index 3e731af..26165a5 100644 (file)
@@ -12,7 +12,7 @@ namespace
 \r
 using namespace GUITestUtils;\r
 \r
-class DirFrameTest : public testing::Test\r
+class DirFrameTest : public CommonTest\r
 {\r
 protected:\r
        DirFrameTest()\r
@@ -27,8 +27,8 @@ protected:
        static void SetUpTestCase()\r
        {\r
                // You can do set-up work for each test here.\r
-               std::string dir1 = (getModuleFileName().parent_path() / "..\\..\\Data\\Compare\\Dir1\\").u8string();\r
-               std::string dir2 = (getModuleFileName().parent_path() / "..\\..\\Data\\Compare\\Dir2\\").u8string();\r
+               std::string dir1 = (getModuleFolder() / "..\\..\\Data\\Compare\\Dir1\\").u8string();\r
+               std::string dir2 = (getModuleFolder() / "..\\..\\Data\\Compare\\Dir2\\").u8string();\r
                m_hwndWinMerge = execWinMerge(("/noprefs /maxmize /r " + dir1 + " " + dir2).c_str());\r
        }\r
 \r
@@ -53,87 +53,75 @@ protected:
                waitForInputIdleByHWND(m_hwndWinMerge);\r
        }\r
 \r
-       void selectMenu(UINT id)\r
-       {\r
-               GUITestUtils::selectMenu(m_hwndWinMerge, id);\r
-       }\r
-\r
        // Objects declared here can be used by all tests in the test case for Foo.\r
-       static HWND m_hwndWinMerge;\r
 };\r
 \r
-HWND DirFrameTest::m_hwndWinMerge = nullptr;\r
-\r
 TEST_F(DirFrameTest, FileSaveProject)\r
 {\r
-       selectMenu(ID_FILE_SAVEPROJECT);\r
-       selectMenu(ID_FILE_CLOSE);\r
+       selectMenuAndSaveWindowImage(ID_FILE_SAVEPROJECT);\r
+       selectMenuAndSaveWindowImage(ID_FILE_CLOSE);\r
 }\r
 \r
 TEST_F(DirFrameTest, EditSelectAll)\r
 {\r
-       selectMenu(ID_EDIT_SELECT_ALL);\r
+       selectMenuAndSaveWindowImage(ID_EDIT_SELECT_ALL);\r
 }\r
 \r
 TEST_F(DirFrameTest, ViewFilters)\r
 {\r
-       selectMenu(ID_OPTIONS_SHOWIDENTICAL);\r
-       selectMenu(ID_OPTIONS_SHOWDIFFERENT);\r
-       selectMenu(ID_OPTIONS_SHOWUNIQUELEFT);\r
-       selectMenu(ID_OPTIONS_SHOWUNIQUERIGHT);\r
-       selectMenu(ID_OPTIONS_SHOWSKIPPED);\r
-       selectMenu(ID_OPTIONS_SHOWBINARIES);\r
+       selectMenuAndSaveWindowImage(ID_OPTIONS_SHOWIDENTICAL);\r
+       selectMenuAndSaveWindowImage(ID_OPTIONS_SHOWDIFFERENT);\r
+       selectMenuAndSaveWindowImage(ID_OPTIONS_SHOWUNIQUELEFT);\r
+       selectMenuAndSaveWindowImage(ID_OPTIONS_SHOWUNIQUERIGHT);\r
+       selectMenuAndSaveWindowImage(ID_OPTIONS_SHOWSKIPPED);\r
+       selectMenuAndSaveWindowImage(ID_OPTIONS_SHOWBINARIES);\r
        Sleep(500);\r
-       selectMenu(ID_OPTIONS_SHOWIDENTICAL);\r
+       selectMenuAndSaveWindowImage(ID_OPTIONS_SHOWIDENTICAL);\r
        Sleep(500);\r
-       selectMenu(ID_OPTIONS_SHOWDIFFERENT);\r
+       selectMenuAndSaveWindowImage(ID_OPTIONS_SHOWDIFFERENT);\r
        Sleep(500);\r
-       selectMenu(ID_OPTIONS_SHOWUNIQUELEFT);\r
+       selectMenuAndSaveWindowImage(ID_OPTIONS_SHOWUNIQUELEFT);\r
        Sleep(500);\r
-       selectMenu(ID_OPTIONS_SHOWUNIQUERIGHT);\r
+       selectMenuAndSaveWindowImage(ID_OPTIONS_SHOWUNIQUERIGHT);\r
        Sleep(500);\r
-       selectMenu(ID_OPTIONS_SHOWSKIPPED);\r
+       selectMenuAndSaveWindowImage(ID_OPTIONS_SHOWSKIPPED);\r
        Sleep(500);\r
-       selectMenu(ID_OPTIONS_SHOWBINARIES);\r
+       selectMenuAndSaveWindowImage(ID_OPTIONS_SHOWBINARIES);\r
        Sleep(500);\r
 }\r
 \r
 TEST_F(DirFrameTest, ViewTreeMode)\r
 {\r
-       selectMenu(ID_VIEW_TREEMODE);\r
+       selectMenuAndSaveWindowImage(ID_VIEW_TREEMODE);\r
        Sleep(500);\r
-       selectMenu(ID_VIEW_TREEMODE);\r
+       selectMenuAndSaveWindowImage(ID_VIEW_TREEMODE);\r
        Sleep(500);\r
-       selectMenu(ID_VIEW_EXPAND_ALLSUBDIRS);\r
+       selectMenuAndSaveWindowImage(ID_VIEW_EXPAND_ALLSUBDIRS);\r
        Sleep(500);\r
-       selectMenu(ID_VIEW_COLLAPSE_ALLSUBDIRS);\r
+       selectMenuAndSaveWindowImage(ID_VIEW_COLLAPSE_ALLSUBDIRS);\r
        Sleep(500);\r
 }\r
 \r
 TEST_F(DirFrameTest, ViewFont)\r
 {\r
-       selectMenu(ID_VIEW_SELECTFONT);\r
-       HWND hwndDlg = findForegroundDialog();\r
-       ASSERT_TRUE(hwndDlg != nullptr);\r
+       HWND hwndDlg = selectOpenDialogMenuAndSaveDialogImage(ID_VIEW_SELECTFONT);\r
        if (hwndDlg)\r
        {\r
                typeText(L"Fixedsys\n");\r
                waitUntilClose(hwndDlg);\r
        }\r
-       selectMenu(ID_VIEW_USEDEFAULTFONT);\r
+       selectMenuAndSaveWindowImage(ID_VIEW_USEDEFAULTFONT);\r
 }\r
 \r
 TEST_F(DirFrameTest, ViewSwapPanes)\r
 {\r
-       selectMenu(ID_VIEW_SWAPPANES);\r
-       selectMenu(ID_VIEW_SWAPPANES);\r
+       selectMenuAndSaveWindowImage(ID_VIEW_SWAPPANES);\r
+       selectMenuAndSaveWindowImage(ID_VIEW_SWAPPANES);\r
 }\r
 \r
 TEST_F(DirFrameTest, ViewCompareStatistics)\r
 {\r
-       selectMenu(ID_VIEW_DIR_STATISTICS);\r
-       HWND hwndDlg = findForegroundDialog();\r
-       ASSERT_TRUE(hwndDlg != nullptr);\r
+       HWND hwndDlg = selectOpenDialogMenuAndSaveDialogImage(ID_VIEW_DIR_STATISTICS);\r
        if (hwndDlg)\r
        {\r
                typeText(L"\x1b");\r
@@ -143,9 +131,9 @@ TEST_F(DirFrameTest, ViewCompareStatistics)
 \r
 TEST_F(DirFrameTest, ViewRefresh)\r
 {\r
-       selectMenu(ID_REFRESH);\r
-       selectMenu(ID_EDIT_SELECT_ALL);\r
-       selectMenu(ID_RESCAN);\r
+       selectMenuAndSaveWindowImage(ID_REFRESH);\r
+       selectMenuAndSaveWindowImage(ID_EDIT_SELECT_ALL);\r
+       selectMenuAndSaveWindowImage(ID_RESCAN);\r
        Sleep(2000);\r
 }\r
 \r
index a8245b7..a0b43dc 100644 (file)
@@ -3,6 +3,17 @@
 namespace GUITestUtils\r
 {\r
 \r
+bool saveWindowImageAsPNG(HWND hwnd, const std::filesystem::path& filename)\r
+{\r
+       RECT rc;\r
+       GetWindowRect(hwnd, &rc);\r
+       CImage img;\r
+       img.Create(rc.right - rc.left, rc.bottom - rc.top, 24);\r
+       PrintWindow(hwnd, img.GetDC(), 0);\r
+       img.ReleaseDC();\r
+       return SUCCEEDED(img.Save(filename.c_str(), Gdiplus::ImageFormatPNG));\r
+}\r
+\r
 DWORD waitForInputIdleByHWND(HWND hwnd, DWORD dwMilliseconds)\r
 {\r
        DWORD dwProcessId = 0;\r
@@ -58,6 +69,11 @@ std::filesystem::path getModuleFileName()
        return szPath;\r
 }\r
 \r
+std::filesystem::path getModuleFolder()\r
+{\r
+       return getModuleFileName().parent_path();\r
+}\r
+\r
 void waitUntilClose(HWND hwnd)\r
 {\r
        while (IsWindow(hwnd)) Sleep(100);\r
@@ -68,10 +84,12 @@ void waitUntilFocus(HWND hwnd)
        while (GetForegroundWindow() != hwnd) Sleep(100);\r
 }\r
 \r
-void selectMenu(HWND hwnd, unsigned id)\r
+void selectMenu(HWND hwnd, unsigned id, bool async)\r
 {\r
-       PostMessage(hwnd, WM_COMMAND, id, 0);\r
-       waitForInputIdleByHWND(hwnd);\r
+       if (async)\r
+               PostMessage(hwnd, WM_COMMAND, id, 0);\r
+       else\r
+               SendMessage(hwnd, WM_COMMAND, id, 0);\r
 }\r
 \r
 HWND execWinMerge(const std::string& args)\r
@@ -92,3 +110,6 @@ HWND execWinMerge(const std::string& args)
 }\r
 \r
 }\r
+\r
+HWND CommonTest::m_hwndWinMerge = nullptr;\r
+\r
index bfe47b1..6f8d3d4 100644 (file)
@@ -3,13 +3,77 @@
 \r
 namespace GUITestUtils\r
 {\r
+       bool saveWindowImageAsPNG(HWND hwnd, const std::filesystem::path& filename);\r
        DWORD waitForInputIdleByHWND(HWND hwnd, DWORD dwMilliseconds = WAIT_TIMEOUT);\r
        HWND findForegroundDialog();\r
        void typeText(const wchar_t *text);\r
        void typeAltPlusKey(char key);\r
        std::filesystem::path getModuleFileName();\r
+       std::filesystem::path getModuleFolder();\r
        void waitUntilClose(HWND hwnd);\r
        void waitUntilFocus(HWND hwnd);\r
-       void selectMenu(HWND hwnd, unsigned id);\r
+       void selectMenu(HWND hwnd, unsigned id, bool async = false);\r
+       inline void selectMenuAsync(HWND hwnd, unsigned id) { selectMenu(hwnd, id, true); };\r
        HWND execWinMerge(const std::string& args = "/noprefs /maxmize");\r
+\r
 }\r
+\r
+#define selectMenuAndSaveWindowImage(id) { selectMenu(id); saveImage(#id); }\r
+#define selectOpenDialogMenuAndSaveDialogImage(id) ([this](){ HWND hwnd = selectOpenDialogMenu(id); saveForegroundDialogImage(#id); return hwnd; })()\r
+\r
+class CommonTest : public testing::Test\r
+{\r
+public:\r
+       void selectMenu(UINT id)\r
+       {\r
+               GUITestUtils::selectMenu(m_hwndWinMerge, id);\r
+       }\r
+\r
+       HWND selectOpenDialogMenu(UINT id)\r
+       {\r
+               GUITestUtils::selectMenuAsync(m_hwndWinMerge, id);\r
+               HWND hwndDlg = GUITestUtils::findForegroundDialog();\r
+               return hwndDlg;\r
+       }\r
+\r
+       static std::filesystem::path getScreenshotFolderPath()\r
+       {\r
+               return GUITestUtils::getModuleFolder() / L"../../../Build/Screenshot/";\r
+       }\r
+\r
+       static std::filesystem::path getScreenshotFilePath(const char *id = nullptr)\r
+       {\r
+               std::string basename = ::testing::UnitTest::GetInstance()->current_test_info()->test_case_name();\r
+               basename.append(".");\r
+               basename.append(::testing::UnitTest::GetInstance()->current_test_info()->name());\r
+               if (id)\r
+               {\r
+                       basename.append(".");\r
+                       basename.append(id);\r
+               }\r
+               std::filesystem::path path = getScreenshotFolderPath() / (basename + ".png");\r
+               int i = 2;\r
+               while (std::filesystem::exists(path))\r
+               {\r
+                       path = getScreenshotFolderPath() / (basename + "(" + std::to_string(i) + ").png");\r
+                       ++i;\r
+               }\r
+               return path;\r
+       }\r
+\r
+       void saveImage(const char *id = nullptr)\r
+       {\r
+               ASSERT_TRUE(GUITestUtils::saveWindowImageAsPNG(m_hwndWinMerge, getScreenshotFilePath(id)));\r
+       }\r
+\r
+       void saveForegroundDialogImage(const char *id = "")\r
+       {\r
+               HWND hwndDlg = GUITestUtils::findForegroundDialog();\r
+               ASSERT_TRUE(hwndDlg != nullptr);\r
+               if (hwndDlg)\r
+                       ASSERT_TRUE(GUITestUtils::saveWindowImageAsPNG(hwndDlg, getScreenshotFilePath(id)));\r
+       }\r
+\r
+protected:\r
+       static HWND m_hwndWinMerge;\r
+};\r
index 844f3ea..46d340a 100644 (file)
       <TargetMachine>MachineX86</TargetMachine>\r
       <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>\r
     </Link>\r
+    <Manifest>\r
+      <EnableDpiAwareness>true</EnableDpiAwareness>\r
+    </Manifest>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
     <ClCompile>\r
       <ProgramDatabaseFile>$(OutDir)GUITests.pdb</ProgramDatabaseFile>\r
       <SubSystem>Console</SubSystem>\r
     </Link>\r
+    <Manifest>\r
+      <EnableDpiAwareness>true</EnableDpiAwareness>\r
+    </Manifest>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
     <ClCompile>\r
       <TargetMachine>MachineX86</TargetMachine>\r
       <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>\r
     </Link>\r
+    <Manifest>\r
+      <EnableDpiAwareness>true</EnableDpiAwareness>\r
+    </Manifest>\r
   </ItemDefinitionGroup>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
     <ClCompile>\r
       <OptimizeReferences>true</OptimizeReferences>\r
       <EnableCOMDATFolding>true</EnableCOMDATFolding>\r
     </Link>\r
+    <Manifest>\r
+      <EnableDpiAwareness>true</EnableDpiAwareness>\r
+    </Manifest>\r
   </ItemDefinitionGroup>\r
   <ItemGroup>\r
     <ClCompile Include="..\..\..\Externals\gtest\src\gtest-all.cc">\r
index ce72310..a5bbae4 100644 (file)
@@ -12,7 +12,7 @@ namespace
 \r
 using namespace GUITestUtils;\r
 \r
-class MainFrameTest : public testing::Test\r
+class MainFrameTest : public CommonTest\r
 {\r
 protected:\r
        MainFrameTest()\r
@@ -28,6 +28,8 @@ protected:
        {\r
                // You can do set-up work for each test here.\r
                m_hwndWinMerge = execWinMerge();\r
+               std::error_code ec;\r
+               std::filesystem::create_directory(getScreenshotFolderPath(), ec);\r
        }\r
 \r
        static void TearDownTestCase()\r
@@ -49,50 +51,36 @@ protected:
                // before the destructor).\r
                ASSERT_TRUE(IsWindow(m_hwndWinMerge));\r
                waitForInputIdleByHWND(m_hwndWinMerge);\r
-       }\r
-\r
-       void selectMenu(UINT id)\r
-       {\r
-               GUITestUtils::selectMenu(m_hwndWinMerge, id);\r
+               SendMessage(m_hwndWinMerge, WM_COMMAND, ID_WINDOW_CLOSEALL, 0);\r
        }\r
 \r
        // Objects declared here can be used by all tests in the test case for Foo.\r
-       static HWND m_hwndWinMerge;\r
 };\r
 \r
-HWND MainFrameTest::m_hwndWinMerge = nullptr;\r
-\r
 TEST_F(MainFrameTest, FileNew)\r
 {\r
-       selectMenu(ID_FILE_NEW);\r
-       selectMenu(ID_WINDOW_CLOSEALL);\r
+       selectMenuAndSaveWindowImage(ID_FILE_NEW);\r
 }\r
 \r
 TEST_F(MainFrameTest, FileNew3)\r
 {\r
-       selectMenu(ID_FILE_NEW3);\r
-       selectMenu(ID_WINDOW_CLOSEALL);\r
+       selectMenuAndSaveWindowImage(ID_FILE_NEW3);\r
 }\r
 \r
 TEST_F(MainFrameTest, FileOpen)\r
 {\r
-       selectMenu(ID_FILE_OPEN);\r
-       selectMenu(ID_WINDOW_CLOSEALL);\r
+       selectMenuAndSaveWindowImage(ID_FILE_OPEN);\r
 }\r
 \r
 TEST_F(MainFrameTest, FileOpenConflict)\r
 {\r
-       selectMenu(ID_FILE_OPENCONFLICT);\r
-       HWND hwndOpen = findForegroundDialog();\r
-       ASSERT_TRUE(hwndOpen != nullptr);\r
+       HWND hwndOpen = selectOpenDialogMenuAndSaveDialogImage(ID_FILE_OPENCONFLICT);\r
        if (hwndOpen)\r
        {\r
-               typeText((getModuleFileName().parent_path() / "..\\..\\Data\\big_file.conflict\n").c_str());\r
+               typeText((getModuleFolder() / "..\\..\\Data\\big_file.conflict\n").c_str());\r
                waitUntilClose(hwndOpen);\r
        }\r
-       selectMenu(ID_WINDOW_CLOSEALL);\r
-       HWND hwndSave = findForegroundDialog();\r
-       ASSERT_TRUE(hwndSave != nullptr);\r
+       HWND hwndSave = selectOpenDialogMenuAndSaveDialogImage(ID_WINDOW_CLOSEALL);\r
        if (hwndSave)\r
        {\r
                typeAltPlusKey('R');\r
@@ -102,29 +90,23 @@ TEST_F(MainFrameTest, FileOpenConflict)
 \r
 TEST_F(MainFrameTest, FileOpenProject)\r
 {\r
-       selectMenu(ID_FILE_OPENPROJECT);\r
-       HWND hwndDlg = findForegroundDialog();\r
-       ASSERT_TRUE(hwndDlg != nullptr);\r
+       HWND hwndDlg = selectOpenDialogMenuAndSaveDialogImage(ID_FILE_OPENPROJECT);\r
        if (hwndDlg)\r
        {\r
-               typeText((getModuleFileName().parent_path() / "..\\..\\Data\\Dir2.WinMerge\n").c_str());\r
+               typeText((getModuleFolder() / "..\\..\\Data\\Dir2.WinMerge\n").c_str());\r
                waitUntilClose(hwndDlg);\r
                Sleep(1000);\r
        }\r
-       selectMenu(ID_WINDOW_CLOSEALL);\r
 }\r
 \r
 TEST_F(MainFrameTest, FileSaveProject)\r
 {\r
-       selectMenu(ID_FILE_SAVEPROJECT);\r
-       selectMenu(ID_WINDOW_CLOSEALL);\r
+       selectMenuAndSaveWindowImage(ID_FILE_SAVEPROJECT);\r
 }\r
 \r
 TEST_F(MainFrameTest, EditOptions)\r
 {\r
-       selectMenu(ID_OPTIONS);\r
-       HWND hwndDlg = findForegroundDialog();\r
-       ASSERT_TRUE(hwndDlg != nullptr);\r
+       HWND hwndDlg = selectOpenDialogMenuAndSaveDialogImage(ID_OPTIONS);\r
        if (hwndDlg)\r
        {\r
                typeText(L"\x1b");\r
@@ -134,33 +116,31 @@ TEST_F(MainFrameTest, EditOptions)
 \r
 TEST_F(MainFrameTest, ViewToolbar)\r
 {\r
-       selectMenu(ID_TOOLBAR_NONE);\r
-       selectMenu(ID_TOOLBAR_SMALL);\r
-       selectMenu(ID_TOOLBAR_NONE);\r
-       selectMenu(ID_TOOLBAR_BIG);\r
-       selectMenu(ID_TOOLBAR_NONE);\r
-       selectMenu(ID_TOOLBAR_HUGE);\r
-       selectMenu(ID_TOOLBAR_NONE);\r
-       selectMenu(ID_TOOLBAR_SMALL);\r
+       selectMenuAndSaveWindowImage(ID_TOOLBAR_NONE);\r
+       selectMenuAndSaveWindowImage(ID_TOOLBAR_SMALL);\r
+       selectMenuAndSaveWindowImage(ID_TOOLBAR_NONE);\r
+       selectMenuAndSaveWindowImage(ID_TOOLBAR_BIG);\r
+       selectMenuAndSaveWindowImage(ID_TOOLBAR_NONE);\r
+       selectMenuAndSaveWindowImage(ID_TOOLBAR_HUGE);\r
+       selectMenuAndSaveWindowImage(ID_TOOLBAR_NONE);\r
+       selectMenuAndSaveWindowImage(ID_TOOLBAR_SMALL);\r
 }\r
 \r
 TEST_F(MainFrameTest, ViewStatusBar)\r
 {\r
-       selectMenu(ID_VIEW_STATUS_BAR);\r
-       selectMenu(ID_VIEW_STATUS_BAR);\r
+       selectMenuAndSaveWindowImage(ID_VIEW_STATUS_BAR);\r
+       selectMenuAndSaveWindowImage(ID_VIEW_STATUS_BAR);\r
 }\r
 \r
 TEST_F(MainFrameTest, ViewTabBar)\r
 {\r
-       selectMenu(ID_VIEW_TAB_BAR);\r
-       selectMenu(ID_VIEW_TAB_BAR);\r
+       selectMenuAndSaveWindowImage(ID_VIEW_TAB_BAR);\r
+       selectMenuAndSaveWindowImage(ID_VIEW_TAB_BAR);\r
 }\r
 \r
 TEST_F(MainFrameTest, ToolsFilters)\r
 {\r
-       selectMenu(ID_TOOLS_FILTERS);\r
-       HWND hwndDlg = findForegroundDialog();\r
-       ASSERT_TRUE(hwndDlg != nullptr);\r
+       HWND hwndDlg = selectOpenDialogMenuAndSaveDialogImage(ID_TOOLS_FILTERS);\r
        if (hwndDlg)\r
        {\r
                typeText(L"\x1b");\r
@@ -170,9 +150,7 @@ TEST_F(MainFrameTest, ToolsFilters)
 \r
 TEST_F(MainFrameTest, ToolsGeneratePatch)\r
 {\r
-       selectMenu(ID_TOOLS_GENERATEPATCH);\r
-       HWND hwndDlg = findForegroundDialog();\r
-       ASSERT_TRUE(hwndDlg != nullptr);\r
+       HWND hwndDlg = selectOpenDialogMenuAndSaveDialogImage(ID_TOOLS_GENERATEPATCH);\r
        if (hwndDlg)\r
        {\r
                typeText(L"\x1b");\r
@@ -182,9 +160,7 @@ TEST_F(MainFrameTest, ToolsGeneratePatch)
 \r
 TEST_F(MainFrameTest, PluginsSettings)\r
 {\r
-       selectMenu(ID_PLUGINS_LIST);\r
-       HWND hwndDlg = findForegroundDialog();\r
-       ASSERT_TRUE(hwndDlg != nullptr);\r
+       HWND hwndDlg = selectOpenDialogMenuAndSaveDialogImage(ID_PLUGINS_LIST);\r
        if (hwndDlg)\r
        {\r
                typeText(L"\x1b");\r
@@ -194,91 +170,87 @@ TEST_F(MainFrameTest, PluginsSettings)
 \r
 TEST_F(MainFrameTest, PluginsPrediffer)\r
 {\r
-       selectMenu(ID_PREDIFFER_AUTO);\r
-       selectMenu(ID_PREDIFFER_MANUAL);\r
+       selectMenuAndSaveWindowImage(ID_PREDIFFER_AUTO);\r
+       selectMenuAndSaveWindowImage(ID_PREDIFFER_MANUAL);\r
 }\r
 \r
 TEST_F(MainFrameTest, PluginsUnpacker)\r
 {\r
-       selectMenu(ID_UNPACK_AUTO);\r
-       selectMenu(ID_UNPACK_MANUAL);\r
+       selectMenuAndSaveWindowImage(ID_UNPACK_AUTO);\r
+       selectMenuAndSaveWindowImage(ID_UNPACK_MANUAL);\r
 }\r
 \r
 TEST_F(MainFrameTest, PluginsReload)\r
 {\r
-       selectMenu(ID_RELOAD_PLUGINS);\r
+       selectMenuAndSaveWindowImage(ID_RELOAD_PLUGINS);\r
 }\r
 \r
 TEST_F(MainFrameTest, WindowClose)\r
 {\r
-       selectMenu(ID_FILE_NEW);\r
-       selectMenu(ID_FILE_CLOSE);\r
+       selectMenuAndSaveWindowImage(ID_FILE_NEW);\r
+       selectMenuAndSaveWindowImage(ID_FILE_CLOSE);\r
 }\r
 \r
 TEST_F(MainFrameTest, WindowCloseAll)\r
 {\r
-       selectMenu(ID_FILE_NEW);\r
-       selectMenu(ID_FILE_NEW);\r
-       selectMenu(ID_WINDOW_CLOSEALL);\r
+       selectMenuAndSaveWindowImage(ID_FILE_NEW);\r
+       selectMenuAndSaveWindowImage(ID_FILE_NEW);\r
+       selectMenuAndSaveWindowImage(ID_WINDOW_CLOSEALL);\r
 }\r
 \r
 TEST_F(MainFrameTest, WindowChangePane)\r
 {\r
-       selectMenu(ID_FILE_NEW);\r
-       selectMenu(ID_WINDOW_CHANGE_PANE);\r
-       selectMenu(ID_WINDOW_CLOSEALL);\r
+       selectMenuAndSaveWindowImage(ID_FILE_NEW);\r
+       selectMenuAndSaveWindowImage(ID_WINDOW_CHANGE_PANE);\r
 }\r
 \r
 TEST_F(MainFrameTest, WindowArrangement)\r
 {\r
-       selectMenu(ID_FILE_NEW);\r
-       selectMenu(ID_FILE_NEW);\r
-       selectMenu(ID_WINDOW_TILE_HORZ);\r
-       selectMenu(ID_WINDOW_TILE_VERT);\r
-       selectMenu(ID_WINDOW_CASCADE);\r
-       selectMenu(ID_WINDOW_CLOSEALL);\r
+       selectMenuAndSaveWindowImage(ID_FILE_NEW);\r
+       selectMenuAndSaveWindowImage(ID_FILE_NEW);\r
+       selectMenuAndSaveWindowImage(ID_WINDOW_TILE_HORZ);\r
+       selectMenuAndSaveWindowImage(ID_WINDOW_TILE_VERT);\r
+       selectMenuAndSaveWindowImage(ID_WINDOW_CASCADE);\r
 }\r
 \r
 TEST_F(MainFrameTest, HelpWinMergeHelp)\r
 {\r
-       selectMenu(ID_HELP_CONTENTS);\r
+       selectMenuAndSaveWindowImage(ID_HELP_CONTENTS);\r
        Sleep(1000);\r
        SwitchToThisWindow(m_hwndWinMerge, TRUE);\r
 }\r
 \r
 TEST_F(MainFrameTest, HelpReleaseNotes)\r
 {\r
-       selectMenu(ID_HELP_RELEASENOTES);\r
+       selectMenuAndSaveWindowImage(ID_HELP_RELEASENOTES);\r
        Sleep(1000);\r
        SwitchToThisWindow(m_hwndWinMerge, TRUE);\r
 }\r
 \r
 TEST_F(MainFrameTest, HelpTranslations)\r
 {\r
-       selectMenu(ID_HELP_TRANSLATIONS);\r
+       selectMenuAndSaveWindowImage(ID_HELP_TRANSLATIONS);\r
        Sleep(1000);\r
        SwitchToThisWindow(m_hwndWinMerge, TRUE);\r
 }\r
 \r
 TEST_F(MainFrameTest, HelpConfiguraiton)\r
 {\r
-       selectMenu(ID_HELP_GETCONFIG);\r
+       selectMenuAndSaveWindowImage(ID_HELP_GETCONFIG);\r
        Sleep(1000);\r
        SwitchToThisWindow(m_hwndWinMerge, TRUE);\r
 }\r
 \r
 TEST_F(MainFrameTest, HelpGNULicense)\r
 {\r
-       selectMenu(ID_HELP_GNULICENSE);\r
+       selectMenuAndSaveWindowImage(ID_HELP_GNULICENSE);\r
        Sleep(1000);\r
        SwitchToThisWindow(m_hwndWinMerge, TRUE);\r
 }\r
 \r
 TEST_F(MainFrameTest, HelpAbout)\r
 {\r
-       selectMenu(ID_APP_ABOUT);\r
-       HWND hwndDlg = findForegroundDialog();\r
-       ASSERT_TRUE(hwndDlg != nullptr);\r
+       HWND hwndDlg = selectOpenDialogMenuAndSaveDialogImage(ID_APP_ABOUT);\r
        if (hwndDlg)\r
        {\r
                typeText(L"\x1b");\r
index 0cb106b..41dc971 100644 (file)
@@ -20,4 +20,5 @@
 #include <windows.h>\r
 #include <tchar.h>\r
 #include <afxres.h>\r
+#include <atlimage.h>\r
 #include "GUITestUtils.h"\r