OSDN Git Service

GitHub issue #530: [feature request] Add options to command line to change "compare...
authorTakashi Sawanaka <sdottaka@users.sourceforge.net>
Sat, 2 Jan 2021 06:37:53 +0000 (15:37 +0900)
committerTakashi Sawanaka <sdottaka@users.sourceforge.net>
Sat, 2 Jan 2021 06:37:53 +0000 (15:37 +0900)
Src/Merge.cpp
Src/MergeCmdLineInfo.cpp
Src/MergeCmdLineInfo.h
Testing/GoogleTest/CmdLine/MergeCmdLine_test.cpp

index bb61173..7a1c13d 100644 (file)
@@ -619,6 +619,10 @@ bool CMergeApp::ParseArgsAndDoOpen(MergeCmdLineInfo& cmdInfo, CMainFrame* pMainF
                UpdateDefaultCodepage(2,cmdInfo.m_nCodepage);
        }
 
+       // Set compare method
+       if (cmdInfo.m_nCompMethod.has_value())
+               GetOptionsMgr()->Set(OPT_CMP_METHOD, *cmdInfo.m_nCompMethod);
+
        // Unless the user has requested to see WinMerge's usage open files for
        // comparison.
        if (cmdInfo.m_bShowUsage)
index a3fdbfd..65ae386 100644 (file)
@@ -225,6 +225,30 @@ void MergeCmdLineInfo::ParseWinMergeCmdLine(const TCHAR *q)
                        // -f "mask" - file filter mask ("*.h *.cpp")
                        q = EatParam(q, m_sFileFilter);
                }
+               else if (param == _T("m"))
+               {
+                       // -m "method" - compare method
+                       q = EatParam(q, param);
+                       param = strutils::makelower(param);
+                       strutils::replace(param, _T("and"), _T(""));
+                       strutils::replace(param, _T("contents"), _T(""));
+                       strutils::replace(param, _T("modified"), _T(""));
+                       strutils::replace(param, _T(" "), _T(""));
+                       if (param == _T("full"))
+                               m_nCompMethod = CompareMethodType::CONTENT;
+                       else if (param == _T("quick"))
+                               m_nCompMethod = CompareMethodType::QUICK_CONTENT;
+                       else if (param == _T("binary"))
+                               m_nCompMethod = CompareMethodType::BINARY_CONTENT;
+                       else if (param == _T("date"))
+                               m_nCompMethod = CompareMethodType::DATE;
+                       else if (param == _T("sizedate") || param == _T("datesize"))
+                               m_nCompMethod = CompareMethodType::DATE_SIZE;
+                       else if (param == _T("size"))
+                               m_nCompMethod = CompareMethodType::SIZE;
+                       else
+                               m_sErrorMessages.push_back(_T("Unknown compare method '") + param + _T("' specified"));
+               }
                else if (param == _T("r"))
                {
                        // -r to compare recursively
@@ -374,6 +398,10 @@ void MergeCmdLineInfo::ParseWinMergeCmdLine(const TCHAR *q)
                {
                        q = SetOption(q, OPT_CMP_IGNORE_CODEPAGE);
                }
+               else if (param == _T("ignorecomments"))
+               {
+                       q = SetOption(q, OPT_CMP_FILTER_COMMENTLINES);
+               }
                else if (param == _T("cfg") || param == _T("config"))
                {
                        q = SetConfig(q);
index b06c11b..dbdada3 100644 (file)
@@ -42,11 +42,22 @@ public:
                MINIMIZE = 6,
        };
 
+       enum CompareMethodType
+       {
+               CONTENT,
+               QUICK_CONTENT,
+               BINARY_CONTENT,
+               DATE,
+               DATE_SIZE,
+               SIZE,
+       };
+
        ShowWindowType m_nCmdShow; /**< Initial state of the application's window. */
 
        bool m_bEscShutdown; /**< Pressing ESC will close the application */
        ExitNoDiff m_bExitIfNoDiff; /**< Exit if files are identical. */
        bool m_bRecurse; /**< Include sub folder in directories compare. */
+       std::optional<CompareMethodType> m_nCompMethod; /**< Compare method */
        bool m_bNonInteractive; /**< Suppress user's notifications. */
        std::optional<bool> m_bSingleInstance; /**< Allow only one instance of WinMerge executable. */
        bool m_bShowUsage; /**< Show a brief reminder to command line arguments. */
index 33b254f..f35dcd0 100644 (file)
@@ -60,6 +60,7 @@ namespace
                EXPECT_FALSE(cmdInfo.m_bNonInteractive);\r
                EXPECT_FALSE(cmdInfo.m_bSingleInstance);\r
                EXPECT_FALSE(cmdInfo.m_bShowUsage);\r
+               EXPECT_FALSE(cmdInfo.m_nCompMethod.has_value());\r
                EXPECT_EQ(0,cmdInfo.m_nCodepage);\r
                EXPECT_EQ(FFILEOPEN_NONE, cmdInfo.m_dwLeftFlags);\r
                EXPECT_EQ(FFILEOPEN_NONE, cmdInfo.m_dwMiddleFlags);\r
@@ -84,6 +85,7 @@ namespace
                EXPECT_FALSE(cmdInfo.m_bNonInteractive);\r
                EXPECT_FALSE(cmdInfo.m_bSingleInstance);\r
                EXPECT_FALSE(cmdInfo.m_bShowUsage);\r
+               EXPECT_FALSE(cmdInfo.m_nCompMethod.has_value());\r
                EXPECT_EQ(0,cmdInfo.m_nCodepage);\r
                EXPECT_EQ(FFILEOPEN_NONE, cmdInfo.m_dwLeftFlags);\r
                EXPECT_EQ(FFILEOPEN_NONE, cmdInfo.m_dwMiddleFlags);\r
@@ -108,6 +110,7 @@ namespace
                EXPECT_FALSE(cmdInfo.m_bNonInteractive);\r
                EXPECT_FALSE(cmdInfo.m_bSingleInstance);\r
                EXPECT_FALSE(cmdInfo.m_bShowUsage);\r
+               EXPECT_FALSE(cmdInfo.m_nCompMethod.has_value());\r
                EXPECT_EQ(0,cmdInfo.m_nCodepage);\r
                EXPECT_EQ(FFILEOPEN_NONE, cmdInfo.m_dwLeftFlags);\r
                EXPECT_EQ(FFILEOPEN_NONE, cmdInfo.m_dwMiddleFlags);\r
@@ -132,6 +135,7 @@ namespace
                EXPECT_FALSE(cmdInfo.m_bNonInteractive);\r
                EXPECT_FALSE(cmdInfo.m_bSingleInstance);\r
                EXPECT_FALSE(cmdInfo.m_bShowUsage);\r
+               EXPECT_FALSE(cmdInfo.m_nCompMethod.has_value());\r
                EXPECT_EQ(0,cmdInfo.m_nCodepage);\r
                EXPECT_EQ(FFILEOPEN_NONE, cmdInfo.m_dwLeftFlags);\r
                EXPECT_EQ(FFILEOPEN_NONE, cmdInfo.m_dwMiddleFlags);\r
@@ -157,6 +161,7 @@ namespace
                EXPECT_FALSE(cmdInfo.m_bNonInteractive);\r
                EXPECT_FALSE(cmdInfo.m_bSingleInstance);\r
                EXPECT_FALSE(cmdInfo.m_bShowUsage);\r
+               EXPECT_FALSE(cmdInfo.m_nCompMethod.has_value());\r
                EXPECT_EQ(0,cmdInfo.m_nCodepage);\r
                EXPECT_EQ(FFILEOPEN_CMDLINE, cmdInfo.m_dwLeftFlags);\r
                EXPECT_EQ(FFILEOPEN_NONE, cmdInfo.m_dwMiddleFlags);\r
@@ -182,6 +187,7 @@ namespace
                EXPECT_FALSE(cmdInfo.m_bNonInteractive);\r
                EXPECT_FALSE(cmdInfo.m_bSingleInstance);\r
                EXPECT_FALSE(cmdInfo.m_bShowUsage);\r
+               EXPECT_FALSE(cmdInfo.m_nCompMethod.has_value());\r
                EXPECT_EQ(0,cmdInfo.m_nCodepage);\r
                EXPECT_EQ(FFILEOPEN_CMDLINE, cmdInfo.m_dwLeftFlags);\r
                EXPECT_EQ(FFILEOPEN_NONE, cmdInfo.m_dwMiddleFlags);\r
@@ -207,6 +213,7 @@ namespace
                EXPECT_FALSE(cmdInfo.m_bNonInteractive);\r
                EXPECT_FALSE(cmdInfo.m_bSingleInstance);\r
                EXPECT_FALSE(cmdInfo.m_bShowUsage);\r
+               EXPECT_FALSE(cmdInfo.m_nCompMethod.has_value());\r
                EXPECT_EQ(0,cmdInfo.m_nCodepage);\r
                EXPECT_EQ(FFILEOPEN_CMDLINE, cmdInfo.m_dwLeftFlags);\r
                EXPECT_EQ(FFILEOPEN_NONE, cmdInfo.m_dwMiddleFlags);\r
@@ -232,6 +239,7 @@ namespace
                EXPECT_FALSE(cmdInfo.m_bNonInteractive);\r
                EXPECT_FALSE(cmdInfo.m_bSingleInstance);\r
                EXPECT_FALSE(cmdInfo.m_bShowUsage);\r
+               EXPECT_FALSE(cmdInfo.m_nCompMethod.has_value());\r
                EXPECT_EQ(0,cmdInfo.m_nCodepage);\r
                EXPECT_EQ(FFILEOPEN_CMDLINE, cmdInfo.m_dwLeftFlags);\r
                EXPECT_EQ(FFILEOPEN_NONE, cmdInfo.m_dwMiddleFlags);\r
@@ -257,6 +265,7 @@ namespace
                EXPECT_FALSE(cmdInfo.m_bNonInteractive);\r
                EXPECT_FALSE(cmdInfo.m_bSingleInstance);\r
                EXPECT_FALSE(cmdInfo.m_bShowUsage);\r
+               EXPECT_FALSE(cmdInfo.m_nCompMethod.has_value());\r
                EXPECT_EQ(0,cmdInfo.m_nCodepage);\r
                EXPECT_EQ(FFILEOPEN_CMDLINE, cmdInfo.m_dwLeftFlags);\r
                EXPECT_EQ(FFILEOPEN_NONE, cmdInfo.m_dwMiddleFlags);\r
@@ -282,6 +291,7 @@ namespace
                EXPECT_FALSE(cmdInfo.m_bNonInteractive);\r
                EXPECT_FALSE(cmdInfo.m_bSingleInstance);\r
                EXPECT_FALSE(cmdInfo.m_bShowUsage);\r
+               EXPECT_FALSE(cmdInfo.m_nCompMethod.has_value());\r
                EXPECT_EQ(0,cmdInfo.m_nCodepage);\r
                EXPECT_EQ(FFILEOPEN_CMDLINE, cmdInfo.m_dwLeftFlags);\r
                EXPECT_EQ(FFILEOPEN_NONE, cmdInfo.m_dwMiddleFlags);\r
@@ -308,6 +318,7 @@ namespace
                EXPECT_FALSE(cmdInfo.m_bNonInteractive);\r
                EXPECT_FALSE(cmdInfo.m_bSingleInstance);\r
                EXPECT_FALSE(cmdInfo.m_bShowUsage);\r
+               EXPECT_FALSE(cmdInfo.m_nCompMethod.has_value());\r
                EXPECT_EQ(0,cmdInfo.m_nCodepage);\r
                EXPECT_EQ(FFILEOPEN_CMDLINE, cmdInfo.m_dwLeftFlags);\r
                EXPECT_EQ(FFILEOPEN_NONE, cmdInfo.m_dwMiddleFlags);\r
@@ -334,6 +345,7 @@ namespace
                EXPECT_FALSE(cmdInfo.m_bNonInteractive);\r
                EXPECT_FALSE(cmdInfo.m_bSingleInstance);\r
                EXPECT_FALSE(cmdInfo.m_bShowUsage);\r
+               EXPECT_FALSE(cmdInfo.m_nCompMethod.has_value());\r
                EXPECT_EQ(0,cmdInfo.m_nCodepage);\r
                EXPECT_EQ(FFILEOPEN_CMDLINE, cmdInfo.m_dwLeftFlags);\r
                EXPECT_EQ(FFILEOPEN_NONE, cmdInfo.m_dwMiddleFlags);\r
@@ -361,6 +373,7 @@ namespace
                EXPECT_FALSE(cmdInfo.m_bNonInteractive);\r
                EXPECT_FALSE(cmdInfo.m_bSingleInstance);\r
                EXPECT_FALSE(cmdInfo.m_bShowUsage);\r
+               EXPECT_FALSE(cmdInfo.m_nCompMethod.has_value());\r
                EXPECT_EQ(0,cmdInfo.m_nCodepage);\r
                EXPECT_EQ(FFILEOPEN_CMDLINE, cmdInfo.m_dwLeftFlags);\r
                EXPECT_EQ(FFILEOPEN_CMDLINE, cmdInfo.m_dwMiddleFlags);\r
@@ -388,6 +401,7 @@ namespace
                EXPECT_FALSE(cmdInfo.m_bNonInteractive);\r
                EXPECT_FALSE(cmdInfo.m_bSingleInstance);\r
                EXPECT_FALSE(cmdInfo.m_bShowUsage);\r
+               EXPECT_FALSE(cmdInfo.m_nCompMethod.has_value());\r
                EXPECT_EQ(0,cmdInfo.m_nCodepage);\r
                EXPECT_EQ(FFILEOPEN_CMDLINE, cmdInfo.m_dwLeftFlags);\r
                EXPECT_EQ(FFILEOPEN_CMDLINE, cmdInfo.m_dwMiddleFlags);\r
@@ -414,6 +428,7 @@ namespace
                EXPECT_FALSE(cmdInfo.m_bNonInteractive);\r
                EXPECT_FALSE(cmdInfo.m_bSingleInstance);\r
                EXPECT_FALSE(cmdInfo.m_bShowUsage);\r
+               EXPECT_FALSE(cmdInfo.m_nCompMethod.has_value());\r
                EXPECT_EQ(0,cmdInfo.m_nCodepage);\r
                EXPECT_EQ(FFILEOPEN_CMDLINE, cmdInfo.m_dwLeftFlags);\r
                EXPECT_EQ(FFILEOPEN_NONE, cmdInfo.m_dwMiddleFlags);\r
@@ -440,6 +455,7 @@ namespace
                EXPECT_FALSE(cmdInfo.m_bNonInteractive);\r
                EXPECT_FALSE(cmdInfo.m_bSingleInstance);\r
                EXPECT_FALSE(cmdInfo.m_bShowUsage);\r
+               EXPECT_FALSE(cmdInfo.m_nCompMethod.has_value());\r
                EXPECT_EQ(0,cmdInfo.m_nCodepage);\r
                EXPECT_EQ(FFILEOPEN_CMDLINE, cmdInfo.m_dwLeftFlags);\r
                EXPECT_EQ(FFILEOPEN_NONE, cmdInfo.m_dwMiddleFlags);\r
@@ -466,6 +482,7 @@ namespace
                EXPECT_FALSE(cmdInfo.m_bNonInteractive);\r
                EXPECT_FALSE(cmdInfo.m_bSingleInstance);\r
                EXPECT_FALSE(cmdInfo.m_bShowUsage);\r
+               EXPECT_FALSE(cmdInfo.m_nCompMethod.has_value());\r
                EXPECT_EQ(0,cmdInfo.m_nCodepage);\r
                EXPECT_EQ(FFILEOPEN_CMDLINE, cmdInfo.m_dwLeftFlags);\r
                EXPECT_EQ(FFILEOPEN_NONE, cmdInfo.m_dwMiddleFlags);\r
@@ -492,6 +509,7 @@ namespace
                EXPECT_FALSE(cmdInfo.m_bNonInteractive);\r
                EXPECT_FALSE(cmdInfo.m_bSingleInstance);\r
                EXPECT_FALSE(cmdInfo.m_bShowUsage);\r
+               EXPECT_FALSE(cmdInfo.m_nCompMethod.has_value());\r
                EXPECT_EQ(0,cmdInfo.m_nCodepage);\r
                EXPECT_EQ(FFILEOPEN_CMDLINE, cmdInfo.m_dwLeftFlags);\r
                EXPECT_EQ(FFILEOPEN_NONE, cmdInfo.m_dwMiddleFlags);\r
@@ -517,6 +535,7 @@ namespace
                EXPECT_FALSE(cmdInfo.m_bNonInteractive);\r
                EXPECT_FALSE(cmdInfo.m_bSingleInstance);\r
                EXPECT_FALSE(cmdInfo.m_bShowUsage);\r
+               EXPECT_FALSE(cmdInfo.m_nCompMethod.has_value());\r
                EXPECT_EQ(0,cmdInfo.m_nCodepage);\r
                EXPECT_EQ(FFILEOPEN_CMDLINE, cmdInfo.m_dwLeftFlags);\r
                EXPECT_EQ(FFILEOPEN_NONE, cmdInfo.m_dwMiddleFlags);\r
@@ -542,6 +561,7 @@ namespace
                EXPECT_FALSE(cmdInfo.m_bNonInteractive);\r
                EXPECT_FALSE(cmdInfo.m_bSingleInstance);\r
                EXPECT_FALSE(cmdInfo.m_bShowUsage);\r
+               EXPECT_FALSE(cmdInfo.m_nCompMethod.has_value());\r
                EXPECT_EQ(0,cmdInfo.m_nCodepage);\r
                EXPECT_EQ(FFILEOPEN_CMDLINE, cmdInfo.m_dwLeftFlags);\r
                EXPECT_EQ(FFILEOPEN_NONE, cmdInfo.m_dwMiddleFlags);\r
@@ -568,6 +588,7 @@ namespace
                EXPECT_FALSE(cmdInfo.m_bNonInteractive);\r
                EXPECT_FALSE(cmdInfo.m_bSingleInstance);\r
                EXPECT_FALSE(cmdInfo.m_bShowUsage);\r
+               EXPECT_FALSE(cmdInfo.m_nCompMethod.has_value());\r
                EXPECT_EQ(0,cmdInfo.m_nCodepage);\r
                EXPECT_EQ(FFILEOPEN_CMDLINE, cmdInfo.m_dwLeftFlags);\r
                EXPECT_EQ(FFILEOPEN_NONE, cmdInfo.m_dwMiddleFlags);\r
@@ -594,6 +615,7 @@ namespace
                EXPECT_FALSE(cmdInfo.m_bNonInteractive);\r
                EXPECT_FALSE(cmdInfo.m_bSingleInstance);\r
                EXPECT_FALSE(cmdInfo.m_bShowUsage);\r
+               EXPECT_FALSE(cmdInfo.m_nCompMethod.has_value());\r
                EXPECT_EQ(0,cmdInfo.m_nCodepage);\r
                EXPECT_EQ(FFILEOPEN_CMDLINE, cmdInfo.m_dwLeftFlags);\r
                EXPECT_EQ(FFILEOPEN_NONE, cmdInfo.m_dwMiddleFlags);\r
@@ -621,6 +643,7 @@ namespace
                EXPECT_FALSE(cmdInfo.m_bNonInteractive);\r
                EXPECT_FALSE(cmdInfo.m_bSingleInstance);\r
                EXPECT_FALSE(cmdInfo.m_bShowUsage);\r
+               EXPECT_FALSE(cmdInfo.m_nCompMethod.has_value());\r
                EXPECT_EQ(0,cmdInfo.m_nCodepage);\r
                EXPECT_EQ(FFILEOPEN_CMDLINE, cmdInfo.m_dwLeftFlags);\r
                EXPECT_EQ(FFILEOPEN_CMDLINE, cmdInfo.m_dwMiddleFlags);\r
@@ -648,6 +671,7 @@ namespace
                EXPECT_FALSE(cmdInfo.m_bNonInteractive);\r
                EXPECT_FALSE(cmdInfo.m_bSingleInstance);\r
                EXPECT_FALSE(cmdInfo.m_bShowUsage);\r
+               EXPECT_FALSE(cmdInfo.m_nCompMethod.has_value());\r
                EXPECT_EQ(0,cmdInfo.m_nCodepage);\r
                EXPECT_EQ(FFILEOPEN_CMDLINE, cmdInfo.m_dwLeftFlags);\r
                EXPECT_EQ(FFILEOPEN_CMDLINE, cmdInfo.m_dwMiddleFlags);\r
@@ -673,6 +697,7 @@ namespace
                EXPECT_FALSE(cmdInfo.m_bNonInteractive);\r
                EXPECT_FALSE(cmdInfo.m_bSingleInstance);\r
                EXPECT_FALSE(cmdInfo.m_bShowUsage);\r
+               EXPECT_FALSE(cmdInfo.m_nCompMethod.has_value());\r
                EXPECT_EQ(0,cmdInfo.m_nCodepage);\r
                EXPECT_EQ(FFILEOPEN_CMDLINE, cmdInfo.m_dwLeftFlags);\r
                EXPECT_EQ(FFILEOPEN_NONE, cmdInfo.m_dwMiddleFlags);\r
@@ -698,6 +723,7 @@ namespace
                EXPECT_FALSE(cmdInfo.m_bNonInteractive);\r
                EXPECT_FALSE(cmdInfo.m_bSingleInstance);\r
                EXPECT_FALSE(cmdInfo.m_bShowUsage);\r
+               EXPECT_FALSE(cmdInfo.m_nCompMethod.has_value());\r
                EXPECT_EQ(0,cmdInfo.m_nCodepage);\r
                EXPECT_EQ(FFILEOPEN_CMDLINE, cmdInfo.m_dwLeftFlags);\r
                EXPECT_EQ(FFILEOPEN_NONE, cmdInfo.m_dwMiddleFlags);\r
@@ -724,6 +750,7 @@ namespace
                EXPECT_FALSE(cmdInfo.m_bNonInteractive);\r
                EXPECT_FALSE(cmdInfo.m_bSingleInstance);\r
                EXPECT_FALSE(cmdInfo.m_bShowUsage);\r
+               EXPECT_FALSE(cmdInfo.m_nCompMethod.has_value());\r
                EXPECT_EQ(0,cmdInfo.m_nCodepage);\r
                EXPECT_EQ(FFILEOPEN_CMDLINE, cmdInfo.m_dwLeftFlags);\r
                EXPECT_EQ(FFILEOPEN_NONE, cmdInfo.m_dwMiddleFlags);\r
@@ -750,6 +777,7 @@ namespace
                EXPECT_FALSE(cmdInfo.m_bNonInteractive);\r
                EXPECT_FALSE(cmdInfo.m_bSingleInstance);\r
                EXPECT_FALSE(cmdInfo.m_bShowUsage);\r
+               EXPECT_FALSE(cmdInfo.m_nCompMethod.has_value());\r
                EXPECT_EQ(0,cmdInfo.m_nCodepage);\r
                EXPECT_EQ(FFILEOPEN_CMDLINE, cmdInfo.m_dwLeftFlags);\r
                EXPECT_EQ(FFILEOPEN_NONE, cmdInfo.m_dwMiddleFlags);\r
@@ -776,6 +804,7 @@ namespace
                EXPECT_FALSE(cmdInfo.m_bNonInteractive);\r
                EXPECT_FALSE(cmdInfo.m_bSingleInstance);\r
                EXPECT_FALSE(cmdInfo.m_bShowUsage);\r
+               EXPECT_FALSE(cmdInfo.m_nCompMethod.has_value());\r
                EXPECT_EQ(0,cmdInfo.m_nCodepage);\r
                EXPECT_EQ(FFILEOPEN_CMDLINE, cmdInfo.m_dwLeftFlags);\r
                EXPECT_EQ(FFILEOPEN_NONE, cmdInfo.m_dwMiddleFlags);\r
@@ -803,6 +832,7 @@ namespace
                EXPECT_FALSE(cmdInfo.m_bNonInteractive);\r
                EXPECT_FALSE(cmdInfo.m_bSingleInstance);\r
                EXPECT_FALSE(cmdInfo.m_bShowUsage);\r
+               EXPECT_FALSE(cmdInfo.m_nCompMethod.has_value());\r
                EXPECT_EQ(0,cmdInfo.m_nCodepage);\r
                EXPECT_EQ(FFILEOPEN_CMDLINE, cmdInfo.m_dwLeftFlags);\r
                EXPECT_EQ(FFILEOPEN_CMDLINE, cmdInfo.m_dwMiddleFlags);\r
@@ -830,6 +860,7 @@ namespace
                EXPECT_FALSE(cmdInfo.m_bNonInteractive);\r
                EXPECT_FALSE(cmdInfo.m_bSingleInstance);\r
                EXPECT_FALSE(cmdInfo.m_bShowUsage);\r
+               EXPECT_FALSE(cmdInfo.m_nCompMethod.has_value());\r
                EXPECT_EQ(0,cmdInfo.m_nCodepage);\r
                EXPECT_EQ(FFILEOPEN_CMDLINE, cmdInfo.m_dwLeftFlags);\r
                EXPECT_EQ(FFILEOPEN_CMDLINE, cmdInfo.m_dwMiddleFlags);\r
@@ -854,6 +885,7 @@ namespace
                EXPECT_FALSE(cmdInfo.m_bNonInteractive);\r
                EXPECT_FALSE(cmdInfo.m_bSingleInstance);\r
                EXPECT_FALSE(cmdInfo.m_bShowUsage);\r
+               EXPECT_FALSE(cmdInfo.m_nCompMethod.has_value());\r
                EXPECT_EQ(1251,cmdInfo.m_nCodepage);\r
                EXPECT_EQ(FFILEOPEN_NONE, cmdInfo.m_dwLeftFlags);\r
                EXPECT_EQ(FFILEOPEN_NONE, cmdInfo.m_dwMiddleFlags);\r
@@ -878,6 +910,7 @@ namespace
                EXPECT_FALSE(cmdInfo.m_bNonInteractive);\r
                EXPECT_FALSE(cmdInfo.m_bSingleInstance);\r
                EXPECT_FALSE(cmdInfo.m_bShowUsage);\r
+               EXPECT_FALSE(cmdInfo.m_nCompMethod.has_value());\r
                EXPECT_EQ(1251,cmdInfo.m_nCodepage);\r
                EXPECT_EQ(FFILEOPEN_NONE, cmdInfo.m_dwLeftFlags);\r
                EXPECT_EQ(FFILEOPEN_NONE, cmdInfo.m_dwMiddleFlags);\r
@@ -902,6 +935,7 @@ namespace
                EXPECT_FALSE(cmdInfo.m_bNonInteractive);\r
                EXPECT_FALSE(cmdInfo.m_bSingleInstance);\r
                EXPECT_FALSE(cmdInfo.m_bShowUsage);\r
+               EXPECT_FALSE(cmdInfo.m_nCompMethod.has_value());\r
                EXPECT_EQ(0,cmdInfo.m_nCodepage);\r
                EXPECT_EQ(FFILEOPEN_NONE, cmdInfo.m_dwLeftFlags);\r
                EXPECT_EQ(FFILEOPEN_NONE, cmdInfo.m_dwMiddleFlags);\r
@@ -926,6 +960,7 @@ namespace
                EXPECT_FALSE(cmdInfo.m_bNonInteractive);\r
                EXPECT_FALSE(cmdInfo.m_bSingleInstance);\r
                EXPECT_FALSE(cmdInfo.m_bShowUsage);\r
+               EXPECT_FALSE(cmdInfo.m_nCompMethod.has_value());\r
                EXPECT_EQ(0,cmdInfo.m_nCodepage);\r
                EXPECT_EQ(FFILEOPEN_NONE, cmdInfo.m_dwLeftFlags);\r
                EXPECT_EQ(FFILEOPEN_NONE, cmdInfo.m_dwMiddleFlags);\r
@@ -950,6 +985,7 @@ namespace
                EXPECT_FALSE(cmdInfo.m_bNonInteractive);\r
                EXPECT_FALSE(cmdInfo.m_bSingleInstance);\r
                EXPECT_FALSE(cmdInfo.m_bShowUsage);\r
+               EXPECT_FALSE(cmdInfo.m_nCompMethod.has_value());\r
                EXPECT_EQ(0,cmdInfo.m_nCodepage);\r
                EXPECT_EQ(FFILEOPEN_NONE, cmdInfo.m_dwLeftFlags);\r
                EXPECT_EQ(FFILEOPEN_NONE, cmdInfo.m_dwMiddleFlags);\r
@@ -975,6 +1011,7 @@ namespace
                EXPECT_FALSE(cmdInfo.m_bNonInteractive);\r
                EXPECT_FALSE(cmdInfo.m_bSingleInstance);\r
                EXPECT_FALSE(cmdInfo.m_bShowUsage);\r
+               EXPECT_FALSE(cmdInfo.m_nCompMethod.has_value());\r
                EXPECT_EQ(0,cmdInfo.m_nCodepage);\r
                EXPECT_EQ(FFILEOPEN_CMDLINE, cmdInfo.m_dwLeftFlags);\r
                EXPECT_EQ(FFILEOPEN_NONE, cmdInfo.m_dwMiddleFlags);\r
@@ -1000,6 +1037,7 @@ namespace
                EXPECT_FALSE(cmdInfo.m_bNonInteractive);\r
                EXPECT_FALSE(cmdInfo.m_bSingleInstance);\r
                EXPECT_FALSE(cmdInfo.m_bShowUsage);\r
+               EXPECT_FALSE(cmdInfo.m_nCompMethod.has_value());\r
                EXPECT_EQ(0,cmdInfo.m_nCodepage);\r
                EXPECT_EQ(FFILEOPEN_CMDLINE, cmdInfo.m_dwLeftFlags);\r
                EXPECT_EQ(FFILEOPEN_NONE, cmdInfo.m_dwMiddleFlags);\r
@@ -1025,6 +1063,7 @@ namespace
                EXPECT_FALSE(cmdInfo.m_bNonInteractive);\r
                EXPECT_FALSE(cmdInfo.m_bSingleInstance);\r
                EXPECT_FALSE(cmdInfo.m_bShowUsage);\r
+               EXPECT_FALSE(cmdInfo.m_nCompMethod.has_value());\r
                EXPECT_EQ(0,cmdInfo.m_nCodepage);\r
                EXPECT_EQ(FFILEOPEN_CMDLINE, cmdInfo.m_dwLeftFlags);\r
                EXPECT_EQ(FFILEOPEN_NONE, cmdInfo.m_dwMiddleFlags);\r
@@ -1049,6 +1088,7 @@ namespace
                EXPECT_FALSE(cmdInfo.m_bNonInteractive);\r
                EXPECT_FALSE(cmdInfo.m_bSingleInstance);\r
                EXPECT_FALSE(cmdInfo.m_bShowUsage);\r
+               EXPECT_FALSE(cmdInfo.m_nCompMethod.has_value());\r
                EXPECT_EQ(0,cmdInfo.m_nCodepage);\r
                EXPECT_EQ(FFILEOPEN_NONE, cmdInfo.m_dwLeftFlags);\r
                EXPECT_EQ(FFILEOPEN_NONE, cmdInfo.m_dwMiddleFlags);\r
@@ -1074,6 +1114,7 @@ namespace
                EXPECT_FALSE(cmdInfo.m_bNonInteractive);\r
                EXPECT_FALSE(cmdInfo.m_bSingleInstance);\r
                EXPECT_FALSE(cmdInfo.m_bShowUsage);\r
+               EXPECT_FALSE(cmdInfo.m_nCompMethod.has_value());\r
                EXPECT_EQ(0,cmdInfo.m_nCodepage);\r
                EXPECT_EQ(FFILEOPEN_CMDLINE, cmdInfo.m_dwLeftFlags);\r
                EXPECT_EQ(FFILEOPEN_NONE, cmdInfo.m_dwMiddleFlags);\r
@@ -1099,6 +1140,7 @@ namespace
                EXPECT_FALSE(cmdInfo.m_bNonInteractive);\r
                EXPECT_FALSE(cmdInfo.m_bSingleInstance);\r
                EXPECT_FALSE(cmdInfo.m_bShowUsage);\r
+               EXPECT_FALSE(cmdInfo.m_nCompMethod.has_value());\r
                EXPECT_EQ(0,cmdInfo.m_nCodepage);\r
                EXPECT_EQ(FFILEOPEN_CMDLINE, cmdInfo.m_dwLeftFlags);\r
                EXPECT_EQ(FFILEOPEN_NONE, cmdInfo.m_dwMiddleFlags);\r
@@ -1123,6 +1165,7 @@ namespace
                EXPECT_FALSE(cmdInfo.m_bNonInteractive);\r
                EXPECT_FALSE(cmdInfo.m_bSingleInstance);\r
                EXPECT_FALSE(cmdInfo.m_bShowUsage);\r
+               EXPECT_FALSE(cmdInfo.m_nCompMethod.has_value());\r
                EXPECT_EQ(0,cmdInfo.m_nCodepage);\r
                EXPECT_EQ(FFILEOPEN_NONE, cmdInfo.m_dwLeftFlags);\r
                EXPECT_EQ(FFILEOPEN_NONE, cmdInfo.m_dwMiddleFlags);\r
@@ -1148,6 +1191,7 @@ namespace
                EXPECT_FALSE(cmdInfo.m_bNonInteractive);\r
                EXPECT_FALSE(cmdInfo.m_bSingleInstance);\r
                EXPECT_FALSE(cmdInfo.m_bShowUsage);\r
+               EXPECT_FALSE(cmdInfo.m_nCompMethod.has_value());\r
                EXPECT_EQ(0,cmdInfo.m_nCodepage);\r
                EXPECT_EQ(FFILEOPEN_CMDLINE, cmdInfo.m_dwLeftFlags);\r
                EXPECT_EQ(FFILEOPEN_NONE, cmdInfo.m_dwMiddleFlags);\r
@@ -1173,6 +1217,7 @@ namespace
                EXPECT_FALSE(cmdInfo.m_bNonInteractive);\r
                EXPECT_FALSE(cmdInfo.m_bSingleInstance);\r
                EXPECT_FALSE(cmdInfo.m_bShowUsage);\r
+               EXPECT_FALSE(cmdInfo.m_nCompMethod.has_value());\r
                EXPECT_EQ(0,cmdInfo.m_nCodepage);\r
                EXPECT_EQ(FFILEOPEN_CMDLINE, cmdInfo.m_dwLeftFlags);\r
                EXPECT_EQ(FFILEOPEN_NONE, cmdInfo.m_dwMiddleFlags);\r
@@ -1197,6 +1242,7 @@ namespace
                EXPECT_FALSE(cmdInfo.m_bNonInteractive);\r
                EXPECT_FALSE(cmdInfo.m_bSingleInstance);\r
                EXPECT_FALSE(cmdInfo.m_bShowUsage);\r
+               EXPECT_FALSE(cmdInfo.m_nCompMethod.has_value());\r
                EXPECT_EQ(0,cmdInfo.m_nCodepage);\r
                EXPECT_EQ(FFILEOPEN_NONE, cmdInfo.m_dwLeftFlags);\r
                EXPECT_EQ(FFILEOPEN_NONE, cmdInfo.m_dwMiddleFlags);\r
@@ -1222,6 +1268,7 @@ namespace
                EXPECT_FALSE(cmdInfo.m_bNonInteractive);\r
                EXPECT_FALSE(cmdInfo.m_bSingleInstance);\r
                EXPECT_FALSE(cmdInfo.m_bShowUsage);\r
+               EXPECT_FALSE(cmdInfo.m_nCompMethod.has_value());\r
                EXPECT_EQ(0,cmdInfo.m_nCodepage);\r
                EXPECT_EQ(FFILEOPEN_CMDLINE, cmdInfo.m_dwLeftFlags);\r
                EXPECT_EQ(FFILEOPEN_NONE, cmdInfo.m_dwMiddleFlags);\r
@@ -1247,6 +1294,7 @@ namespace
                EXPECT_FALSE(cmdInfo.m_bNonInteractive);\r
                EXPECT_FALSE(cmdInfo.m_bSingleInstance);\r
                EXPECT_FALSE(cmdInfo.m_bShowUsage);\r
+               EXPECT_FALSE(cmdInfo.m_nCompMethod.has_value());\r
                EXPECT_EQ(0,cmdInfo.m_nCodepage);\r
                EXPECT_EQ(FFILEOPEN_CMDLINE, cmdInfo.m_dwLeftFlags);\r
                EXPECT_EQ(FFILEOPEN_NONE, cmdInfo.m_dwMiddleFlags);\r
@@ -1271,6 +1319,7 @@ namespace
                EXPECT_FALSE(cmdInfo.m_bNonInteractive);\r
                EXPECT_FALSE(cmdInfo.m_bSingleInstance);\r
                EXPECT_FALSE(cmdInfo.m_bShowUsage);\r
+               EXPECT_FALSE(cmdInfo.m_nCompMethod.has_value());\r
                EXPECT_EQ(0,cmdInfo.m_nCodepage);\r
                EXPECT_EQ(FFILEOPEN_NONE, cmdInfo.m_dwLeftFlags);\r
                EXPECT_EQ(FFILEOPEN_NONE, cmdInfo.m_dwMiddleFlags);\r
@@ -1295,6 +1344,7 @@ namespace
                EXPECT_FALSE(cmdInfo.m_bNonInteractive);\r
                EXPECT_FALSE(cmdInfo.m_bSingleInstance);\r
                EXPECT_FALSE(cmdInfo.m_bShowUsage);\r
+               EXPECT_FALSE(cmdInfo.m_nCompMethod.has_value());\r
                EXPECT_EQ(0,cmdInfo.m_nCodepage);\r
                EXPECT_EQ(FFILEOPEN_NONE, cmdInfo.m_dwLeftFlags);\r
                EXPECT_EQ(FFILEOPEN_NONE, cmdInfo.m_dwMiddleFlags);\r
@@ -1319,6 +1369,7 @@ namespace
                EXPECT_FALSE(cmdInfo.m_bNonInteractive);\r
                EXPECT_FALSE(cmdInfo.m_bSingleInstance);\r
                EXPECT_FALSE(cmdInfo.m_bShowUsage);\r
+               EXPECT_FALSE(cmdInfo.m_nCompMethod.has_value());\r
                EXPECT_EQ(0,cmdInfo.m_nCodepage);\r
                EXPECT_EQ(FFILEOPEN_NONE, cmdInfo.m_dwLeftFlags);\r
                EXPECT_EQ(FFILEOPEN_NONE, cmdInfo.m_dwMiddleFlags);\r
@@ -1343,6 +1394,7 @@ namespace
                EXPECT_FALSE(cmdInfo.m_bNonInteractive);\r
                EXPECT_FALSE(cmdInfo.m_bSingleInstance);\r
                EXPECT_FALSE(cmdInfo.m_bShowUsage);\r
+               EXPECT_FALSE(cmdInfo.m_nCompMethod.has_value());\r
                EXPECT_EQ(0,cmdInfo.m_nCodepage);\r
                EXPECT_EQ(FFILEOPEN_NONE, cmdInfo.m_dwLeftFlags);\r
                EXPECT_EQ(FFILEOPEN_NONE, cmdInfo.m_dwMiddleFlags);\r
@@ -1367,6 +1419,7 @@ namespace
                EXPECT_FALSE(cmdInfo.m_bNonInteractive);\r
                EXPECT_FALSE(cmdInfo.m_bSingleInstance);\r
                EXPECT_FALSE(cmdInfo.m_bShowUsage);\r
+               EXPECT_FALSE(cmdInfo.m_nCompMethod.has_value());\r
                EXPECT_EQ(0,cmdInfo.m_nCodepage);\r
                EXPECT_EQ(FFILEOPEN_NONE, cmdInfo.m_dwLeftFlags);\r
                EXPECT_EQ(FFILEOPEN_NONE, cmdInfo.m_dwMiddleFlags);\r
@@ -1391,6 +1444,7 @@ namespace
                EXPECT_FALSE(cmdInfo.m_bNonInteractive);\r
                EXPECT_FALSE(cmdInfo.m_bSingleInstance);\r
                EXPECT_FALSE(cmdInfo.m_bShowUsage);\r
+               EXPECT_FALSE(cmdInfo.m_nCompMethod.has_value());\r
                EXPECT_EQ(0,cmdInfo.m_nCodepage);\r
                EXPECT_EQ(FFILEOPEN_NONE, cmdInfo.m_dwLeftFlags);\r
                EXPECT_EQ(FFILEOPEN_NONE, cmdInfo.m_dwMiddleFlags);\r
@@ -1415,6 +1469,7 @@ namespace
                EXPECT_FALSE(cmdInfo.m_bNonInteractive);\r
                EXPECT_FALSE(cmdInfo.m_bSingleInstance);\r
                EXPECT_FALSE(cmdInfo.m_bShowUsage);\r
+               EXPECT_FALSE(cmdInfo.m_nCompMethod.has_value());\r
                EXPECT_EQ(0,cmdInfo.m_nCodepage);\r
                EXPECT_EQ(FFILEOPEN_NONE, cmdInfo.m_dwLeftFlags);\r
                EXPECT_EQ(FFILEOPEN_NONE, cmdInfo.m_dwMiddleFlags);\r
@@ -1427,6 +1482,44 @@ namespace
                EXPECT_EQ(_T(""), cmdInfo.m_sUnpacker);\r
        }\r
 \r
+       // Compare method\r
+       TEST_F(MergeCmdLineInfoTest, CompareMethod)\r
+       {\r
+               {\r
+                       MergeCmdLineInfo cmdInfo(_T("C:\\WinMerge\\WinMerge.exe /m full"));\r
+                       EXPECT_EQ(MergeCmdLineInfo::CompareMethodType::CONTENT, *cmdInfo.m_nCompMethod);\r
+               }\r
+               {\r
+                       MergeCmdLineInfo cmdInfo(_T("C:\\WinMerge\\WinMerge.exe /m quick"));\r
+                       EXPECT_EQ(MergeCmdLineInfo::CompareMethodType::QUICK_CONTENT, *cmdInfo.m_nCompMethod);\r
+               }\r
+               {\r
+                       MergeCmdLineInfo cmdInfo(_T("C:\\WinMerge\\WinMerge.exe /m binary"));\r
+                       EXPECT_EQ(MergeCmdLineInfo::CompareMethodType::BINARY_CONTENT, *cmdInfo.m_nCompMethod);\r
+               }\r
+               {\r
+                       MergeCmdLineInfo cmdInfo(_T("C:\\WinMerge\\WinMerge.exe /m date"));\r
+                       EXPECT_EQ(MergeCmdLineInfo::CompareMethodType::DATE, *cmdInfo.m_nCompMethod);\r
+               }\r
+               {\r
+                       MergeCmdLineInfo cmdInfo(_T("C:\\WinMerge\\WinMerge.exe /m datesize"));\r
+                       EXPECT_EQ(MergeCmdLineInfo::CompareMethodType::DATE_SIZE, *cmdInfo.m_nCompMethod);\r
+               }\r
+               {\r
+                       MergeCmdLineInfo cmdInfo(_T("C:\\WinMerge\\WinMerge.exe /m sizedate"));\r
+                       EXPECT_EQ(MergeCmdLineInfo::CompareMethodType::DATE_SIZE, *cmdInfo.m_nCompMethod);\r
+               }\r
+               {\r
+                       MergeCmdLineInfo cmdInfo(_T("C:\\WinMerge\\WinMerge.exe /m size"));\r
+                       EXPECT_EQ(MergeCmdLineInfo::CompareMethodType::SIZE, *cmdInfo.m_nCompMethod);\r
+               }\r
+               {\r
+                       MergeCmdLineInfo cmdInfo(_T("C:\\WinMerge\\WinMerge.exe /m unknown"));\r
+                       EXPECT_FALSE(cmdInfo.m_nCompMethod.has_value());\r
+                       EXPECT_EQ(1, cmdInfo.m_sErrorMessages.size());\r
+               }\r
+       }\r
+\r
        // Config\r
        TEST_F(MergeCmdLineInfoTest, SetConfig1)\r
        {\r
@@ -1450,6 +1543,7 @@ namespace
                EXPECT_FALSE(cmdInfo.m_bNonInteractive);\r
                EXPECT_FALSE(cmdInfo.m_bSingleInstance);\r
                EXPECT_FALSE(cmdInfo.m_bShowUsage);\r
+               EXPECT_FALSE(cmdInfo.m_nCompMethod.has_value());\r
                EXPECT_EQ(0,cmdInfo.m_nCodepage);\r
                EXPECT_EQ(FFILEOPEN_NONE, cmdInfo.m_dwLeftFlags);\r
                EXPECT_EQ(FFILEOPEN_NONE, cmdInfo.m_dwMiddleFlags);\r