m_diffWrapper.SetCreateDiffList(&m_diffList);
}
- // If comparing whitespaces and
- // other file has EOL before EOF and other not...
- if (diffOptions.nIgnoreWhitespace == WHITESPACE_COMPARE_ALL || !diffOptions.bIgnoreBlankLines)
+ // If one file has EOL before EOF and other not...
+ if (std::count(status.bMissingNL, status.bMissingNL + m_nBuffers, status.bMissingNL[0]) < m_nBuffers)
{
- if (std::count(status.bMissingNL, status.bMissingNL + m_nBuffers, status.bMissingNL[0]) < m_nBuffers)
- {
- // ..last DIFFRANGE of file which has EOL must be
- // fixed to contain last line too
- int lineCount[3] = { 0,0,0 };
- for (nBuffer = 0; nBuffer < m_nBuffers; nBuffer++)
- lineCount[nBuffer] = m_ptBuf[nBuffer]->GetLineCount();
- m_diffWrapper.FixLastDiffRange(m_nBuffers, lineCount, status.bMissingNL, diffOptions.bIgnoreBlankLines);
- }
+ // ..last DIFFRANGE of file which has EOL must be
+ // fixed to contain last line too
+ int lineCount[3] = { 0,0,0 };
+ for (nBuffer = 0; nBuffer < m_nBuffers; nBuffer++)
+ lineCount[nBuffer] = m_ptBuf[nBuffer]->GetLineCount();
+ m_diffWrapper.FixLastDiffRange(m_nBuffers, lineCount, status.bMissingNL, diffOptions.bIgnoreBlankLines);
}
// set identical/diff result as recorded by diffutils
#include "OptionsDef.h"\r
#include "SyntaxColors.h"\r
#include "MergeCmdLineInfo.h"\r
+#include "editcmd.h"\r
#include "gtest/gtest.h"\r
\r
String getProjectRoot()\r
_T("0CRLF.txt"),\r
_T("1None.txt"),\r
_T("1CRLF.txt"),\r
- _T("2None.txt"),\r
- _T("2CRLF.txt"),\r
_T("3None.txt"),\r
_T("3CRLF.txt")\r
};\r
const int nPrevFormerResult = dlg.SetFormerResult(IDOK);\r
CMergeDoc *pDoc = nullptr;\r
CFrameWnd *pFrame = nullptr;\r
- for (size_t l = 0; l < std::size(filelist); ++l)\r
+ for (bool bIgnoreBlankLines: { true, false })\r
{\r
- for (size_t r = 0; r < std::size(filelist); ++r)\r
+ GetOptionsMgr()->SaveOption(OPT_CMP_IGNORE_BLANKLINES, bIgnoreBlankLines);\r
+ for (auto nIgnoreWhitespace: { WHITESPACE_COMPARE_ALL, WHITESPACE_IGNORE_CHANGE, WHITESPACE_IGNORE_ALL})\r
{\r
- PathContext tFiles = {\r
- paths::ConcatPath(projectRoot, paths::ConcatPath(_T("Testing/Data/LastLineEOL"), filelist[l])),\r
- paths::ConcatPath(projectRoot, paths::ConcatPath(_T("Testing/Data/LastLineEOL"), filelist[r])),\r
- };\r
- if (l == 0 && r == 0)\r
+ GetOptionsMgr()->SaveOption(OPT_CMP_IGNORE_WHITESPACE, nIgnoreWhitespace);\r
+ for (size_t l = 0; l < std::size(filelist); ++l)\r
{\r
- EXPECT_TRUE(GetMainFrame()->DoFileOpen(&tFiles));\r
- pFrame = GetMainFrame()->GetActiveFrame();\r
- pDoc = dynamic_cast<CMergeDoc *>(pFrame->GetActiveDocument());\r
- EXPECT_NE(nullptr, pDoc);\r
- if (pDoc == nullptr)\r
- return;\r
- }\r
- else if (r == 0)\r
- {\r
- pDoc->ChangeFile(0, tFiles[0]);\r
- }\r
- pDoc->ChangeFile(1, tFiles[1]);\r
+ for (size_t r = 0; r < std::size(filelist); ++r)\r
+ {\r
+ PathContext tFiles = {\r
+ paths::ConcatPath(projectRoot, paths::ConcatPath(_T("Testing/Data/LastLineEOL"), filelist[l])),\r
+ paths::ConcatPath(projectRoot, paths::ConcatPath(_T("Testing/Data/LastLineEOL"), filelist[r])),\r
+ };\r
+ if (!pFrame)\r
+ {\r
+ EXPECT_TRUE(GetMainFrame()->DoFileOpen(&tFiles));\r
+ pFrame = GetMainFrame()->GetActiveFrame();\r
+ pDoc = dynamic_cast<CMergeDoc *>(pFrame->GetActiveDocument());\r
+ EXPECT_NE(nullptr, pDoc);\r
+ if (pDoc == nullptr)\r
+ return;\r
+ }\r
+ if (r == 0)\r
+ {\r
+ pDoc->ChangeFile(0, tFiles[0]);\r
+ }\r
+ pDoc->ChangeFile(1, tFiles[1]);\r
\r
- if (tFiles[0] == tFiles[1])\r
- {\r
- EXPECT_EQ(0, pDoc->m_diffList.GetSize());\r
- }\r
- else\r
- {\r
- CMergeEditView *pView = pDoc->GetView(0, 0);\r
- // merge\r
- EXPECT_EQ(1, pDoc->m_diffList.GetSize());\r
- pDoc->CopyAllList(0, 1);\r
- EXPECT_EQ(0, pDoc->m_diffList.GetSize());\r
- // undo\r
- pView->SendMessage(WM_COMMAND, ID_EDIT_UNDO);\r
- EXPECT_EQ(1, pDoc->m_diffList.GetSize());\r
- // insert a character at the last line\r
- pView->GotoLine(pDoc->m_ptBuf[0]->GetLineCount() - 1, false, 0);\r
- pView->SendMessage(WM_CHAR, 'a');\r
- // undo\r
- pView->SendMessage(WM_COMMAND, ID_EDIT_UNDO);\r
+ if (tFiles[0] == tFiles[1])\r
+ {\r
+ EXPECT_EQ(0, pDoc->m_diffList.GetSize());\r
+ }\r
+ else\r
+ {\r
+ CMergeEditView *pView = pDoc->GetView(0, 0);\r
+ // merge\r
+ EXPECT_EQ(1, pDoc->m_diffList.GetSize());\r
+ pDoc->CopyAllList(0, 1);\r
+ EXPECT_EQ(0, pDoc->m_diffList.GetSize());\r
+ // undo\r
+ pView->SendMessage(WM_COMMAND, ID_EDIT_UNDO);\r
+ EXPECT_EQ(1, pDoc->m_diffList.GetSize());\r
+ // insert a character at the last line\r
+ pView->GotoLine(pDoc->m_ptBuf[0]->GetLineCount() - 1, false, 0);\r
+ pView->SendMessage(WM_CHAR, 'a');\r
+ // undo\r
+ pView->SendMessage(WM_COMMAND, ID_EDIT_UNDO);\r
+\r
+ pView = pDoc->GetView(0, 1);\r
+ pView->GotoLine(0, false, 1);\r
+ // Select all & Delete\r
+ pView->SendMessage(WM_COMMAND, ID_EDIT_SELECT_ALL);\r
+ pView->SendMessage(WM_COMMAND, ID_EDIT_DELETE);\r
+ // undo\r
+ pView->SendMessage(WM_COMMAND, ID_EDIT_UNDO);\r
+ // redo\r
+ pView->SendMessage(WM_COMMAND, ID_EDIT_REDO);\r
+ // undo\r
+ pView->SendMessage(WM_COMMAND, ID_EDIT_UNDO);\r
+ }\r
+ }\r
}\r
}\r
}\r