diff --git a/sakura_core/env/CShareData.cpp b/sakura_core/env/CShareData.cpp index e5dea37f5a..b391b92cbf 100644 --- a/sakura_core/env/CShareData.cpp +++ b/sakura_core/env/CShareData.cpp @@ -1130,14 +1130,14 @@ int CShareData::GetMacroFilename( int idx, WCHAR *pszPath, int nBufLen ) if( pszPath == nullptr || nBufLen <= nLen ){ return -nLen; } - wcscpy( pszPath, pszFile ); + ::wcscpy_s(pszPath, nBufLen, pszFile); return nLen; } else { // フォルダー指定あり // 相対パス→絶対パス const auto nFolderSep = AddLastChar( m_pShareData->m_Common.m_sMacro.m_szMACROFOLDER, std::size(m_pShareData->m_Common.m_sMacro.m_szMACROFOLDER), L'\\' ); int nAllLen; - WCHAR *pszDir; + LPCWSTR pszDir = nullptr; WCHAR szDir[_MAX_PATH + SFilePath::size()]; // 2003.06.24 Moca フォルダーも相対パスなら実行ファイルからのパス @@ -1155,12 +1155,14 @@ int CShareData::GetMacroFilename( int idx, WCHAR *pszPath, int nBufLen ) return -nAllLen; } - wcscpy( pszPath, pszDir ); - WCHAR *ptr2 = pszPath + nDirLen; + ::wcsncpy_s(pszPath, nBufLen, pszDir, nDirLen); + if( -1 == nFolderSep ){ - *ptr2++ = L'\\'; + ::wcscat_s(pszPath, nBufLen, L"\\"); } - wcscpy( ptr2, pszFile ); + + ::wcscat_s(pszPath, nBufLen, pszFile); + return nAllLen; } } diff --git a/sakura_core/window/CEditWnd.cpp b/sakura_core/window/CEditWnd.cpp index 2af46dbc76..320ae57ff6 100644 --- a/sakura_core/window/CEditWnd.cpp +++ b/sakura_core/window/CEditWnd.cpp @@ -274,7 +274,11 @@ void CEditWnd::UpdateCaption() } //!< ウィンドウ生成用の矩形を取得 -void CEditWnd::_GetWindowRectForInit(CMyRect* rcResult, [[maybe_unused]] int nGroup, const STabGroupInfo& sTabGroupInfo) const +void CEditWnd::_GetWindowRectForInit( + CMyRect* rcResult, + int nGroup [[maybe_unused]], + const STabGroupInfo& sTabGroupInfo +) const { /* ウィンドウサイズ継承 */ int nWinCX, nWinCY; @@ -384,7 +388,10 @@ HWND CEditWnd::_CreateMainWindow(int nGroup, const STabGroupInfo& sTabGroupInfo) return hwndResult; } -void CEditWnd::_GetTabGroupInfo(STabGroupInfo* pTabGroupInfo, int& nGroup) const +void CEditWnd::_GetTabGroupInfo( + STabGroupInfo* pTabGroupInfo, + int& nGroup +) const { HWND hwndTop = nullptr; WINDOWPLACEMENT wpTop = {0}; @@ -798,20 +805,20 @@ void CEditWnd::LayoutMainMenu() { WCHAR szLabel[300]; WCHAR szKey[10]; - CommonSetting_MainMenu* pcMenu = &m_pShareData->m_Common.m_sMainMenu; - CMainMenu* cMainMenu; + + const auto pcMenu = &m_pShareData->m_Common.m_sMainMenu; + HWND hWnd = GetHwnd(); - HMENU hMenu; - int i; int j; int nCount; LPCWSTR pszName; - hMenu = ::CreateMenu(); - for (i = 0; i < MAX_MAINMENU_TOP && pcMenu->m_nMenuTopIdx[i] >= 0; i++) { + const auto hMenu = ::CreateMenu(); + + for (int i = 0; i < MAX_MAINMENU_TOP && pcMenu->m_nMenuTopIdx[i] >= 0; i++) { nCount = ( i >= MAX_MAINMENU_TOP || pcMenu->m_nMenuTopIdx[i+1] < 0 ? pcMenu->m_nMainMenuNum : pcMenu->m_nMenuTopIdx[i+1] ) - pcMenu->m_nMenuTopIdx[i]; // メニュー項目数 - cMainMenu = &pcMenu->m_cMainMenuTbl[pcMenu->m_nMenuTopIdx[i]]; + const auto cMainMenu = &pcMenu->m_cMainMenuTbl[pcMenu->m_nMenuTopIdx[i]]; switch (cMainMenu->m_nType) { case T_NODE: // ラベル未設定かつFunctionコードがありならストリングテーブルから取得 2012/10/18 syat 各国語対応 @@ -1007,8 +1014,7 @@ void CEditWnd::LayoutMiniMap( void ) void CEditWnd::EndLayoutBars( BOOL bAdjust/* = TRUE*/ ) { int nCmdShow = m_pPrintPreview? SW_HIDE: SW_SHOW; - HWND hwndToolBar = (nullptr != m_cToolbar.GetRebarHwnd())? m_cToolbar.GetRebarHwnd(): m_cToolbar.GetToolbarHwnd(); - if( nullptr != hwndToolBar ) + if (const auto hwndToolBar = (nullptr != m_cToolbar.GetRebarHwnd()) ? m_cToolbar.GetRebarHwnd() : m_cToolbar.GetToolbarHwnd()) ::ShowWindow( hwndToolBar, nCmdShow ); if( m_cStatusBar.GetStatusHwnd() ) ::ShowWindow( m_cStatusBar.GetStatusHwnd(), nCmdShow ); @@ -1106,7 +1112,6 @@ LRESULT CEditWnd::DispatchEvent( LPNMHDR pnmh; int nPane; EditInfo* pfi; - LPHELPINFO lphi; UINT idCtl; /* コントロールのID */ LPDRAWITEMSTRUCT lpdis; /* 項目描画情報 */ @@ -1218,13 +1223,8 @@ LRESULT CEditWnd::DispatchEvent( return GetActiveView().GetCommander().HandleCommand( F_COPY, true, 0, 0, 0, 0 ); case WM_HELP: - lphi = (LPHELPINFO) lParam; - switch( lphi->iContextType ){ - case HELPINFO_MENUITEM: + if (const auto lphi = (LPHELPINFO) lParam; lphi && HELPINFO_MENUITEM == lphi->iContextType) { MyWinHelp( hwnd, HELP_CONTEXT, FuncID_To_HelpContextID( (EFunctionCode)lphi->iCtrlId ) ); - break; - default: - break; } return TRUE; @@ -1261,9 +1261,8 @@ LRESULT CEditWnd::DispatchEvent( // ・WM_SHOWWINDOWはすべての表示切替で呼ばれるわけではないのでWM_WINDOWPOSCHANGEDで処理 // (タブグループ解除などの設定変更時はWM_SHOWWINDOWは呼ばれない) // ・即時切替だとタブ切替に干渉して元のタブに戻ってしまうことがあるので後で切り替える - WINDOWPOS* pwp; - pwp = (WINDOWPOS*)lParam; - if( pwp->flags & SWP_SHOWWINDOW ) + if (const auto pwp = (WINDOWPOS*)lParam; + pwp->flags & SWP_SHOWWINDOW) ::PostMessage( hwnd, MYWM_SHOWOWNEDPOPUPS, TRUE, 0 ); else if( pwp->flags & SWP_HIDEWINDOW ) ::PostMessage( hwnd, MYWM_SHOWOWNEDPOPUPS, FALSE, 0 ); @@ -1562,11 +1561,11 @@ LRESULT CEditWnd::DispatchEvent( CJackManager::getInstance()->InvokePlugins( PP_EDITOR_END, &GetActiveView() ); // タブまとめ表示では閉じる動作はオプション指定に従う // 2006.02.13 ryoji - if( PM_CLOSE_EXIT != (PM_CLOSE_EXIT & wParam) ){ // 全終了要求でない場合 + if (PM_CLOSE_EXIT != (PM_CLOSE_EXIT & wParam) && // 全終了要求でない場合 // タブまとめ表示で(無題)を残す指定の場合、残ウィンドウが1個なら新規エディタを起動して終了する - if( m_pShareData->m_Common.m_sTabBar.m_bDispTabWnd && - !m_pShareData->m_Common.m_sTabBar.m_bDispTabWndMultiWin && - m_pShareData->m_Common.m_sTabBar.m_bTab_RetainEmptyWin + m_pShareData->m_Common.m_sTabBar.m_bDispTabWnd && + !m_pShareData->m_Common.m_sTabBar.m_bDispTabWndMultiWin && + m_pShareData->m_Common.m_sTabBar.m_bTab_RetainEmptyWin ){ // 自グループ内の残ウィンドウ数を調べる // 2007.06.20 ryoji int nGroup = CAppNodeManager::getInstance()->GetEditNode( GetHwnd() )->GetGroup(); @@ -1586,7 +1585,6 @@ LRESULT CEditWnd::DispatchEvent( true ); } - } } ::DestroyWindow( hwnd ); } @@ -2695,7 +2693,12 @@ void CEditWnd::SetMenuFuncSel( HMENU hMenu, EFunctionCode nFunc, const WCHAR* sK m_cMenuDrawer.MyAppendMenu( hMenu, MF_BYPOSITION | MF_STRING, nFunc, sName, sKey ); } -STDMETHODIMP CEditWnd::DragEnter( LPDATAOBJECT pDataObject, DWORD dwKeyState, [[maybe_unused]] POINTL pt, LPDWORD pdwEffect) const +STDMETHODIMP CEditWnd::DragEnter( + LPDATAOBJECT pDataObject, + DWORD dwKeyState, + POINTL pt [[maybe_unused]], + LPDWORD pdwEffect +) const { if( pDataObject == nullptr || pdwEffect == nullptr ){ return E_INVALIDARG; @@ -2717,7 +2720,11 @@ STDMETHODIMP CEditWnd::DragEnter( LPDATAOBJECT pDataObject, DWORD dwKeyState, [[ return S_OK; } -STDMETHODIMP CEditWnd::DragOver([[maybe_unused]] DWORD dwKeyState, [[maybe_unused]] POINTL pt, LPDWORD pdwEffect) const +STDMETHODIMP CEditWnd::DragOver( + DWORD dwKeyState [[maybe_unused]], + POINTL pt [[maybe_unused]], + LPDWORD pdwEffect +) const { if( pdwEffect == nullptr ) return E_INVALIDARG; @@ -3096,7 +3103,7 @@ LRESULT CEditWnd::OnSize2( WPARAM wParam, LPARAM lParam, bool bUpdateStatus ) int nBdrWidth = ::GetSystemMetrics(SM_CXSIZEFRAME) + ::GetSystemMetrics(SM_CXEDGE) * 2; // 境界の幅 SIZE sz; HDC hdc; - int i; + // 2004-02-28 yasu // 正確な幅を計算するために、表示フォントを取得してhdcに選択させる。 hdc = ::GetDC( m_cStatusBar.GetStatusHwnd() ); @@ -3109,7 +3116,7 @@ LRESULT CEditWnd::OnSize2( WPARAM wParam, LPARAM lParam, bool bUpdateStatus ) if( wParam != SIZE_MAXIMIZED ){ nStArr[nStArrNum - 1] -= nSbxWidth; } - for( i = nStArrNum - 1; i > 0; i-- ){ + for (int i = nStArrNum - 1; i > 0; --i) { ::GetTextExtentPoint32W(hdc, PSZ_ARGS(pszLabel[i]), &sz); nStArr[i - 1] = nStArr[i] - ( sz.cx + nBdrWidth ); } @@ -3751,8 +3758,8 @@ int CEditWnd::CreateFileDropDownMenu( HWND hwnd ) */ void CEditWnd::SetWindowIcon(HICON hIcon, int flag) const { - HICON hOld = (HICON)::SendMessage( GetHwnd(), WM_SETICON, flag, (LPARAM)hIcon ); - if( hOld != nullptr ){ + if (const auto hOld = (HICON)::SendMessageW(GetHwnd(), WM_SETICON, flag, LPARAM(hIcon)); + hOld != nullptr ){ ::DestroyIcon( hOld ); } } @@ -4392,10 +4399,9 @@ void CEditWnd::SetActivePane( int nIndex ) */ bool CEditWnd::SetDrawSwitchOfAllViews( bool bDraw ) { - int i; bool bDrawSwitchOld = GetActiveView().GetDrawSwitch(); - for( i = 0; i < GetAllViewCount(); i++ ){ + for (int i = 0; i < GetAllViewCount(); ++i) { GetView(i).SetDrawSwitch( bDraw ); } m_cMiniMapView.SetDrawSwitch( bDraw ); @@ -4412,11 +4418,8 @@ bool CEditWnd::SetDrawSwitchOfAllViews( bool bDraw ) */ void CEditWnd::RedrawAllViews( CEditView* pcViewExclude ) { - int i; - CEditView* pcView; - - for( i = 0; i < GetAllViewCount(); i++ ){ - pcView = &GetView(i); + for (int i = 0; i < GetAllViewCount(); ++i) { + const auto pcView = &GetView(i); if( pcView == pcViewExclude ) continue; if( i == m_nActivePaneIndex ){ @@ -4584,8 +4587,7 @@ CLogicPointEx* CEditWnd::SavePhysPosOfAllView() for( int i = 0; i < NUM_OF_VIEW; ++i ){ CLayoutPoint tmp = CLayoutPoint(CLayoutInt(0), GetView(i).m_pcTextArea->GetViewTopLine()); - const CLayout* layoutLine = GetDocument()->m_cLayoutMgr.SearchLineByLayoutY(tmp.GetY2()); - if( layoutLine ){ + if (const auto layoutLine = GetDocument()->m_cLayoutMgr.SearchLineByLayoutY(tmp.GetY2())) { CLogicInt nLineCenter = layoutLine->GetLogicOffset() + layoutLine->GetLengthWithoutEOL() / 2; pptPosArray[i * NUM_OF_POS + 0].x = nLineCenter; pptPosArray[i * NUM_OF_POS + 0].y = layoutLine->GetLogicLineNo(); @@ -4772,8 +4774,7 @@ const LOGFONT& CEditWnd::GetLogfont(bool bTempSetting) if( bTempSetting && GetDocument()->m_blfCurTemp ){ return GetDocument()->m_lfCur; } - bool bUseTypeFont = GetDocument()->m_cDocType.GetDocumentAttribute().m_bUseTypeFont; - if( bUseTypeFont ){ + if (const auto bUseTypeFont = GetDocument()->m_cDocType.GetDocumentAttribute().m_bUseTypeFont) { return GetDocument()->m_cDocType.GetDocumentAttribute().m_lf; } return m_pShareData->m_Common.m_sView.m_lf; @@ -4784,8 +4785,7 @@ int CEditWnd::GetFontPointSize(bool bTempSetting) if( bTempSetting && GetDocument()->m_blfCurTemp ){ return GetDocument()->m_nPointSizeCur; } - bool bUseTypeFont = GetDocument()->m_cDocType.GetDocumentAttribute().m_bUseTypeFont; - if( bUseTypeFont ){ + if (const auto bUseTypeFont = GetDocument()->m_cDocType.GetDocumentAttribute().m_bUseTypeFont) { return GetDocument()->m_cDocType.GetDocumentAttribute().m_nPointSize; } return m_pShareData->m_Common.m_sView.m_nPointSize; @@ -4795,8 +4795,7 @@ ECharWidthCacheMode CEditWnd::GetLogfontCacheMode() if( GetDocument()->m_blfCurTemp ){ return CWM_CACHE_LOCAL; } - bool bUseTypeFont = GetDocument()->m_cDocType.GetDocumentAttribute().m_bUseTypeFont; - if( bUseTypeFont ){ + if (const auto bUseTypeFont = GetDocument()->m_cDocType.GetDocumentAttribute().m_bUseTypeFont) { return CWM_CACHE_LOCAL; } return CWM_CACHE_SHARE; diff --git a/sakura_core/window/CEditWnd.h b/sakura_core/window/CEditWnd.h index 892cc762ee..6ebbd6efae 100644 --- a/sakura_core/window/CEditWnd.h +++ b/sakura_core/window/CEditWnd.h @@ -330,8 +330,8 @@ class CEditWnd const CMyPoint& GetDragPosOrg() const{ return m_ptDragPosOrg; } /* IDropTarget実装 */ // 2008.06.20 ryoji - STDMETHODIMP DragEnter(LPDATAOBJECT pDataObject, DWORD dwKeyState, POINTL pt, LPDWORD pdwEffect) const; - STDMETHODIMP DragOver(DWORD dwKeyState, POINTL pt, LPDWORD pdwEffect) const; + STDMETHODIMP DragEnter(LPDATAOBJECT pDataObject, DWORD dwKeyState, POINTL pt [[maybe_unused]], LPDWORD pdwEffect) const; + STDMETHODIMP DragOver(DWORD dwKeyState [[maybe_unused]], POINTL pt [[maybe_unused]], LPDWORD pdwEffect) const; STDMETHODIMP DragLeave() const; STDMETHODIMP Drop(LPDATAOBJECT pDataObject, DWORD dwKeyState, POINTL pt, LPDWORD pdwEffect); diff --git a/src/test/cpp/tests1/test-file.cpp b/src/test/cpp/tests1/test-file.cpp index 362a49f2aa..58ce1b15bd 100644 --- a/src/test/cpp/tests1/test-file.cpp +++ b/src/test/cpp/tests1/test-file.cpp @@ -338,12 +338,18 @@ class CExeIniTest : public ::testing::Test { */ std::filesystem::path exeIniPath; + /* + * profile1 配下のフォルダーのパス + */ + std::filesystem::path profileDirPath; + /*! * テストが起動される直前に毎回呼ばれる関数 */ void SetUp() override { // マルチユーザー構成設定ファイルのパス exeIniPath = GetExeFileName().concat(L".ini"); + profileDirPath.clear(); } /*! @@ -358,8 +364,16 @@ class CExeIniTest : public ::testing::Test { std::filesystem::remove(exeIniPath, ec); } + // profile1 配下のフォルダーも削除する + if (!profileDirPath.empty()) { + std::filesystem::remove_all(profileDirPath, ec); + } + // 削除チェック EXPECT_FALSE(fexist(exeIniPath)); + if (!profileDirPath.empty()) { + EXPECT_FALSE(std::filesystem::exists(profileDirPath)); + } } }; @@ -383,9 +397,12 @@ TEST_F(CExeIniTest, GetIniFileName_PrivateRoamingAppData) // プロセスのインスタンスを用意する CControlProcess dummy(nullptr, LR"(-PROF="profile1")"); + const auto iniPath = GetIniFileName(); + profileDirPath = iniPath.parent_path(); + // 期待値を取得する auto expected = ExpandEnvironmentStringsW(LR"(%USERPROFILE%\AppData\Roaming\sakura\profile1\)"); - expected += GetIniFileName().filename(); + expected += iniPath.filename(); // テスト実施 EXPECT_THAT(GetIniFileName(), StrEq(expected)); @@ -554,6 +571,10 @@ TEST(file, GetInidirOrExedir) // 両方ないときはINI基準のパスが変える GetInidirOrExedir(buf.data(), filename, true); EXPECT_THAT(buf, StartsWith(iniBasePath.c_str())); + + std::filesystem::remove(iniBasePath, ec); + std::filesystem::remove(exeBasePath, ec); + std::filesystem::remove_all(iniBasePath.parent_path(), ec); } /*! diff --git a/src/test/cpp/tests1/test-window.cpp b/src/test/cpp/tests1/test-window.cpp index ee6ab3a000..8fa5d8f70d 100644 --- a/src/test/cpp/tests1/test-window.cpp +++ b/src/test/cpp/tests1/test-window.cpp @@ -684,6 +684,16 @@ struct EditWndTest : public ::testing::Test, public window::EditorTestSuite, pub */ void TearDown() override { + // 強制的に「編集なし」にする + pcEditDoc->m_cDocEditor.m_bIsDocModified = false; + + // 強制的に「Grepモード」を解除する + CEditApp::getInstance()->m_pcGrepAgent->m_bGrepMode = false; + + // キューに溜まったメッセージは全部捨てる + MSG msg{}; + while (::PeekMessageW(&msg, nullptr, 0L, 0L, PM_REMOVE)) ; + mgr = nullptr; } @@ -735,6 +745,305 @@ struct EditWndTest : public ::testing::Test, public window::EditorTestSuite, pub } }; +TEST_F(EditWndTest, DISABLED_OnCreate101) // パラメーター不正の考慮がないので呼べない +{ + HWND hWndEdit = nullptr; + EXPECT_THAT(pcEditWnd->DispatchEvent(hWndEdit, WM_CREATE, 0L, 0L), IsTrue()); // 戻り値は反転される +} + +TEST_F(EditWndTest, DISABLED_OnDestroy101) // パラメーター不正の考慮がないので呼べない +{ + HWND hWndEdit = nullptr; + EXPECT_THAT(pcEditWnd->DispatchEvent(hWndEdit, WM_DESTROY, 0L, 0L), IsFalse()); +} + +TEST_F(EditWndTest, DISABLED_OnMove101) // パラメーター不正の考慮がないので呼べない +{ + HWND hWndEdit = nullptr; + EXPECT_THAT(pcEditWnd->DispatchEvent(hWndEdit, WM_MOVE, 0L, 0L), IsFalse()); +} + +TEST_F(EditWndTest, DISABLED_OnSize101) // パラメーター不正の考慮がないので呼べない +{ + HWND hWndEdit = nullptr; + EXPECT_THAT(pcEditWnd->DispatchEvent(hWndEdit, WM_SIZE, SIZE_RESTORED, 0L), IsFalse()); +} + +TEST_F(EditWndTest, DISABLED_OnSetFocus101) // パラメーター不正の考慮がないので呼べない +{ + HWND hWndEdit = nullptr; + EXPECT_THAT(pcEditWnd->DispatchEvent(hWndEdit, WM_SETFOCUS, 0L, 0L), IsFalse()); +} + +TEST_F(EditWndTest, OnEnable101) +{ + HWND hWndEdit = nullptr; + EXPECT_THAT(pcEditWnd->DispatchEvent(hWndEdit, WM_ENABLE, TRUE, 0L), IsFalse()); + EXPECT_THAT(pcEditWnd->DispatchEvent(hWndEdit, WM_ENABLE, FALSE, 0L), IsFalse()); +} + +TEST_F(EditWndTest, OnSetText101) +{ + HWND hWndEdit = nullptr; + pcEditWnd->DispatchEvent(hWndEdit, WM_SETTEXT, 0L, LPARAM(L"title-from-test")); +} + +TEST_F(EditWndTest, DISABLED_OnClose101) // パラメーター不正の考慮がないので呼べない +{ + HWND hWndEdit = nullptr; + EXPECT_THAT(pcEditWnd->DispatchEvent(hWndEdit, WM_CLOSE, 0L, 0L), IsFalse()); +} + +TEST_F(EditWndTest, DISABLED_OnQueryEndSession101) // パラメーター不正の考慮がないので呼べない +{ + HWND hWndEdit = nullptr; + EXPECT_THAT(pcEditWnd->DispatchEvent(hWndEdit, WM_QUERYENDSESSION, 0L, 0L), IsTrue()); +} + +TEST_F(EditWndTest, OnShowWindow101) +{ + HWND hWndEdit = nullptr; + EXPECT_THAT(pcEditWnd->DispatchEvent(hWndEdit, WM_SHOWWINDOW, FALSE, 0L), IsFalse()); +} + +TEST_F(EditWndTest, OnPaintIcon101) +{ + HWND hWndEdit = nullptr; + EXPECT_THAT(pcEditWnd->DispatchEvent(hWndEdit, WM_PAINTICON, 0L, 0L), IsFalse()); +} + +TEST_F(EditWndTest, OnIconEraseBkgnd101) +{ + HWND hWndEdit = nullptr; + EXPECT_THAT(pcEditWnd->DispatchEvent(hWndEdit, WM_ICONERASEBKGND, 0L, 0L), IsFalse()); +} + +TEST_F(EditWndTest, OnWindowPosChanged101) +{ + HWND hWndEdit = nullptr; + WINDOWPOS wp{}; + wp.flags = SWP_SHOWWINDOW; + EXPECT_THAT(pcEditWnd->DispatchEvent(hWndEdit, WM_WINDOWPOSCHANGED, 0L, LPARAM(&wp)), IsFalse()); +} + +TEST_F(EditWndTest, OnWindowPosChanged102) +{ + HWND hWndEdit = nullptr; + WINDOWPOS wp{}; + wp.flags = SWP_HIDEWINDOW; + EXPECT_THAT(pcEditWnd->DispatchEvent(hWndEdit, WM_WINDOWPOSCHANGED, 0L, LPARAM(&wp)), IsFalse()); +} + +TEST_F(EditWndTest, OnHScroll101) +{ + HWND hWndEdit = nullptr; + pcEditWnd->DispatchEvent(hWndEdit, WM_HSCROLL, MAKEWPARAM(SB_LINELEFT, 0), 0L); +} + +TEST_F(EditWndTest, OnVScroll101) +{ + HWND hWndEdit = nullptr; + pcEditWnd->DispatchEvent(hWndEdit, WM_VSCROLL, MAKEWPARAM(SB_LINEUP, 0), 0L); +} + +TEST_F(EditWndTest, OnMenuSelect101) +{ + HWND hWndEdit = nullptr; + pcEditWnd->DispatchEvent(hWndEdit, WM_MENUSELECT, 0L, 0L); +} + +TEST_F(EditWndTest, DISABLED_OnNotify101) // パラメーター不正の考慮がないので呼べない +{ + HWND hWndEdit = nullptr; + EXPECT_THAT(pcEditWnd->DispatchEvent(hWndEdit, WM_NOTIFY, 0L, 0L), IsFalse()); +} + +TEST_F(EditWndTest, OnHelp101) +{ + HWND hWndEdit = nullptr; + EXPECT_THAT(pcEditWnd->DispatchEvent(hWndEdit, WM_HELP, 0L, 0L), IsTrue()); + + HELPINFO hi{}; + hi.iContextType = HELPINFO_WINDOW; + EXPECT_THAT(pcEditWnd->DispatchEvent(hWndEdit, WM_HELP, 0L, LPARAM(&hi)), IsTrue()); +} + +TEST_F(EditWndTest, OnCommand101) +{ + HWND hWndEdit = nullptr; + EXPECT_THAT(pcEditWnd->DispatchEvent(hWndEdit, WM_COMMAND, 0L, 0L), IsFalse()); +} + +TEST_F(EditWndTest, OnCommand102) +{ + // 表示されたモーダルダイアログをキャンセルボタンで閉じるようにする + dialog::ModalDialogCloser closer; + + GetDllShareData().m_sHistory.m_nOPENFOLDERArrNum = 1; + + // ファイルを開くダイアログを表示する + HWND hWndEdit = nullptr; + EXPECT_THAT(pcEditWnd->DispatchEvent(hWndEdit, WM_COMMAND, MAKEWPARAM(IDM_SELOPENFOLDER, 0), 0L), IsFalse()); + + GetDllShareData().m_sHistory.m_nOPENFOLDERArrNum = 0; +} + +TEST_F(EditWndTest, DISABLED_OnSysCommand101) // パラメーター不正の考慮がないので呼べない +{ + HWND hWndEdit = nullptr; + EXPECT_THAT(pcEditWnd->DispatchEvent(hWndEdit, WM_SYSCOMMAND, SC_CLOSE, 0L), IsFalse()); +} + +TEST_F(EditWndTest, OnTimer101) +{ + HWND hWndEdit = nullptr; + EXPECT_THAT(pcEditWnd->DispatchEvent(hWndEdit, WM_TIMER, 2 /* IDT_EDITCHECK */, 0L), IsFalse()); +} + +TEST_F(EditWndTest, OnExitMenuLoop101) +{ + HWND hWndEdit = nullptr; + pcEditWnd->DispatchEvent(hWndEdit, WM_EXITMENULOOP, 0L, 0L); +} + +TEST_F(EditWndTest, DISABLED_OnInitMenuPopup101) // パラメーター不正の考慮がないので呼べない +{ + HWND hWndEdit = nullptr; + pcEditWnd->DispatchEvent(hWndEdit, WM_INITMENUPOPUP, 0L, 0L); +} + +TEST_F(EditWndTest, DISABLED_OnDropFiles101) // パラメーター不正の考慮がないので呼べない +{ + HWND hWndEdit = nullptr; + pcEditWnd->DispatchEvent(hWndEdit, WM_DROPFILES, 0L, 0L); +} + +TEST_F(EditWndTest, DISABLED_OnThemeChanged101) // パラメーター不正の考慮がないので呼べない +{ + HWND hWndEdit = nullptr; + pcEditWnd->DispatchEvent(hWndEdit, WM_THEMECHANGED, 0L, 0L); +} + +TEST_F(EditWndTest, OnMenuChar101) +{ + HWND hWndEdit = nullptr; + pcEditWnd->DispatchEvent(hWndEdit, WM_MENUCHAR, 0L, 0L); +} + +TEST_F(EditWndTest, OnCopy101) +{ + HWND hWndEdit = nullptr; + pcEditWnd->DispatchEvent(hWndEdit, WM_COPY, 0L, 0L); +} + +TEST_F(EditWndTest, OnPaste101) +{ + HWND hWndEdit = nullptr; + pcEditWnd->DispatchEvent(hWndEdit, WM_PASTE, 0L, 0L); +} + +TEST_F(EditWndTest, OnMyWmGetLineData101) +{ + HWND hWndEdit = nullptr; + const auto invalidLine = GetDocument()->m_cDocLineMgr.GetLineCount() + CLogicInt(1); + EXPECT_THAT(pcEditWnd->DispatchEvent(hWndEdit, MYWM_GETLINEDATA, WPARAM(invalidLine), 0L), Eq(-2)); +} + +TEST_F(EditWndTest, OnMyWmUipiCheck101) +{ + HWND hWndEdit = nullptr; + constexpr LPARAM expected = 0x1234; + EXPECT_THAT(pcEditWnd->DispatchEvent(hWndEdit, MYWM_UIPI_CHECK, 0L, expected), Eq(expected)); +} + +TEST_F(EditWndTest, OnMyWmAllowActivate101) +{ + HWND hWndEdit = nullptr; + pcEditWnd->DispatchEvent(hWndEdit, MYWM_ALLOWACTIVATE, 0L, 0L); +} + +TEST_F(EditWndTest, DISABLED_OnMyWmChangeSetting101) // 副作用が大きいので無効 +{ + HWND hWndEdit = nullptr; + pcEditWnd->DispatchEvent(hWndEdit, MYWM_CHANGESETTING, 0L, int(PM_CHANGESETTING_ALL)); +} + +TEST_F(EditWndTest, OnMyWmSaveEditState101) +{ + HWND hWndEdit = nullptr; + EXPECT_THAT(pcEditWnd->DispatchEvent(hWndEdit, MYWM_SAVEEDITSTATE, 0L, 0L), IsFalse()); +} + +TEST_F(EditWndTest, OnMyWmSetActivePane101) +{ + HWND hWndEdit = nullptr; + EXPECT_THAT(pcEditWnd->DispatchEvent(hWndEdit, MYWM_SETACTIVEPANE, WPARAM(-1), 0L), IsFalse()); +} + +TEST_F(EditWndTest, OnMyWmSetCaretPos101) +{ + HWND hWndEdit = nullptr; + GetDllShareData().m_sWorkBuffer.m_LogicPoint = CLogicPoint(0, 0); + EXPECT_THAT(pcEditWnd->DispatchEvent(hWndEdit, MYWM_SETCARETPOS, 0L, 0L), IsFalse()); +} + +TEST_F(EditWndTest, OnMyWmGetCaretPos101) +{ + HWND hWndEdit = nullptr; + EXPECT_THAT(pcEditWnd->DispatchEvent(hWndEdit, MYWM_GETCARETPOS, 0L, 0L), IsFalse()); +} + +TEST_F(EditWndTest, OnMyWmGetLineCount101) +{ + HWND hWndEdit = nullptr; + const auto lineCount = pcEditWnd->DispatchEvent(hWndEdit, MYWM_GETLINECOUNT, 0L, 0L); + EXPECT_THAT(lineCount, Ge(0)); +} + +TEST_F(EditWndTest, OnMyWmAddStringLenW101) +{ + HWND hWndEdit = nullptr; + auto* pWork = GetDllShareData().m_sWorkBuffer.GetWorkBuffer(); + ::wcscpy_s(pWork, 4, L"abc"); + EXPECT_THAT(pcEditWnd->DispatchEvent(hWndEdit, MYWM_ADDSTRINGLEN_W, 3, 0L), IsFalse()); +} + +TEST_F(EditWndTest, OnLButtonDown101) +{ + HWND hWndEdit = nullptr; + EXPECT_THAT(pcEditWnd->DispatchEvent(hWndEdit, WM_LBUTTONDOWN, MK_LBUTTON, MAKELPARAM(10, 20)), IsFalse()); +} + +TEST_F(EditWndTest, OnMouseWheel101) +{ + HWND hWndEdit = nullptr; + EXPECT_THAT(pcEditWnd->DispatchEvent(hWndEdit, WM_MOUSEWHEEL, MAKEWPARAM(0, WHEEL_DELTA), MAKELPARAM(10, 20)), IsFalse()); +} + +TEST_F(EditWndTest, OnLButtonUp101) +{ + HWND hWndEdit = nullptr; + EXPECT_THAT(pcEditWnd->DispatchEvent(hWndEdit, WM_LBUTTONUP, 0L, MAKELPARAM(10, 20)), IsFalse()); +} + +TEST_F(EditWndTest, OnNCLButtonDown101) +{ + HWND hWndEdit = nullptr; + EXPECT_THAT(pcEditWnd->DispatchEvent(hWndEdit, WM_NCLBUTTONDOWN, 0L, MAKELPARAM(10, 20)), IsFalse()); +} + +TEST_F(EditWndTest, OnNCLButtonUp101) +{ + HWND hWndEdit = nullptr; + EXPECT_THAT(pcEditWnd->DispatchEvent(hWndEdit, WM_NCLBUTTONUP, 0L, MAKELPARAM(10, 20)), IsFalse()); +} + +TEST_F(EditWndTest, OnLButtonDblClk101) +{ + HWND hWndEdit = nullptr; + EXPECT_THAT(pcEditWnd->DispatchEvent(hWndEdit, WM_LBUTTONDBLCLK, 0L, MAKELPARAM(10, 20)), IsFalse()); +} + /*! * 上書き保存時バックアップのテスト */ @@ -752,8 +1061,8 @@ TEST_F(EditWndTest, FileSaveWithBackupAgent001) std::filesystem::remove(backupPath, ec); { - std::wofstream fs(targetPath); - fs << L"line1" << std::endl; + std::wofstream fos(targetPath); + fos << L"line1" << std::endl; } sBackup.m_bBackUp = true; @@ -809,8 +1118,8 @@ TEST_F(EditWndTest, GetDocDataObject001) EXPECT_THAT(pDataObject, IsNull()); { - std::wofstream fs(targetPath); - fs << L"line1" << std::endl; + std::wofstream fos(targetPath); + fos << L"line1" << std::endl; } EXPECT_THAT(mgr->LoadKeyMacroStr(unusedArg1, std::format(L"FileOpen('{}', 99, 0, '無題1')", targetPath.native()).c_str()), IsTrue());