4 #include "Environment.h"
\r
7 #include "MergeDoc.h"
\r
8 #include "ccrystaltextview.h"
\r
9 #include "dialogs/cfindtextdlg.h"
\r
10 #include "MergeEditView.h"
\r
12 #include "DirView.h"
\r
13 #include "ImgMergeFrm.h"
\r
14 #include "DiffContext.h"
\r
15 #include "CompareStats.h"
\r
16 #include "unicoder.h"
\r
17 #include "OptionsMgr.h"
\r
18 #include "OptionsDef.h"
\r
19 #include "SyntaxColors.h"
\r
20 #include "MergeCmdLineInfo.h"
\r
21 #include "editcmd.h"
\r
22 #include "gtest/gtest.h"
\r
24 String getProjectRoot()
\r
27 return paths::ConcatPath(env::GetProgPath(), L"../../..");
\r
29 return paths::ConcatPath(env::GetProgPath(), L"../../");
\r
33 void Wait(unsigned ms)
\r
35 unsigned start = GetTickCount();
\r
36 while (GetTickCount() - start < ms)
\r
39 if (::PeekMessage(&msg, nullptr, NULL, NULL, PM_NOREMOVE))
\r
40 AfxGetApp()->PumpMessage();
\r
45 TEST(CodepageTest, UCS2)
\r
47 String projectRoot = getProjectRoot();
\r
48 PathContext tFiles = {
\r
49 paths::ConcatPath(projectRoot, L"Testing/Data/Unicode/UCS-2BE/DiffItem.h"),
\r
50 paths::ConcatPath(projectRoot, L"Testing/Data/Unicode/UCS-2LE/DiffItem.h")
\r
52 EXPECT_TRUE(GetMainFrame()->DoFileOpen(&tFiles));
\r
53 CFrameWnd *pFrame = GetMainFrame()->GetActiveFrame();
\r
54 CMergeDoc *pDoc = dynamic_cast<CMergeDoc *>(pFrame->GetActiveDocument());
\r
55 ASSERT_NE(nullptr, pDoc);
\r
56 EXPECT_EQ(ucr::UCS2BE, pDoc->m_ptBuf[0]->getEncoding().m_unicoding);
\r
57 EXPECT_TRUE(pDoc->m_ptBuf[0]->getEncoding().m_bom);
\r
58 EXPECT_EQ(ucr::UCS2LE, pDoc->m_ptBuf[1]->getEncoding().m_unicoding);
\r
59 EXPECT_TRUE(pDoc->m_ptBuf[1]->getEncoding().m_bom);
\r
60 pFrame->PostMessage(WM_CLOSE);
\r
63 TEST(CodepageTest, UTF8)
\r
65 String projectRoot = getProjectRoot();
\r
66 PathContext tFiles = {
\r
67 paths::ConcatPath(projectRoot, L"Testing/Data/Unicode/UTF-8/DiffItem.h"),
\r
68 paths::ConcatPath(projectRoot, L"Testing/Data/Unicode/UTF-8-NOBOM/DiffItem.h")
\r
70 EXPECT_TRUE(GetMainFrame()->DoFileOpen(&tFiles));
\r
71 CFrameWnd *pFrame = GetMainFrame()->GetActiveFrame();
\r
72 CMergeDoc *pDoc = dynamic_cast<CMergeDoc *>(pFrame->GetActiveDocument());
\r
73 EXPECT_NE(nullptr, pDoc);
\r
74 if (pDoc == nullptr)
\r
76 EXPECT_EQ(ucr::UTF8, pDoc->m_ptBuf[0]->getEncoding().m_unicoding);
\r
77 EXPECT_TRUE(pDoc->m_ptBuf[0]->getEncoding().m_bom);
\r
78 EXPECT_EQ(ucr::UTF8, pDoc->m_ptBuf[1]->getEncoding().m_unicoding);
\r
79 EXPECT_FALSE(pDoc->m_ptBuf[1]->getEncoding().m_bom);
\r
80 pFrame->PostMessage(WM_CLOSE);
\r
83 TEST(SyntaxHighlight, Verilog)
\r
85 String projectRoot = getProjectRoot();
\r
86 PathContext tFiles = {
\r
87 paths::ConcatPath(projectRoot, L"Testing/Data/FileFormats/Verilog.v"),
\r
88 paths::ConcatPath(projectRoot, L"Testing/Data/FileFormats/Verilog.v")
\r
90 CMessageBoxDialog dlg(nullptr, IDS_FILE_TO_ITSELF, 0U, 0U, IDS_FILE_TO_ITSELF);
\r
91 const int nPrevFormerResult = dlg.SetFormerResult(IDOK);
\r
92 EXPECT_TRUE(GetMainFrame()->DoFileOpen(&tFiles));
\r
93 CFrameWnd *pFrame = GetMainFrame()->GetActiveFrame();
\r
94 CMergeDoc *pDoc = dynamic_cast<CMergeDoc *>(pFrame->GetActiveDocument());
\r
95 EXPECT_NE(nullptr, pDoc);
\r
96 if (pDoc == nullptr)
\r
99 std::vector<CrystalLineParser::TEXTBLOCK> blocks;
\r
100 blocks = pDoc->GetView(0, 0)->GetTextBlocks(0);
\r
101 EXPECT_EQ(COLORINDEX_COMMENT, blocks[0].m_nColorIndex);
\r
102 blocks = pDoc->GetView(0, 0)->GetTextBlocks(2);
\r
103 EXPECT_EQ(COLORINDEX_KEYWORD, blocks[0].m_nColorIndex);
\r
104 blocks = pDoc->GetView(0, 0)->GetTextBlocks(37);
\r
105 EXPECT_EQ(COLORINDEX_PREPROCESSOR, blocks[0].m_nColorIndex);
\r
106 blocks = pDoc->GetView(0, 0)->GetTextBlocks(38);
\r
107 EXPECT_EQ(COLORINDEX_USER1, blocks[1].m_nColorIndex);
\r
108 EXPECT_EQ(COLORINDEX_STRING, blocks[3].m_nColorIndex);
\r
110 pFrame->PostMessage(WM_CLOSE);
\r
111 dlg.SetFormerResult(nPrevFormerResult);
\r
114 TEST(FileCompare, FindText)
\r
116 String projectRoot = getProjectRoot();
\r
117 CMessageBoxDialog dlg(nullptr, IDS_FILE_TO_ITSELF, 0U, 0U, IDS_FILE_TO_ITSELF);
\r
118 const int nPrevFormerResult = dlg.SetFormerResult(IDOK);
\r
119 CMergeDoc *pDoc = nullptr;
\r
120 CFrameWnd *pFrame = nullptr;
\r
121 PathContext tFiles = {
\r
122 paths::ConcatPath(projectRoot, _T("Testing/Data/FindText/test1.txt")),
\r
123 paths::ConcatPath(projectRoot, _T("Testing/Data/FindText/test1.txt")),
\r
125 EXPECT_TRUE(GetMainFrame()->DoFileOpen(&tFiles));
\r
126 pFrame = GetMainFrame()->GetActiveFrame();
\r
127 pDoc = dynamic_cast<CMergeDoc *>(pFrame->GetActiveDocument());
\r
128 EXPECT_NE(nullptr, pDoc);
\r
129 if (pDoc == nullptr)
\r
132 CMergeEditView *pView = pDoc->GetView(0, 0);
\r
134 CString lines, lineslower;
\r
135 pView->GetTextWithoutEmptys(0, 0, pView->GetLineCount() - 1, pView->GetLineLength(pView->GetLineCount() - 1), lines);
\r
136 lineslower = lines;
\r
137 lineslower.MakeLower();
\r
139 CPoint pt, ptFound;
\r
141 LastSearchInfos lsi = { 0 };
\r
142 CPoint ptstart, ptstart2, ptend;
\r
144 for (int direction : { 1, 0 })
\r
146 for (bool useregex : { false, true })
\r
148 for (bool matchcase : { true, false })
\r
150 for (CString text : { _T("a"), _T("abc")})
\r
156 pos = (matchcase ? lines : lineslower).Find(text, pos);
\r
159 pos += text.GetLength();
\r
162 pView->SetCursorPos({ 0, 0 });
\r
163 pView->SetNewAnchor({ 0, 0 });
\r
164 pView->SetNewSelection({ 0, 0 }, { 0, 0 });
\r
165 lsi.m_sText = text;
\r
166 lsi.m_bNoWrap = false;
\r
167 lsi.m_bMatchCase = matchcase;
\r
168 lsi.m_nDirection = direction;
\r
169 lsi.m_bRegExp = useregex;
\r
170 for (size_t i = 0; i < count; ++i)
\r
172 pView->FindText(&lsi);
\r
174 ptstart = pView->GetAnchor();
\r
177 ptend = pView->GetAnchor();
\r
178 pView->FindText(&lsi);
\r
179 ptstart2 = pView->GetAnchor();
\r
180 if (direction == 0)
\r
181 EXPECT_LT(ptend.y, ptstart2.y);
\r
183 EXPECT_GT(ptend.y, ptstart2.y);
\r
184 EXPECT_EQ(ptstart.y, ptstart2.y);
\r
185 EXPECT_EQ(text.MakeLower(), pView->GetSelectedText().MakeLower());
\r
191 pFrame->PostMessage(WM_CLOSE);
\r
192 dlg.SetFormerResult(nPrevFormerResult);
\r
195 TEST(FileCompare, LastLineEOL)
\r
197 String projectRoot = getProjectRoot();
\r
198 const static String filelist[] = {
\r
207 CMessageBoxDialog dlg(nullptr, IDS_FILESSAME, 0U, 0U, IDS_FILESSAME);
\r
208 CMessageBoxDialog dlg2(nullptr, IDS_FILE_TO_ITSELF, 0U, 0U, IDS_FILE_TO_ITSELF);
\r
209 const int nPrevFormerResult = dlg.SetFormerResult(IDOK);
\r
210 const int nPrevFormerResult2 = dlg2.SetFormerResult(IDOK);
\r
211 CMergeDoc *pDoc = nullptr;
\r
212 CFrameWnd *pFrame = nullptr;
\r
213 for (bool bIgnoreBlankLines: { true, false })
\r
215 GetOptionsMgr()->Set(OPT_CMP_IGNORE_BLANKLINES, bIgnoreBlankLines);
\r
216 for (auto nIgnoreWhitespace: { WHITESPACE_COMPARE_ALL, WHITESPACE_IGNORE_CHANGE, WHITESPACE_IGNORE_ALL})
\r
218 GetOptionsMgr()->Set(OPT_CMP_IGNORE_WHITESPACE, nIgnoreWhitespace);
\r
220 pDoc->RefreshOptions();
\r
221 for (size_t l = 0; l < std::size(filelist); ++l)
\r
223 for (size_t r = 0; r < std::size(filelist); ++r)
\r
225 PathContext tFiles = {
\r
226 paths::ConcatPath(projectRoot, paths::ConcatPath(_T("Testing/Data/LastLineEOL"), filelist[l])),
\r
227 paths::ConcatPath(projectRoot, paths::ConcatPath(_T("Testing/Data/LastLineEOL"), filelist[r])),
\r
231 EXPECT_TRUE(GetMainFrame()->DoFileOpen(&tFiles));
\r
232 pFrame = GetMainFrame()->GetActiveFrame();
\r
233 pDoc = dynamic_cast<CMergeDoc *>(pFrame->GetActiveDocument());
\r
234 EXPECT_NE(nullptr, pDoc);
\r
235 if (pDoc == nullptr)
\r
240 pDoc->ChangeFile(0, tFiles[0]);
\r
242 pDoc->ChangeFile(1, tFiles[1]);
\r
244 if (tFiles[0] == tFiles[1])
\r
246 EXPECT_EQ(0, pDoc->m_diffList.GetSize());
\r
250 if (pDoc->m_diffList.DiffRangeAt(0)->op == OP_TRIVIAL)
\r
252 EXPECT_EQ(true, bIgnoreBlankLines);
\r
256 CMergeEditView *pView = pDoc->GetView(0, 0); // merge
\r
257 EXPECT_LE(1, pDoc->m_diffList.GetSize());
\r
258 pDoc->CopyAllList(0, 1);
\r
259 EXPECT_EQ(0, pDoc->m_diffList.GetSize());
\r
261 pView->SendMessage(WM_COMMAND, ID_EDIT_UNDO);
\r
262 EXPECT_LE(1, pDoc->m_diffList.GetSize());
\r
263 // insert a character at the last line
\r
264 pView->GotoLine(pDoc->m_ptBuf[0]->GetLineCount() - 1, false, 0);
\r
265 pView->SendMessage(WM_CHAR, 'a');
\r
267 pView->SendMessage(WM_COMMAND, ID_EDIT_UNDO);
\r
269 pView = pDoc->GetView(0, 1);
\r
270 pView->GotoLine(0, false, 1);
\r
271 // Select all & Delete
\r
272 pView->SendMessage(WM_COMMAND, ID_EDIT_SELECT_ALL);
\r
273 pView->SendMessage(WM_COMMAND, ID_EDIT_DELETE);
\r
275 pView->SendMessage(WM_COMMAND, ID_EDIT_UNDO);
\r
277 pView->SendMessage(WM_COMMAND, ID_EDIT_REDO);
\r
279 pView->SendMessage(WM_COMMAND, ID_EDIT_UNDO);
\r
286 pFrame->PostMessage(WM_CLOSE);
\r
287 dlg.SetFormerResult(nPrevFormerResult);
\r
288 dlg2.SetFormerResult(nPrevFormerResult2);
\r
291 TEST(FolderCompare, IgnoreEOL)
\r
293 String projectRoot = getProjectRoot();
\r
294 PathContext dirsArray[] = {
\r
296 paths::ConcatPath(projectRoot, L"Testing/selftests/u/"),
\r
297 paths::ConcatPath(projectRoot, L"Testing/selftests/m/")
\r
300 paths::ConcatPath(projectRoot, L"Testing/selftests/w/"),
\r
301 paths::ConcatPath(projectRoot, L"Testing/selftests/u/")
\r
304 paths::ConcatPath(projectRoot, L"Testing/selftests/w/"),
\r
305 paths::ConcatPath(projectRoot, L"Testing/selftests/m/")
\r
309 for (auto& dirs : dirsArray)
\r
311 GetOptionsMgr()->Set(OPT_CMP_METHOD, 0/* Full Contents*/);
\r
312 GetOptionsMgr()->Set(OPT_CMP_IGNORE_EOL, true);
\r
313 EXPECT_TRUE(GetMainFrame()->DoFileOpen(&dirs));
\r
314 CFrameWnd *pFrame = GetMainFrame()->GetActiveFrame();
\r
315 CDirDoc *pDoc = dynamic_cast<CDirDoc *>(pFrame->GetActiveDocument());
\r
316 EXPECT_NE(nullptr, pDoc);
\r
317 if (pDoc == nullptr)
\r
319 pFrame->PostMessage(WM_CLOSE);
\r
322 CDirView *pView = pDoc->GetMainView();
\r
323 const CDiffContext& ctxt = pDoc->GetDiffContext();
\r
324 const CompareStats *pStats = ctxt.m_pCompareStats;
\r
325 do { Sleep(100); } while (!pStats->IsCompareDone());
\r
326 EXPECT_EQ(10, pStats->GetTotalItems());
\r
327 EXPECT_EQ(10, pStats->GetCount(CompareStats::RESULT::RESULT_SAME));
\r
328 DIFFITEM *pos = ctxt.GetFirstDiffPosition();
\r
329 while (pos != nullptr)
\r
331 const DIFFITEM& di = ctxt.GetNextDiffPosition(pos);
\r
332 for (int i = 0; i < 2; ++i)
\r
334 if (dirs[i].find(L"/w/") != String::npos)
\r
336 EXPECT_LT(0, di.diffFileInfo[i].m_textStats.ncrlfs);
\r
337 EXPECT_EQ(0, di.diffFileInfo[i].m_textStats.nlfs);
\r
338 EXPECT_EQ(0, di.diffFileInfo[i].m_textStats.ncrs);
\r
340 else if (dirs[i].find(L"/u/") != String::npos)
\r
342 EXPECT_LT(0, di.diffFileInfo[i].m_textStats.nlfs);
\r
343 EXPECT_EQ(0, di.diffFileInfo[i].m_textStats.ncrlfs);
\r
344 EXPECT_EQ(0, di.diffFileInfo[i].m_textStats.ncrs);
\r
346 else if (dirs[i].find(L"/m/") != String::npos)
\r
348 EXPECT_LT(0, di.diffFileInfo[i].m_textStats.ncrs);
\r
349 EXPECT_EQ(0, di.diffFileInfo[i].m_textStats.nlfs);
\r
350 EXPECT_EQ(0, di.diffFileInfo[i].m_textStats.ncrlfs);
\r
355 GetOptionsMgr()->Set(OPT_CMP_METHOD, 0/* Full Contents*/);
\r
356 GetOptionsMgr()->Set(OPT_CMP_IGNORE_EOL, false);
\r
358 do { Sleep(100); } while (!pStats->IsCompareDone());
\r
359 EXPECT_EQ(10, pStats->GetTotalItems());
\r
360 EXPECT_EQ(10, pStats->GetCount(CompareStats::RESULT::RESULT_DIFF));
\r
362 GetOptionsMgr()->Set(OPT_CMP_METHOD, 1/* Quick Contents*/);
\r
363 GetOptionsMgr()->Set(OPT_CMP_IGNORE_EOL, true);
\r
365 do { Sleep(100); } while (!pStats->IsCompareDone());
\r
366 EXPECT_EQ(10, pStats->GetTotalItems());
\r
367 EXPECT_EQ(10, pStats->GetCount(CompareStats::RESULT::RESULT_SAME));
\r
369 GetOptionsMgr()->Set(OPT_CMP_METHOD, 1/* Quick Contents*/);
\r
370 GetOptionsMgr()->Set(OPT_CMP_IGNORE_EOL, false);
\r
372 do { Sleep(100); } while (!pStats->IsCompareDone());
\r
373 EXPECT_EQ(10, pStats->GetTotalItems());
\r
374 EXPECT_EQ(10, pStats->GetCount(CompareStats::RESULT::RESULT_DIFF));
\r
376 pFrame->PostMessage(WM_CLOSE);
\r
380 TEST(CommandLineTest, Desc)
\r
382 String progpath = paths::ConcatPath(env::GetProgPath(), _T("WinMergeU.exe"));
\r
383 String projectRoot = getProjectRoot();
\r
384 MergeCmdLineInfo cmdInfo((progpath + L" /dl TestL /dr TestR " +
\r
385 paths::ConcatPath(projectRoot, L"Testing/Data/Unicode/UCS-2BE/DiffItem.h") + L" " +
\r
386 paths::ConcatPath(projectRoot, L"Testing/Data/Unicode/UCS-2LE/DiffItem.h")).c_str()
\r
388 theApp.ParseArgsAndDoOpen(cmdInfo, GetMainFrame());
\r
389 CFrameWnd *pFrame = GetMainFrame()->GetActiveFrame();
\r
390 CMergeDoc *pDoc = dynamic_cast<CMergeDoc *>(pFrame->GetActiveDocument());
\r
391 ASSERT_NE(nullptr, pDoc);
\r
392 EXPECT_EQ(L"TestL", pDoc->GetDescription(0));
\r
393 EXPECT_EQ(L"TestR", pDoc->GetDescription(1));
\r
394 pFrame->PostMessage(WM_CLOSE);
\r
397 TEST(CommandLineTest, Desc2)
\r
399 String progpath = paths::ConcatPath(env::GetProgPath(), _T("WinMergeU.exe"));
\r
400 String projectRoot = getProjectRoot();
\r
401 MergeCmdLineInfo cmdInfo((progpath + L" /dl TestL /dr TestR " +
\r
402 paths::ConcatPath(projectRoot, L"Testing/Data/big_file.conflict")).c_str()
\r
404 theApp.ParseArgsAndDoOpen(cmdInfo, GetMainFrame());
\r
405 CFrameWnd *pFrame = GetMainFrame()->GetActiveFrame();
\r
406 CMergeDoc *pDoc = dynamic_cast<CMergeDoc *>(pFrame->GetActiveDocument());
\r
407 ASSERT_NE(nullptr, pDoc);
\r
408 EXPECT_EQ(L"TestL", pDoc->GetDescription(0));
\r
409 EXPECT_EQ(L"TestR", pDoc->GetDescription(1));
\r
410 pDoc->m_ptBuf[1]->SetModified(false);
\r
411 pFrame->PostMessage(WM_CLOSE);
\r
414 TEST(CommandLineTest, Desc3)
\r
416 String progpath = paths::ConcatPath(env::GetProgPath(), _T("WinMergeU.exe"));
\r
417 String projectRoot = getProjectRoot();
\r
418 MergeCmdLineInfo cmdInfo((progpath + L" /dr TestR " +
\r
419 paths::ConcatPath(projectRoot, L"Testing/Data/big_file.conflict")).c_str()
\r
421 theApp.ParseArgsAndDoOpen(cmdInfo, GetMainFrame());
\r
422 CFrameWnd *pFrame = GetMainFrame()->GetActiveFrame();
\r
423 CMergeDoc *pDoc = dynamic_cast<CMergeDoc *>(pFrame->GetActiveDocument());
\r
424 ASSERT_NE(nullptr, pDoc);
\r
425 EXPECT_EQ(L"Theirs File", pDoc->GetDescription(0));
\r
426 EXPECT_EQ(L"TestR", pDoc->GetDescription(1));
\r
427 pDoc->m_ptBuf[1]->SetModified(false);
\r
428 pFrame->PostMessage(WM_CLOSE);
\r
431 TEST(CommandLineTest, Desc4)
\r
433 String progpath = paths::ConcatPath(env::GetProgPath(), _T("WinMergeU.exe"));
\r
434 String projectRoot = getProjectRoot();
\r
435 MergeCmdLineInfo cmdInfo((progpath + L" /dl TestL " +
\r
436 paths::ConcatPath(projectRoot, L"Testing/Data/big_file.conflict")).c_str()
\r
438 theApp.ParseArgsAndDoOpen(cmdInfo, GetMainFrame());
\r
439 CFrameWnd *pFrame = GetMainFrame()->GetActiveFrame();
\r
440 CMergeDoc *pDoc = dynamic_cast<CMergeDoc *>(pFrame->GetActiveDocument());
\r
441 ASSERT_NE(nullptr, pDoc);
\r
442 EXPECT_EQ(L"TestL", pDoc->GetDescription(0));
\r
443 EXPECT_EQ(L"Mine File", pDoc->GetDescription(1));
\r
444 pDoc->m_ptBuf[1]->SetModified(false);
\r
445 pFrame->PostMessage(WM_CLOSE);
\r
448 TEST(ImageCompareTest, Open)
\r
450 EXPECT_TRUE(CImgMergeFrame::IsLoadable());
\r
451 if (!CImgMergeFrame::IsLoadable())
\r
454 String projectRoot = getProjectRoot();
\r
455 PathContext tFiles = {
\r
456 paths::ConcatPath(projectRoot, L"Src/res/right_to_middle.bmp"),
\r
457 paths::ConcatPath(projectRoot, L"Src/res/right_to_left.bmp")
\r
459 CMessageBoxDialog dlg(nullptr, IDS_FILESSAME, 0U, 0U, IDS_FILESSAME);
\r
460 const int nPrevFormerResult = dlg.SetFormerResult(IDOK);
\r
461 EXPECT_TRUE(GetMainFrame()->DoFileOpen(&tFiles));
\r
462 CFrameWnd *pFrame = GetMainFrame()->GetActiveFrame();
\r
463 CImgMergeFrame *pDoc = dynamic_cast<CImgMergeFrame *>(pFrame);
\r
464 EXPECT_NE(nullptr, pDoc);
\r
466 pFrame->PostMessage(WM_CLOSE);
\r
467 dlg.SetFormerResult(nPrevFormerResult);
\r
470 TEST(FileMenu, New)
\r
473 GetMainFrame()->FileNew(2, CMainFrame::FRAMETYPE::FRAME_FILE, false);
\r
474 pFrame = GetMainFrame()->GetActiveFrame();
\r
475 pFrame->PostMessage(WM_CLOSE);
\r
476 GetMainFrame()->FileNew(3, CMainFrame::FRAMETYPE::FRAME_FILE, false);
\r
477 pFrame = GetMainFrame()->GetActiveFrame();
\r
478 pFrame->PostMessage(WM_CLOSE);
\r
481 TEST(FileMenu, OpenConflictFile)
\r
483 String conflictFile = paths::ConcatPath(getProjectRoot(), L"Testing/Data/big_file.conflict");
\r
484 GetMainFrame()->DoOpenConflict(conflictFile);
\r
485 CFrameWnd *pFrame = GetMainFrame()->GetActiveFrame();
\r
486 CMergeDoc *pDoc = dynamic_cast<CMergeDoc *>(pFrame->GetActiveDocument());
\r
487 ASSERT_NE(nullptr, pDoc);
\r
488 pDoc->m_ptBuf[1]->SetModified(false);
\r
489 pFrame->PostMessage(WM_CLOSE);
\r
492 TEST(FileMenu, OpenConflictFile3)
\r
494 String conflictFile = paths::ConcatPath(getProjectRoot(), L"Testing/Data/dif3.conflict");
\r
495 GetMainFrame()->DoOpenConflict(conflictFile);
\r
496 CFrameWnd *pFrame = GetMainFrame()->GetActiveFrame();
\r
497 CMergeDoc *pDoc = dynamic_cast<CMergeDoc *>(pFrame->GetActiveDocument());
\r
498 ASSERT_NE(nullptr, pDoc);
\r
499 pDoc->m_ptBuf[2]->SetModified(false);
\r
500 pFrame->PostMessage(WM_CLOSE);
\r
503 TEST(FileMenu, OpenProject)
\r
505 String projectFile = paths::ConcatPath(getProjectRoot(), L"Testing/Data/Dir2.WinMerge");
\r
506 theApp.LoadAndOpenProjectFile(projectFile);
\r
507 CFrameWnd *pFrame = GetMainFrame()->GetActiveFrame();
\r
508 EXPECT_NE(nullptr, pFrame);
\r
509 if (pFrame != nullptr)
\r
510 pFrame->PostMessage(WM_CLOSE);
\r
513 TEST(FileMenu, OpenProject3)
\r
515 String projectFile = paths::ConcatPath(getProjectRoot(), L"Testing/Data/Dir3.WinMerge");
\r
516 theApp.LoadAndOpenProjectFile(projectFile);
\r
517 CFrameWnd *pFrame = GetMainFrame()->GetActiveFrame();
\r
518 EXPECT_NE(nullptr, pFrame);
\r
519 if (pFrame != nullptr)
\r
520 pFrame->PostMessage(WM_CLOSE);
\r