Thread: [Winmerge-svn] SF.net SVN: winmerge: [3745] trunk/Testing/CppUnit
Windows visual diff and merge for files and directories
Brought to you by:
christianlist,
grimmdp
From: <ki...@us...> - 2006-10-31 00:15:15
|
Revision: 3745 http://svn.sourceforge.net/winmerge/?rev=3745&view=rev Author: kimmov Date: 2006-10-30 16:14:57 -0800 (Mon, 30 Oct 2006) Log Message: ----------- Cleanup example test, add more simple string compare tests Modified Paths: -------------- trunk/Testing/CppUnit/Changes.txt trunk/Testing/CppUnit/StringDifferencing/StringDifferencing.dsp trunk/Testing/CppUnit/StringDifferencing/TestCase1.cpp trunk/Testing/CppUnit/StringDifferencing/TestCase1.h Added Paths: ----------- trunk/Testing/CppUnit/StringDifferencing/DifferentStrings1.cpp trunk/Testing/CppUnit/StringDifferencing/DifferentStrings1.h trunk/Testing/CppUnit/StringDifferencing/IdenticalStrings1.cpp trunk/Testing/CppUnit/StringDifferencing/IdenticalStrings1.h Modified: trunk/Testing/CppUnit/Changes.txt =================================================================== --- trunk/Testing/CppUnit/Changes.txt 2006-10-30 21:02:36 UTC (rev 3744) +++ trunk/Testing/CppUnit/Changes.txt 2006-10-31 00:14:57 UTC (rev 3745) @@ -1,5 +1,11 @@ Testing\selftest\Changes.txt +2006-10-31 Kimmo + Cleanup example test, add more simple string compare tests + StringDifferencing: StringDifferencing.dsp TestCase1.cpp TestCase1.h + StringDifferencing: add files DifferentStrings1.cpp DifferentStrings1.h + IdenticalStrings1.cpp IdenticalStrings1.h + 2006-10-27 Kimmo PATCH: [ 1585418 ] CppUnit tests for StringDiff Add folder Testing/CppUnit for unit tests Added: trunk/Testing/CppUnit/StringDifferencing/DifferentStrings1.cpp =================================================================== --- trunk/Testing/CppUnit/StringDifferencing/DifferentStrings1.cpp (rev 0) +++ trunk/Testing/CppUnit/StringDifferencing/DifferentStrings1.cpp 2006-10-31 00:14:57 UTC (rev 3745) @@ -0,0 +1,119 @@ +/** + * @file DifferentStrings1.h + * + * @brief Implementation for simple different strings tests. + */ + +#include <cppunit/config/SourcePrefix.h> +#include "stdafx.h" + +#include "CompareOptions.h" +#include "stringdiffs.h" + +#include "DifferentStrings1.h" + +CPPUNIT_TEST_SUITE_REGISTRATION( DifferentStrings1 ); + +/** @brief Testcase initialization code. */ +void DifferentStrings1::setUp() +{ + // Add possible initializations here +} + +/** @brief Testcase cleanup code. */ +void DifferentStrings1::tearDown() +{ + // Add possible cleanups here +} + +/** + * @brief Test we handle simple case difference correctly. + * This function tests we handle one-char case difference correctly + * with different compare options. In this test the difference is + * the first char in word. + */ +void DifferentStrings1::CasesDiffer1() +{ + wdiffarray diffs; + CString string1(_T("Test")); + CString string2(_T("test")); + int count = 0; + + // Compare case, all whitespaces, whitespace break + // We must find one difference + sd_ComputeWordDiffs(string1, string2, + true, WHITESPACE_COMPARE_ALL, 0, false, + &diffs); + count = diffs.GetSize(); + CPPUNIT_ASSERT(count == 1); + + // Ignore case, all whitespaces, whitespace break + // No difference + sd_ComputeWordDiffs(string1, string2, + false, WHITESPACE_COMPARE_ALL, 0, false, + &diffs); + count = diffs.GetSize(); + CPPUNIT_ASSERT(count == 0); + + // Compare case, whitespaces change, whitespace break + // We must find one difference + sd_ComputeWordDiffs(string1, string2, + true, WHITESPACE_IGNORE_CHANGE, 0, false, + &diffs); + count = diffs.GetSize(); + CPPUNIT_ASSERT(count == 1); + + // Compare case, whitespaces ignore, whitespace break + // We must find one difference + sd_ComputeWordDiffs(string1, string2, + true, WHITESPACE_IGNORE_ALL, 0, false, + &diffs); + count = diffs.GetSize(); + CPPUNIT_ASSERT(count == 1); +} + +/** + * @brief Test we handle simple case difference correctly. + * This function tests we handle one-char case difference correctly + * with different compare options. In this test the difference is + * in the middle of word. + */ +void DifferentStrings1::CasesDiffer2() +{ + wdiffarray diffs; + CString string1(_T("test")); + CString string2(_T("teSt")); + int count = 0; + + // Compare case, all whitespaces, whitespace break + // We must find one difference + sd_ComputeWordDiffs(string1, string2, + true, WHITESPACE_COMPARE_ALL, 0, false, + &diffs); + count = diffs.GetSize(); + CPPUNIT_ASSERT(count == 1); + + // Ignore case, all whitespaces, whitespace break + // No difference + sd_ComputeWordDiffs(string1, string2, + false, WHITESPACE_COMPARE_ALL, 0, false, + &diffs); + count = diffs.GetSize(); + CPPUNIT_ASSERT(count == 0); + + // Compare case, whitespaces change, whitespace break + // We must find one difference + sd_ComputeWordDiffs(string1, string2, + true, WHITESPACE_IGNORE_CHANGE, 0, false, + &diffs); + count = diffs.GetSize(); + CPPUNIT_ASSERT(count == 1); + + // Compare case, whitespaces ignore, whitespace break + // We must find one difference + sd_ComputeWordDiffs(string1, string2, + true, WHITESPACE_IGNORE_ALL, 0, false, + &diffs); + count = diffs.GetSize(); + CPPUNIT_ASSERT(count == 1); +} Added: trunk/Testing/CppUnit/StringDifferencing/DifferentStrings1.h =================================================================== --- trunk/Testing/CppUnit/StringDifferencing/DifferentStrings1.h (rev 0) +++ trunk/Testing/CppUnit/StringDifferencing/DifferentStrings1.h 2006-10-31 00:14:57 UTC (rev 3745) @@ -0,0 +1,32 @@ +/** + * @file DifferentStrings1.h + * + * @brief Declaration for simple different strings tests.. + */ + +#ifndef _DIFFERENT_STRINGS1_H_ +#define _DIFFERENT_STRINGS1_H_ + +#include <cppunit/extensions/HelperMacros.h> + + +/** + * @brief Simple different strings testing. + */ +class DifferentStrings1 : public CPPUNIT_NS::TestFixture +{ + CPPUNIT_TEST_SUITE( DifferentStrings1 ); + CPPUNIT_TEST( CasesDiffer1 ); + CPPUNIT_TEST( CasesDiffer2 ); + CPPUNIT_TEST_SUITE_END(); + +public: + void setUp(); + void tearDown(); + +protected: + void CasesDiffer1(); + void CasesDiffer2(); +}; + +#endif // DIFFERENT_STRINGS1 Added: trunk/Testing/CppUnit/StringDifferencing/IdenticalStrings1.cpp =================================================================== --- trunk/Testing/CppUnit/StringDifferencing/IdenticalStrings1.cpp (rev 0) +++ trunk/Testing/CppUnit/StringDifferencing/IdenticalStrings1.cpp 2006-10-31 00:14:57 UTC (rev 3745) @@ -0,0 +1,198 @@ +/** + * @file IdenticalStrings1.h + * + * @brief Implementation for Identical strings testing. + */ + +#include <cppunit/config/SourcePrefix.h> +#include "stdafx.h" + +#include "CompareOptions.h" +#include "stringdiffs.h" + +#include "IdenticalStrings1.h" + +CPPUNIT_TEST_SUITE_REGISTRATION( IdenticalStrings1 ); + +static const CString string1(_T("Test")); +static const CString string2(_T("Test")); + +/** @brief Testcase initialization code. */ +void IdenticalStrings1::setUp() +{ + // Add possible initializations here +} + +/** @brief Testcase cleanup code. */ +void IdenticalStrings1::tearDown() +{ + // Add possible cleanups here +} + +/** + * @brief Test identical words are detected as such. + * This function tests that two identical words are detected + * as identical with different word-compare settings. This function + * tests whitespace-break, word-level compare. + */ +void IdenticalStrings1::IdenticalWord1() +{ + wdiffarray diffs; + int count = 0; + + // Break type is whitespace or punctuation + + // Compare case, all whitespaces, whitespace break + sd_ComputeWordDiffs(string1, string2, + true, WHITESPACE_COMPARE_ALL, 0, false, + &diffs); + count = diffs.GetSize(); + CPPUNIT_ASSERT(count == 0); + + // Ignore case, all whitespaces, whitespace break + sd_ComputeWordDiffs(string1, string2, + false, WHITESPACE_COMPARE_ALL, 0, false, + &diffs); + count = diffs.GetSize(); + CPPUNIT_ASSERT(count == 0); + + // Compare case, whitespaces change, whitespace break + sd_ComputeWordDiffs(string1, string2, + true, WHITESPACE_IGNORE_CHANGE, 0, false, + &diffs); + count = diffs.GetSize(); + CPPUNIT_ASSERT(count == 0); + + // Compare case, whitespaces ignore, whitespace break + sd_ComputeWordDiffs(string1, string2, + true, WHITESPACE_IGNORE_ALL, 0, false, + &diffs); + count = diffs.GetSize(); + CPPUNIT_ASSERT(count == 0); +} + +/** + * @brief Test identical words are detected as such. + * This function tests that two identical words are detected + * as identical with different word-compare settings. This function + * tests punctuation-break, word-level compare. + */ +void IdenticalStrings1::IdenticalWord2() +{ + wdiffarray diffs; + int count = 0; + + // Break type is whitespace or punctuation + + // Compare case, all whitespaces, whitespace break + sd_ComputeWordDiffs(string1, string2, + true, WHITESPACE_COMPARE_ALL, 1, false, + &diffs); + count = diffs.GetSize(); + CPPUNIT_ASSERT(count == 0); + + // Ignore case, all whitespaces, whitespace break + sd_ComputeWordDiffs(string1, string2, + false, WHITESPACE_COMPARE_ALL, 1, false, + &diffs); + count = diffs.GetSize(); + CPPUNIT_ASSERT(count == 0); + + // Compare case, whitespaces change, whitespace break + sd_ComputeWordDiffs(string1, string2, + true, WHITESPACE_IGNORE_CHANGE, 1, false, + &diffs); + count = diffs.GetSize(); + CPPUNIT_ASSERT(count == 0); + + // Compare case, whitespaces ignore, whitespace break + sd_ComputeWordDiffs(string1, string2, + true, WHITESPACE_IGNORE_ALL, 1, false, + &diffs); + count = diffs.GetSize(); + CPPUNIT_ASSERT(count == 0); +} + +/** + * @brief Test identical words are detected as such. + * This function tests that two identical words are detected + * as identical with different word-compare settings. This function + * tests whitespace-break, byte-level compare. + */ +void IdenticalStrings1::IdenticalWord3() +{ + wdiffarray diffs; + int count = 0; + + // Break type is whitespace or punctuation + + // Compare case, all whitespaces, whitespace break + sd_ComputeWordDiffs(string1, string2, + true, WHITESPACE_COMPARE_ALL, 0, true, + &diffs); + count = diffs.GetSize(); + CPPUNIT_ASSERT(count == 0); + + // Ignore case, all whitespaces, whitespace break + sd_ComputeWordDiffs(string1, string2, + false, WHITESPACE_COMPARE_ALL, 0, true, + &diffs); + count = diffs.GetSize(); + CPPUNIT_ASSERT(count == 0); + + // Compare case, whitespaces change, whitespace break + sd_ComputeWordDiffs(string1, string2, + true, WHITESPACE_IGNORE_CHANGE, 0, true, + &diffs); + count = diffs.GetSize(); + CPPUNIT_ASSERT(count == 0); + + // Compare case, whitespaces ignore, whitespace break + sd_ComputeWordDiffs(string1, string2, + true, WHITESPACE_IGNORE_ALL, 0, true, + &diffs); + count = diffs.GetSize(); + CPPUNIT_ASSERT(count == 0); +} + +/** + * @brief Test identical words are detected as such. + * This function tests that two identical words are detected + * as identical with different word-compare settings. This function + * tests punctuation-break, byte-level compare. + */ +void IdenticalStrings1::IdenticalWord4() +{ + wdiffarray diffs; + int count = 0; + + // Break type is whitespace or punctuation + + // Compare case, all whitespaces, whitespace break + sd_ComputeWordDiffs(string1, string2, + true, WHITESPACE_COMPARE_ALL, 1, true, + &diffs); + count = diffs.GetSize(); + CPPUNIT_ASSERT(count == 0); + + // Ignore case, all whitespaces, whitespace break + sd_ComputeWordDiffs(string1, string2, + false, WHITESPACE_COMPARE_ALL, 1, true, + &diffs); + count = diffs.GetSize(); + CPPUNIT_ASSERT(count == 0); + + // Compare case, whitespaces change, whitespace break + sd_ComputeWordDiffs(string1, string2, + true, WHITESPACE_IGNORE_CHANGE, 1, true, + &diffs); + count = diffs.GetSize(); + CPPUNIT_ASSERT(count == 0); + + // Compare case, whitespaces ignore, whitespace break + sd_ComputeWordDiffs(string1, string2, + true, WHITESPACE_IGNORE_ALL, 1, true, + &diffs); + count = diffs.GetSize(); + CPPUNIT_ASSERT(count == 0); +} Added: trunk/Testing/CppUnit/StringDifferencing/IdenticalStrings1.h =================================================================== --- trunk/Testing/CppUnit/StringDifferencing/IdenticalStrings1.h (rev 0) +++ trunk/Testing/CppUnit/StringDifferencing/IdenticalStrings1.h 2006-10-31 00:14:57 UTC (rev 3745) @@ -0,0 +1,36 @@ +/** + * @file IdenticalStrings1.h + * + * @brief Declaration for identical strings. + */ + +#ifndef _IDENTICAL_STRINGS1_H_ +#define _IDENTICAL_STRINGS1_H_ + +#include <cppunit/extensions/HelperMacros.h> + + +/** + * @brief Identical string testing with different options. + */ +class IdenticalStrings1 : public CPPUNIT_NS::TestFixture +{ + CPPUNIT_TEST_SUITE( IdenticalStrings1 ); + CPPUNIT_TEST( IdenticalWord1 ); + CPPUNIT_TEST( IdenticalWord2 ); + CPPUNIT_TEST( IdenticalWord3 ); + CPPUNIT_TEST( IdenticalWord4 ); + CPPUNIT_TEST_SUITE_END(); + +public: + void setUp(); + void tearDown(); + +protected: + void IdenticalWord1(); + void IdenticalWord2(); + void IdenticalWord3(); + void IdenticalWord4(); +}; + +#endif // IDENTICAL_STRINGS1 Modified: trunk/Testing/CppUnit/StringDifferencing/StringDifferencing.dsp =================================================================== --- trunk/Testing/CppUnit/StringDifferencing/StringDifferencing.dsp 2006-10-30 21:02:36 UTC (rev 3744) +++ trunk/Testing/CppUnit/StringDifferencing/StringDifferencing.dsp 2006-10-31 00:14:57 UTC (rev 3745) @@ -64,8 +64,8 @@ # PROP Intermediate_Dir "Debug" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" -# ADD BASE CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "_AFXDLL" /Yu"stdafx.h" /FD /GZ /c -# ADD CPP /nologo /MDd /W3 /Gm- /GR /GX /ZI /Od /I "..\..\..\Externals\cppunit\include" /I "..\..\..\Src" /I "..\..\..\Src\Common" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "_AFXDLL" /FD /GZ /c +# ADD BASE CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "_AFXDLL" /Yu"stdafx.h" /FD /GZ /c +# ADD CPP /nologo /MDd /W3 /GR /GX /ZI /Od /I "..\..\..\Externals\cppunit\include" /I "..\..\..\Src" /I "..\..\..\Src\Common" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "_AFXDLL" /FD /GZ /c # SUBTRACT CPP /YX /Yc /Yu # ADD BASE RSC /l 0x40b /d "_DEBUG" /d "_AFXDLL" # ADD RSC /l 0x40b /d "_DEBUG" /d "_AFXDLL" @@ -125,6 +125,22 @@ # PROP Default_Filter "" # Begin Source File +SOURCE=.\DifferentStrings1.cpp +# End Source File +# Begin Source File + +SOURCE=.\DifferentStrings1.h +# End Source File +# Begin Source File + +SOURCE=.\IdenticalStrings1.cpp +# End Source File +# Begin Source File + +SOURCE=.\IdenticalStrings1.h +# End Source File +# Begin Source File + SOURCE=.\TestCase1.cpp # End Source File # Begin Source File Modified: trunk/Testing/CppUnit/StringDifferencing/TestCase1.cpp =================================================================== --- trunk/Testing/CppUnit/StringDifferencing/TestCase1.cpp 2006-10-30 21:02:36 UTC (rev 3744) +++ trunk/Testing/CppUnit/StringDifferencing/TestCase1.cpp 2006-10-31 00:14:57 UTC (rev 3745) @@ -1,3 +1,8 @@ +/** + * @file TestCase1.h + * + * @brief Implementatino for first simple test case. + */ #include <cppunit/config/SourcePrefix.h> #include "stdafx.h" @@ -9,16 +14,23 @@ CPPUNIT_TEST_SUITE_REGISTRATION( TestCase1 ); +/** @brief Testcase initialization code. */ void TestCase1::setUp() { // Add possible initializations here } +/** @brief Testcase cleanup code. */ void TestCase1::tearDown() { // Add possible cleanups here } +/** + * @brief Test identical words are detected as such. + * This function tests that two identical words are detected + * as identical with different word-compare settings. + */ void TestCase1::Identical1() { wdiffarray diffs; @@ -26,93 +38,40 @@ CString string2(_T("Test")); int count = 0; - // Break type is whitespace or punctuation - - // Check strings with different settings + // Compare case, all whitespaces, whitespace break sd_ComputeWordDiffs(string1, string2, true, WHITESPACE_COMPARE_ALL, 0, false, &diffs); count = diffs.GetSize(); CPPUNIT_ASSERT(count == 0); + // Ignore case, all whitespaces, whitespace break sd_ComputeWordDiffs(string1, string2, false, WHITESPACE_COMPARE_ALL, 0, false, &diffs); count = diffs.GetSize(); CPPUNIT_ASSERT(count == 0); + // Compare case, whitespaces change, whitespace break sd_ComputeWordDiffs(string1, string2, true, WHITESPACE_IGNORE_CHANGE, 0, false, &diffs); count = diffs.GetSize(); CPPUNIT_ASSERT(count == 0); + // Compare case, whitespaces ignore, whitespace break sd_ComputeWordDiffs(string1, string2, true, WHITESPACE_IGNORE_ALL, 0, false, &diffs); count = diffs.GetSize(); CPPUNIT_ASSERT(count == 0); - - sd_ComputeWordDiffs(string1, string2, - true, WHITESPACE_COMPARE_ALL, 1, false, - &diffs); - count = diffs.GetSize(); - CPPUNIT_ASSERT(count == 0); - - sd_ComputeWordDiffs(string1, string2, - true, WHITESPACE_COMPARE_ALL, 0, true, - &diffs); - count = diffs.GetSize(); - CPPUNIT_ASSERT(count == 0); } -void TestCase1::Identical2() -{ - wdiffarray diffs; - CString string1(_T("Test words")); - CString string2(_T("Test words")); - int count = 0; - - // Break type is whitespace or punctuation - - // Check strings with different settings - sd_ComputeWordDiffs(string1, string2, - true, WHITESPACE_COMPARE_ALL, 0, false, - &diffs); - count = diffs.GetSize(); - CPPUNIT_ASSERT(count == 0); - - sd_ComputeWordDiffs(string1, string2, - false, WHITESPACE_COMPARE_ALL, 0, false, - &diffs); - count = diffs.GetSize(); - CPPUNIT_ASSERT(count == 0); - - sd_ComputeWordDiffs(string1, string2, - true, WHITESPACE_IGNORE_CHANGE, 0, false, - &diffs); - count = diffs.GetSize(); - CPPUNIT_ASSERT(count == 0); - - sd_ComputeWordDiffs(string1, string2, - true, WHITESPACE_IGNORE_ALL, 0, false, - &diffs); - count = diffs.GetSize(); - CPPUNIT_ASSERT(count == 0); - - sd_ComputeWordDiffs(string1, string2, - true, WHITESPACE_COMPARE_ALL, 1, false, - &diffs); - count = diffs.GetSize(); - CPPUNIT_ASSERT(count == 0); - - sd_ComputeWordDiffs(string1, string2, - true, WHITESPACE_COMPARE_ALL, 0, true, - &diffs); - count = diffs.GetSize(); - CPPUNIT_ASSERT(count == 0); -} - +/** + * @brief Test different words are detected as such. + * This function tests that two different words are detected + * as different with different word-compare settings. + */ void TestCase1::Difference1() { wdiffarray diffs; @@ -149,6 +108,11 @@ diffs.RemoveAll(); } +/** + * @brief Test different two-words are detected as such. + * This function tests that two different two-words are detected + * as different with different word-compare settings. + */ void TestCase1::Difference2() { wdiffarray diffs; Modified: trunk/Testing/CppUnit/StringDifferencing/TestCase1.h =================================================================== --- trunk/Testing/CppUnit/StringDifferencing/TestCase1.h 2006-10-30 21:02:36 UTC (rev 3744) +++ trunk/Testing/CppUnit/StringDifferencing/TestCase1.h 2006-10-31 00:14:57 UTC (rev 3745) @@ -1,3 +1,9 @@ +/** + * @file TestCase1.h + * + * @brief Declaration for first simple test case. + */ + #ifndef _TESTCASE1_H_ #define _TESTCASE1_H_ @@ -3,16 +9,18 @@ #include <cppunit/extensions/HelperMacros.h> + +/** + * @brief First simple testcase for StringDifferencing. + * This is simple test case meant more of an example for writing testcases. + * But of course this does some useful testing also. :) + */ class TestCase1 : public CPPUNIT_NS::TestFixture { CPPUNIT_TEST_SUITE( TestCase1 ); CPPUNIT_TEST( Identical1 ); - CPPUNIT_TEST( Identical2 ); CPPUNIT_TEST( Difference1 ); CPPUNIT_TEST( Difference2 ); CPPUNIT_TEST_SUITE_END(); -protected: - - public: void setUp(); @@ -21,11 +29,9 @@ protected: void Identical1(); - void Identical2(); void Difference1(); void Difference2(); }; - -#endif +#endif // _TESTCASE1_H_ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ki...@us...> - 2006-11-20 19:18:47
|
Revision: 3820 http://svn.sourceforge.net/winmerge/?rev=3820&view=rev Author: kimmov Date: 2006-11-20 11:18:36 -0800 (Mon, 20 Nov 2006) Log Message: ----------- Add unit tests for projectfiles Added Paths: ----------- trunk/Testing/CppUnit/ProjectFile/ trunk/Testing/CppUnit/ProjectFile/LeftAndRight.cpp trunk/Testing/CppUnit/ProjectFile/LeftAndRight.h trunk/Testing/CppUnit/ProjectFile/LeftAndRightNonRecursive.cpp trunk/Testing/CppUnit/ProjectFile/LeftAndRightNonRecursive.h trunk/Testing/CppUnit/ProjectFile/LeftAndRightRecursive.cpp trunk/Testing/CppUnit/ProjectFile/LeftAndRightRecursive.h trunk/Testing/CppUnit/ProjectFile/PathsAndFilter.cpp trunk/Testing/CppUnit/ProjectFile/PathsAndFilter.h trunk/Testing/CppUnit/ProjectFile/ProjectFile.dsp trunk/Testing/CppUnit/ProjectFile/ProjectFileTesting.cpp trunk/Testing/CppUnit/ProjectFile/ProjectFileTesting.h trunk/Testing/CppUnit/ProjectFile/ProjectFileTesting.rc trunk/Testing/CppUnit/ProjectFile/ReadMe.txt trunk/Testing/CppUnit/ProjectFile/Resource.h trunk/Testing/CppUnit/ProjectFile/SimpleLeft.cpp trunk/Testing/CppUnit/ProjectFile/SimpleLeft.h trunk/Testing/CppUnit/ProjectFile/SimpleRight.cpp trunk/Testing/CppUnit/ProjectFile/SimpleRight.h trunk/Testing/CppUnit/ProjectFile/StdAfx.cpp trunk/Testing/CppUnit/ProjectFile/StdAfx.h trunk/Testing/CppUnit/ProjectFile/TestData/ trunk/Testing/CppUnit/ProjectFile/TestData/LeftAndRight.WinMerge trunk/Testing/CppUnit/ProjectFile/TestData/LeftAndRightNonRecursive.WinMerge trunk/Testing/CppUnit/ProjectFile/TestData/LeftAndRightRecursive.WinMerge trunk/Testing/CppUnit/ProjectFile/TestData/PathsAndFilter.WinMerge trunk/Testing/CppUnit/ProjectFile/TestData/SimpleLeft.WinMerge trunk/Testing/CppUnit/ProjectFile/TestData/SimpleRight.WinMerge Added: trunk/Testing/CppUnit/ProjectFile/LeftAndRight.cpp =================================================================== --- trunk/Testing/CppUnit/ProjectFile/LeftAndRight.cpp (rev 0) +++ trunk/Testing/CppUnit/ProjectFile/LeftAndRight.cpp 2006-11-20 19:18:36 UTC (rev 3820) @@ -0,0 +1,114 @@ +/** + * @file LeftAndRight.cpp + * + * @brief Implementation for LeftAndRight testcase. + */ + +#include <cppunit/config/SourcePrefix.h> +#include "stdafx.h" + +#include "ProjectFile.h" +#include "LeftAndRight.h" + +/** @brief Projectfile to load. */ +static const TCHAR FileName[] = _T("TestData\\LeftAndRight.WinMerge"); +/** @brief Left path we should get from file. */ +static const TCHAR LeftPath[] = _T("C:\\Temp\\Left"); +/** @brief Right path we should get from file. */ +static const TCHAR RightPath[] = _T("C:\\Temp\\Right"); + +CPPUNIT_TEST_SUITE_REGISTRATION( LeftAndRight ); + +/** @brief Testcase initialization code. */ +void LeftAndRight::setUp() +{ + // Add possible initializations here + m_pProjectFile = new ProjectFile; +} + +/** @brief Testcase cleanup code. */ +void LeftAndRight::tearDown() +{ + // Add possible cleanups here + delete m_pProjectFile; +} + +/** + * @brief Load the projectfile. + */ +void LeftAndRight::Load() +{ + CString sError; + + BOOL success = m_pProjectFile->Read(FileName, &sError); + + // Must succeed + CPPUNIT_ASSERT(success == TRUE); + CPPUNIT_ASSERT(sError.IsEmpty()); +} + +/** + * @brief Read left path different ways. + */ +void LeftAndRight::GetLeftPath() +{ + // Has left path + BOOL bIsLeft = m_pProjectFile->HasLeft(); + CPPUNIT_ASSERT(bIsLeft == TRUE); + + // Get left path without read-only info + CString left = m_pProjectFile->GetLeft(); + CPPUNIT_ASSERT(left.Compare(LeftPath) == 0); + + // Get left path with read-only info + BOOL bReadOnly; + left = m_pProjectFile->GetLeft(&bReadOnly); + CPPUNIT_ASSERT(left.Compare(LeftPath) == 0); + CPPUNIT_ASSERT(bReadOnly == FALSE); +} + +/** + * @brief Read right path different ways. + */ +void LeftAndRight::GetRightPath() +{ + // Has right path + BOOL bIsRight = m_pProjectFile->HasRight(); + CPPUNIT_ASSERT(bIsRight == TRUE); + + // Get right path without read-only info + CString right = m_pProjectFile->GetRight(); + CPPUNIT_ASSERT(right.Compare(RightPath) == 0); + + // Get right path with read-only info + BOOL bReadOnly; + right = m_pProjectFile->GetRight(&bReadOnly); + CPPUNIT_ASSERT(right.Compare(RightPath) == 0); + CPPUNIT_ASSERT(bReadOnly == FALSE); +} + +/** + * @brief Make sure subfolder inclusion is not get. + */ +void LeftAndRight::GetSubfolders() +{ + // We don't have a subfolders + BOOL bHasSubfolders = m_pProjectFile->HasSubfolders(); + CPPUNIT_ASSERT(bHasSubfolders == FALSE); + + int subfolders = m_pProjectFile->GetSubfolders(); + CPPUNIT_ASSERT(subfolders == 0); +} + +/** + * @brief Make sure filter is not get. + */ +void LeftAndRight::GetFilter() +{ + // We don't have a filter + BOOL bHasFilter = m_pProjectFile->HasFilter(); + CPPUNIT_ASSERT(bHasFilter == FALSE); + + CString filter = m_pProjectFile->GetFilter(); + CPPUNIT_ASSERT(filter.IsEmpty()); +} Added: trunk/Testing/CppUnit/ProjectFile/LeftAndRight.h =================================================================== --- trunk/Testing/CppUnit/ProjectFile/LeftAndRight.h (rev 0) +++ trunk/Testing/CppUnit/ProjectFile/LeftAndRight.h 2006-11-20 19:18:36 UTC (rev 3820) @@ -0,0 +1,45 @@ +/** + * @file LeftAndRight.h + * + * @brief Declaration for LeftAndRight testcase. + */ + +#ifndef _LEFTANDRIGHT_H_ +#define _LEFTANDRIGHT_H_ + +#include <cppunit/extensions/HelperMacros.h> + + +/** + * @brief Test loading both (left, right) paths projectfile. + * This testcase loads projectfile that has both paths defined. + * We test loading the file, getting file paths correctly and making + * sure all other parameters are correctly non-defined when read. + */ +class LeftAndRight : public CPPUNIT_NS::TestFixture +{ + CPPUNIT_TEST_SUITE( LeftAndRight ); + CPPUNIT_TEST( Load ); + CPPUNIT_TEST( GetLeftPath ); + CPPUNIT_TEST( GetRightPath ); + CPPUNIT_TEST( GetSubfolders ); + CPPUNIT_TEST( GetFilter ); + CPPUNIT_TEST_SUITE_END(); + +public: + void setUp(); + void tearDown(); + +protected: + void Load(); + void GetLeftPath(); + void GetRightPath(); + void GetSubfolders(); + void GetFilter(); + +private: + ProjectFile * m_pProjectFile; + +}; + +#endif // _LEFTANDRIGHT_H_ Added: trunk/Testing/CppUnit/ProjectFile/LeftAndRightNonRecursive.cpp =================================================================== --- trunk/Testing/CppUnit/ProjectFile/LeftAndRightNonRecursive.cpp (rev 0) +++ trunk/Testing/CppUnit/ProjectFile/LeftAndRightNonRecursive.cpp 2006-11-20 19:18:36 UTC (rev 3820) @@ -0,0 +1,114 @@ +/** + * @file LeftAndRightNonRecursive.cpp + * + * @brief Implementation for LeftAndRightNonRecursive testcase. + */ + +#include <cppunit/config/SourcePrefix.h> +#include "stdafx.h" + +#include "ProjectFile.h" +#include "LeftAndRightNonRecursive.h" + +/** @brief Projectfile to load. */ +static const TCHAR FileName[] = _T("TestData\\LeftAndRightNonRecursive.WinMerge"); +/** @brief Left path we should get from file. */ +static const TCHAR LeftPath[] = _T("C:\\Temp\\Left"); +/** @brief Right path we should get from file. */ +static const TCHAR RightPath[] = _T("C:\\Temp\\Right"); + +CPPUNIT_TEST_SUITE_REGISTRATION( LeftAndRightNonRecursive ); + +/** @brief Testcase initialization code. */ +void LeftAndRightNonRecursive::setUp() +{ + // Add possible initializations here + m_pProjectFile = new ProjectFile; +} + +/** @brief Testcase cleanup code. */ +void LeftAndRightNonRecursive::tearDown() +{ + // Add possible cleanups here + delete m_pProjectFile; +} + +/** + * @brief Load the projectfile. + */ +void LeftAndRightNonRecursive::Load() +{ + CString sError; + + BOOL success = m_pProjectFile->Read(FileName, &sError); + + // Must succeed + CPPUNIT_ASSERT(success == TRUE); + CPPUNIT_ASSERT(sError.IsEmpty()); +} + +/** + * @brief Read left path different ways. + */ +void LeftAndRightNonRecursive::GetLeftPath() +{ + // Has left path + BOOL bIsLeft = m_pProjectFile->HasLeft(); + CPPUNIT_ASSERT(bIsLeft == TRUE); + + // Get left path without read-only info + CString left = m_pProjectFile->GetLeft(); + CPPUNIT_ASSERT(left.Compare(LeftPath) == 0); + + // Get left path with read-only info + BOOL bReadOnly; + left = m_pProjectFile->GetLeft(&bReadOnly); + CPPUNIT_ASSERT(left.Compare(LeftPath) == 0); + CPPUNIT_ASSERT(bReadOnly == FALSE); +} + +/** + * @brief Read right path different ways. + */ +void LeftAndRightNonRecursive::GetRightPath() +{ + // Has right path + BOOL bIsRight = m_pProjectFile->HasRight(); + CPPUNIT_ASSERT(bIsRight == TRUE); + + // Get right path without read-only info + CString right = m_pProjectFile->GetRight(); + CPPUNIT_ASSERT(right.Compare(RightPath) == 0); + + // Get right path with read-only info + BOOL bReadOnly; + right = m_pProjectFile->GetRight(&bReadOnly); + CPPUNIT_ASSERT(right.Compare(RightPath) == 0); + CPPUNIT_ASSERT(bReadOnly == FALSE); +} + +/** + * @brief Make sure subfolder inclusion is get and disabled. + */ +void LeftAndRightNonRecursive::GetSubfolders() +{ + // Now we have subfolders + BOOL bHasSubfolders = m_pProjectFile->HasSubfolders(); + CPPUNIT_ASSERT(bHasSubfolders == TRUE); + + int subfolders = m_pProjectFile->GetSubfolders(); + CPPUNIT_ASSERT(subfolders == 0); +} + +/** + * @brief Make sure filter is not get. + */ +void LeftAndRightNonRecursive::GetFilter() +{ + // We don't have a filter + BOOL bHasFilter = m_pProjectFile->HasFilter(); + CPPUNIT_ASSERT(bHasFilter == FALSE); + + CString filter = m_pProjectFile->GetFilter(); + CPPUNIT_ASSERT(filter.IsEmpty()); +} Added: trunk/Testing/CppUnit/ProjectFile/LeftAndRightNonRecursive.h =================================================================== --- trunk/Testing/CppUnit/ProjectFile/LeftAndRightNonRecursive.h (rev 0) +++ trunk/Testing/CppUnit/ProjectFile/LeftAndRightNonRecursive.h 2006-11-20 19:18:36 UTC (rev 3820) @@ -0,0 +1,46 @@ +/** + * @file LeftAndRightNonRecursive.h + * + * @brief Declaration for LeftAndRightNonRecursive testcase. + */ + +#ifndef _LEFTANDRIGHTNONRECURSIVE_H_ +#define _LEFTANDRIGHTNONRECURSIVE_H_ + +#include <cppunit/extensions/HelperMacros.h> + + +/** + * @brief Test loading both (left, right) paths projectfile. + * This testcase loads projectfile that has both paths defined. + * This projecfile has subfolders defined but disabled. + * We test loading the file, getting file paths correctly and making + * sure all other parameters are correctly non-defined when read. + */ +class LeftAndRightNonRecursive : public CPPUNIT_NS::TestFixture +{ + CPPUNIT_TEST_SUITE( LeftAndRightNonRecursive ); + CPPUNIT_TEST( Load ); + CPPUNIT_TEST( GetLeftPath ); + CPPUNIT_TEST( GetRightPath ); + CPPUNIT_TEST( GetSubfolders ); + CPPUNIT_TEST( GetFilter ); + CPPUNIT_TEST_SUITE_END(); + +public: + void setUp(); + void tearDown(); + +protected: + void Load(); + void GetLeftPath(); + void GetRightPath(); + void GetSubfolders(); + void GetFilter(); + +private: + ProjectFile * m_pProjectFile; + +}; + +#endif // _LEFTANDRIGHTNONRECURSIVE_H_ Added: trunk/Testing/CppUnit/ProjectFile/LeftAndRightRecursive.cpp =================================================================== --- trunk/Testing/CppUnit/ProjectFile/LeftAndRightRecursive.cpp (rev 0) +++ trunk/Testing/CppUnit/ProjectFile/LeftAndRightRecursive.cpp 2006-11-20 19:18:36 UTC (rev 3820) @@ -0,0 +1,114 @@ +/** + * @file LeftAndRightRecursive.cpp + * + * @brief Implementation for LeftAndRightRecursive testcase. + */ + +#include <cppunit/config/SourcePrefix.h> +#include "stdafx.h" + +#include "ProjectFile.h" +#include "LeftAndRightRecursive.h" + +/** @brief Projectfile to load. */ +static const TCHAR FileName[] = _T("TestData\\LeftAndRightRecursive.WinMerge"); +/** @brief Left path we should get from file. */ +static const TCHAR LeftPath[] = _T("C:\\Temp\\Left"); +/** @brief Right path we should get from file. */ +static const TCHAR RightPath[] = _T("C:\\Temp\\Right"); + +CPPUNIT_TEST_SUITE_REGISTRATION( LeftAndRightRecursive ); + +/** @brief Testcase initialization code. */ +void LeftAndRightRecursive::setUp() +{ + // Add possible initializations here + m_pProjectFile = new ProjectFile; +} + +/** @brief Testcase cleanup code. */ +void LeftAndRightRecursive::tearDown() +{ + // Add possible cleanups here + delete m_pProjectFile; +} + +/** + * @brief Load the projectfile. + */ +void LeftAndRightRecursive::Load() +{ + CString sError; + + BOOL success = m_pProjectFile->Read(FileName, &sError); + + // Must succeed + CPPUNIT_ASSERT(success == TRUE); + CPPUNIT_ASSERT(sError.IsEmpty()); +} + +/** + * @brief Read left path different ways. + */ +void LeftAndRightRecursive::GetLeftPath() +{ + // Has left path + BOOL bIsLeft = m_pProjectFile->HasLeft(); + CPPUNIT_ASSERT(bIsLeft == TRUE); + + // Get left path without read-only info + CString left = m_pProjectFile->GetLeft(); + CPPUNIT_ASSERT(left.Compare(LeftPath) == 0); + + // Get left path with read-only info + BOOL bReadOnly; + left = m_pProjectFile->GetLeft(&bReadOnly); + CPPUNIT_ASSERT(left.Compare(LeftPath) == 0); + CPPUNIT_ASSERT(bReadOnly == FALSE); +} + +/** + * @brief Read right path different ways. + */ +void LeftAndRightRecursive::GetRightPath() +{ + // Has right path + BOOL bIsRight = m_pProjectFile->HasRight(); + CPPUNIT_ASSERT(bIsRight == TRUE); + + // Get right path without read-only info + CString right = m_pProjectFile->GetRight(); + CPPUNIT_ASSERT(right.Compare(RightPath) == 0); + + // Get right path with read-only info + BOOL bReadOnly; + right = m_pProjectFile->GetRight(&bReadOnly); + CPPUNIT_ASSERT(right.Compare(RightPath) == 0); + CPPUNIT_ASSERT(bReadOnly == FALSE); +} + +/** + * @brief Make sure subfolder inclusion is get and enabled. + */ +void LeftAndRightRecursive::GetSubfolders() +{ + // Now we have subfolders + BOOL bHasSubfolders = m_pProjectFile->HasSubfolders(); + CPPUNIT_ASSERT(bHasSubfolders == TRUE); + + int subfolders = m_pProjectFile->GetSubfolders(); + CPPUNIT_ASSERT(subfolders == 1); +} + +/** + * @brief Make sure filter is not get. + */ +void LeftAndRightRecursive::GetFilter() +{ + // We don't have a filter + BOOL bHasFilter = m_pProjectFile->HasFilter(); + CPPUNIT_ASSERT(bHasFilter == FALSE); + + CString filter = m_pProjectFile->GetFilter(); + CPPUNIT_ASSERT(filter.IsEmpty()); +} Added: trunk/Testing/CppUnit/ProjectFile/LeftAndRightRecursive.h =================================================================== --- trunk/Testing/CppUnit/ProjectFile/LeftAndRightRecursive.h (rev 0) +++ trunk/Testing/CppUnit/ProjectFile/LeftAndRightRecursive.h 2006-11-20 19:18:36 UTC (rev 3820) @@ -0,0 +1,46 @@ +/** + * @file LeftAndRightRecursive.h + * + * @brief Declaration for LeftAndRightRecursive testcase. + */ + +#ifndef _LEFTANDRIGHTRECURSIVE_H_ +#define _LEFTANDRIGHTRECURSIVE_H_ + +#include <cppunit/extensions/HelperMacros.h> + + +/** + * @brief Test loading both (left, right) paths projectfile. + * This testcase loads projectfile that has both paths defined. + * This projecfile has subfolders defined and enabled, so it is recursive. + * We test loading the file, getting file paths correctly and making + * sure all other parameters are correctly non-defined when read. + */ +class LeftAndRightRecursive : public CPPUNIT_NS::TestFixture +{ + CPPUNIT_TEST_SUITE( LeftAndRightRecursive ); + CPPUNIT_TEST( Load ); + CPPUNIT_TEST( GetLeftPath ); + CPPUNIT_TEST( GetRightPath ); + CPPUNIT_TEST( GetSubfolders ); + CPPUNIT_TEST( GetFilter ); + CPPUNIT_TEST_SUITE_END(); + +public: + void setUp(); + void tearDown(); + +protected: + void Load(); + void GetLeftPath(); + void GetRightPath(); + void GetSubfolders(); + void GetFilter(); + +private: + ProjectFile * m_pProjectFile; + +}; + +#endif // _LEFTANDRIGHTRECURSIVE_H_ Added: trunk/Testing/CppUnit/ProjectFile/PathsAndFilter.cpp =================================================================== --- trunk/Testing/CppUnit/ProjectFile/PathsAndFilter.cpp (rev 0) +++ trunk/Testing/CppUnit/ProjectFile/PathsAndFilter.cpp 2006-11-20 19:18:36 UTC (rev 3820) @@ -0,0 +1,116 @@ +/** + * @file PathsAndFilter.cpp + * + * @brief Implementation for PathsAndFilter testcase. + */ + +#include <cppunit/config/SourcePrefix.h> +#include "stdafx.h" + +#include "ProjectFile.h" +#include "PathsAndFilter.h" + +/** @brief Projectfile to load. */ +static const TCHAR FileName[] = _T("TestData\\LeftAndRight.WinMerge"); +/** @brief Left path we should get from file. */ +static const TCHAR LeftPath[] = _T("C:\\Temp\\Left"); +/** @brief Right path we should get from file. */ +static const TCHAR RightPath[] = _T("C:\\Temp\\Right"); +/** @brief Filter we should get from file. */ +static const TCHAR Filter[] = _T("Filter Name"); + +CPPUNIT_TEST_SUITE_REGISTRATION( PathsAndFilter ); + +/** @brief Testcase initialization code. */ +void PathsAndFilter::setUp() +{ + // Add possible initializations here + m_pProjectFile = new ProjectFile; +} + +/** @brief Testcase cleanup code. */ +void PathsAndFilter::tearDown() +{ + // Add possible cleanups here + delete m_pProjectFile; +} + +/** + * @brief Load the projectfile. + */ +void PathsAndFilter::Load() +{ + CString sError; + + BOOL success = m_pProjectFile->Read(FileName, &sError); + + // Must succeed + CPPUNIT_ASSERT(success == TRUE); + CPPUNIT_ASSERT(sError.IsEmpty()); +} + +/** + * @brief Read left path different ways. + */ +void PathsAndFilter::GetLeftPath() +{ + // Has left path + BOOL bIsLeft = m_pProjectFile->HasLeft(); + CPPUNIT_ASSERT(bIsLeft == TRUE); + + // Get left path without read-only info + CString left = m_pProjectFile->GetLeft(); + CPPUNIT_ASSERT(left.Compare(LeftPath) == 0); + + // Get left path with read-only info + BOOL bReadOnly; + left = m_pProjectFile->GetLeft(&bReadOnly); + CPPUNIT_ASSERT(left.Compare(LeftPath) == 0); + CPPUNIT_ASSERT(bReadOnly == FALSE); +} + +/** + * @brief Read right path different ways. + */ +void PathsAndFilter::GetRightPath() +{ + // Has right path + BOOL bIsRight = m_pProjectFile->HasRight(); + CPPUNIT_ASSERT(bIsRight == TRUE); + + // Get right path without read-only info + CString right = m_pProjectFile->GetRight(); + CPPUNIT_ASSERT(right.Compare(RightPath) == 0); + + // Get right path with read-only info + BOOL bReadOnly; + right = m_pProjectFile->GetRight(&bReadOnly); + CPPUNIT_ASSERT(right.Compare(RightPath) == 0); + CPPUNIT_ASSERT(bReadOnly == FALSE); +} + +/** + * @brief Make sure subfolder inclusion is not get. + */ +void PathsAndFilter::GetSubfolders() +{ + // We don't have a subfolders + BOOL bHasSubfolders = m_pProjectFile->HasSubfolders(); + CPPUNIT_ASSERT(bHasSubfolders == FALSE); + + int subfolders = m_pProjectFile->GetSubfolders(); + CPPUNIT_ASSERT(subfolders == 0); +} + +/** + * @brief Read filter. + */ +void PathsAndFilter::GetFilter() +{ + // Now we have a filter + BOOL bHasFilter = m_pProjectFile->HasFilter(); + CPPUNIT_ASSERT(bHasFilter == TRUE); + + CString filter = m_pProjectFile->GetFilter(); + CPPUNIT_ASSERT(filter.Compare(Filter) == 0); +} Added: trunk/Testing/CppUnit/ProjectFile/PathsAndFilter.h =================================================================== --- trunk/Testing/CppUnit/ProjectFile/PathsAndFilter.h (rev 0) +++ trunk/Testing/CppUnit/ProjectFile/PathsAndFilter.h 2006-11-20 19:18:36 UTC (rev 3820) @@ -0,0 +1,44 @@ +/** + * @file PathsAndFilter.h + * + * @brief Declaration for PathsAndFilter testcase. + */ + +#ifndef _PATHSANDFILTER_H_ +#define _PATHSANDFILTER_H_ + +#include <cppunit/extensions/HelperMacros.h> + + +/** + * @brief Test loading both (left, right) paths and filter projectfile. + * This testcase loads projectfile that has both paths and filter defined. + * We test loading the file, getting both paths and filter correctly. + */ +class PathsAndFilter : public CPPUNIT_NS::TestFixture +{ + CPPUNIT_TEST_SUITE( PathsAndFilter ); + CPPUNIT_TEST( Load ); + CPPUNIT_TEST( GetLeftPath ); + CPPUNIT_TEST( GetRightPath ); + CPPUNIT_TEST( GetSubfolders ); + CPPUNIT_TEST( GetFilter ); + CPPUNIT_TEST_SUITE_END(); + +public: + void setUp(); + void tearDown(); + +protected: + void Load(); + void GetLeftPath(); + void GetRightPath(); + void GetSubfolders(); + void GetFilter(); + +private: + ProjectFile * m_pProjectFile; + +}; + +#endif // _PATHSANDFILTER_H_ Added: trunk/Testing/CppUnit/ProjectFile/ProjectFile.dsp =================================================================== --- trunk/Testing/CppUnit/ProjectFile/ProjectFile.dsp (rev 0) +++ trunk/Testing/CppUnit/ProjectFile/ProjectFile.dsp 2006-11-20 19:18:36 UTC (rev 3820) @@ -0,0 +1,191 @@ +# Microsoft Developer Studio Project File - Name="ProjectFile" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Console Application" 0x0103 + +CFG=PROJECTFILE - WIN32 DEBUG +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "ProjectFile.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "ProjectFile.mak" CFG="PROJECTFILE - WIN32 DEBUG" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "ProjectFile - Win32 Release" (based on "Win32 (x86) Console Application") +!MESSAGE "ProjectFile - Win32 Debug" (based on "Win32 (x86) Console Application") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +RSC=rc.exe + +!IF "$(CFG)" == "ProjectFile - Win32 Release" + +# PROP BASE Use_MFC 2 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 2 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MD /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D "_AFXDLL" /Yu"stdafx.h" /FD /c +# ADD CPP /nologo /MD /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D "_AFXDLL" /Yu"stdafx.h" /FD /c +# ADD BASE RSC /l 0x40b /d "NDEBUG" /d "_AFXDLL" +# ADD RSC /l 0x40b /d "NDEBUG" /d "_AFXDLL" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 + +!ELSEIF "$(CFG)" == "ProjectFile - Win32 Debug" + +# PROP BASE Use_MFC 2 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 2 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Debug" +# PROP Intermediate_Dir "Debug" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "_AFXDLL" /Yu"stdafx.h" /FD /GZ /c +# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "..\..\..\Externals\cppunit\include" /I "..\..\..\Externals\expat\lib" /I "..\..\..\Externals\scew" /I "..\..\..\Src" /I "..\..\..\Src\Common" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "_AFXDLL" /FD /GZ /c +# SUBTRACT CPP /YX /Yc /Yu +# ADD BASE RSC /l 0x40b /d "_DEBUG" /d "_AFXDLL" +# ADD RSC /l 0x40b /d "_DEBUG" /d "_AFXDLL" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib cppunitd.lib libexpat.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\..\..\Build\CppUnit" /libpath:"..\..\..\Build\expat" + +!ENDIF + +# Begin Target + +# Name "ProjectFile - Win32 Release" +# Name "ProjectFile - Win32 Debug" +# Begin Group "Source Files" + +# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" +# Begin Source File + +SOURCE=.\ProjectFileTesting.cpp +# End Source File +# Begin Source File + +SOURCE=.\ProjectFileTesting.rc +# End Source File +# Begin Source File + +SOURCE=.\StdAfx.cpp +# ADD CPP /Yc"stdafx.h" +# End Source File +# End Group +# Begin Group "Header Files" + +# PROP Default_Filter "h;hpp;hxx;hm;inl" +# Begin Source File + +SOURCE=.\ProjectFileTesting.h +# End Source File +# Begin Source File + +SOURCE=.\Resource.h +# End Source File +# Begin Source File + +SOURCE=.\StdAfx.h +# End Source File +# End Group +# Begin Group "Resource Files" + +# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" +# End Group +# Begin Group "Files to Test" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\..\Src\ProjectFile.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\Src\ProjectFile.h +# End Source File +# End Group +# Begin Group "Test Cases" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=.\LeftAndRight.cpp +# End Source File +# Begin Source File + +SOURCE=.\LeftAndRight.h +# End Source File +# Begin Source File + +SOURCE=.\LeftAndRightNonRecursive.cpp +# End Source File +# Begin Source File + +SOURCE=.\LeftAndRightNonRecursive.h +# End Source File +# Begin Source File + +SOURCE=.\LeftAndRightRecursive.cpp +# End Source File +# Begin Source File + +SOURCE=.\LeftAndRightRecursive.h +# End Source File +# Begin Source File + +SOURCE=.\PathsAndFilter.cpp +# End Source File +# Begin Source File + +SOURCE=.\PathsAndFilter.h +# End Source File +# Begin Source File + +SOURCE=.\SimpleLeft.cpp +# End Source File +# Begin Source File + +SOURCE=.\SimpleLeft.h +# End Source File +# Begin Source File + +SOURCE=.\SimpleRight.cpp +# End Source File +# Begin Source File + +SOURCE=.\SimpleRight.h +# End Source File +# End Group +# Begin Source File + +SOURCE=.\ReadMe.txt +# End Source File +# End Target +# End Project Added: trunk/Testing/CppUnit/ProjectFile/ProjectFileTesting.cpp =================================================================== --- trunk/Testing/CppUnit/ProjectFile/ProjectFileTesting.cpp (rev 0) +++ trunk/Testing/CppUnit/ProjectFile/ProjectFileTesting.cpp 2006-11-20 19:18:36 UTC (rev 3820) @@ -0,0 +1,69 @@ +// ProjectFile.cpp : Defines the entry point for the console application. +// + +#include "stdafx.h" +#include "ProjectFile.h" + +#include <cppunit/BriefTestProgressListener.h> +#include <cppunit/CompilerOutputter.h> +#include <cppunit/extensions/TestFactoryRegistry.h> +#include <cppunit/TestResult.h> +#include <cppunit/TestResultCollector.h> +#include <cppunit/TestRunner.h> +#include <cppunit/ui/text/TestRunner.h> + +#ifdef _DEBUG +#define new DEBUG_NEW +#undef THIS_FILE +static char THIS_FILE[] = __FILE__; +#endif + +///////////////////////////////////////////////////////////////////////////// +// The one and only application object + +CWinApp theApp; + +using namespace std; + +int _tmain(int argc, TCHAR* argv[], TCHAR* envp[]) +{ + int nRetCode = 0; + + // initialize MFC and print and error on failure + if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0)) + { + // TODO: change error code to suit your needs + cerr << _T("Fatal Error: MFC initialization failed") << endl; + nRetCode = 1; + } + else + { + /** + * This is the code running the tests. + * Tests are found automatically once they are created with + * CppUnit's macros, you don't need to run single tests here. + */ + CPPUNIT_NS::TestResult controller; + + // Add a listener that colllects test result + CPPUNIT_NS::TestResultCollector result; + controller.addListener( &result ); + + // Add a listener that print dots as test run. + CPPUNIT_NS::BriefTestProgressListener progress; + controller.addListener( &progress ); + + // Add the top suite to the test runner + CPPUNIT_NS::TestRunner runner; + runner.addTest( CPPUNIT_NS::TestFactoryRegistry::getRegistry().makeTest() ); + runner.run( controller ); + + // Print test in a compiler compatible format. + CPPUNIT_NS::CompilerOutputter outputter( &result, CPPUNIT_NS::stdCOut() ); + outputter.write(); + } + + return nRetCode; +} + + Added: trunk/Testing/CppUnit/ProjectFile/ProjectFileTesting.h =================================================================== --- trunk/Testing/CppUnit/ProjectFile/ProjectFileTesting.h (rev 0) +++ trunk/Testing/CppUnit/ProjectFile/ProjectFileTesting.h 2006-11-20 19:18:36 UTC (rev 3820) @@ -0,0 +1,12 @@ + +#if !defined(AFX_PROJECTFILE_H__3B63B900_B0C8_495F_BB3C_8BC166A3E0B2__INCLUDED_) +#define AFX_PROJECTFILE_H__3B63B900_B0C8_495F_BB3C_8BC166A3E0B2__INCLUDED_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 + +#include "resource.h" + + +#endif // !defined(AFX_PROJECTFILE_H__3B63B900_B0C8_495F_BB3C_8BC166A3E0B2__INCLUDED_) Added: trunk/Testing/CppUnit/ProjectFile/ProjectFileTesting.rc =================================================================== --- trunk/Testing/CppUnit/ProjectFile/ProjectFileTesting.rc (rev 0) +++ trunk/Testing/CppUnit/ProjectFile/ProjectFileTesting.rc 2006-11-20 19:18:36 UTC (rev 3820) @@ -0,0 +1,70 @@ +//Microsoft Visual C++ generated resource script. +// +#include "resource.h" + +#define APSTUDIO_READONLY_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 2 resource. +// +#include "afxres.h" + +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) +#ifdef _WIN32 +LANGUAGE 9, 1 +#pragma code_page(1252) +#endif //_WIN32 + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE DISCARDABLE +BEGIN + "resource.h\0" +END + +2 TEXTINCLUDE DISCARDABLE +BEGIN + "#include ""afxres.h""\r\n" + "\0" +END + +3 TEXTINCLUDE DISCARDABLE +BEGIN + "\r\n" + "\0" +END + +#endif // APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// +// String Table +// + +STRINGTABLE DISCARDABLE +BEGIN + IDS_HELLO "Hello from MFC!" +END + +#endif +///////////////////////////////////////////////////////////////////////////// + + + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 3 resource. +// + + +///////////////////////////////////////////////////////////////////////////// +#endif // not APSTUDIO_INVOKED Added: trunk/Testing/CppUnit/ProjectFile/ReadMe.txt =================================================================== --- trunk/Testing/CppUnit/ProjectFile/ReadMe.txt (rev 0) +++ trunk/Testing/CppUnit/ProjectFile/ReadMe.txt 2006-11-20 19:18:36 UTC (rev 3820) @@ -0,0 +1,42 @@ +======================================================================== + CONSOLE APPLICATION : ProjectFile +======================================================================== + + +AppWizard has created this ProjectFile application for you. + +This file contains a summary of what you will find in each of the files that +make up your ProjectFile application. + +ProjectFile.dsp + This file (the project file) contains information at the project level and + is used to build a single project or subproject. Other users can share the + project (.dsp) file, but they should export the makefiles locally. + +ProjectFile.cpp + This is the main application source file. + +ProjectFile.rc + This is a listing of all of the Microsoft Windows resources that the + program uses. It includes the icons, bitmaps, and cursors that are stored + in the RES subdirectory. This file can be directly edited in Microsoft + Visual C++. + +///////////////////////////////////////////////////////////////////////////// +Other standard files: + +StdAfx.h, StdAfx.cpp + These files are used to build a precompiled header (PCH) file + named ProjectFile.pch and a precompiled types file named StdAfx.obj. + +Resource.h + This is the standard header file, which defines new resource IDs. + Microsoft Visual C++ reads and updates this file. + +///////////////////////////////////////////////////////////////////////////// +Other notes: + +AppWizard uses "TODO:" to indicate parts of the source code you +should add to or customize. + +///////////////////////////////////////////////////////////////////////////// Added: trunk/Testing/CppUnit/ProjectFile/Resource.h =================================================================== --- trunk/Testing/CppUnit/ProjectFile/Resource.h (rev 0) +++ trunk/Testing/CppUnit/ProjectFile/Resource.h 2006-11-20 19:18:36 UTC (rev 3820) @@ -0,0 +1,16 @@ +//{{NO_DEPENDENCIES}} +// Microsoft Visual C++ generated include file. +// Used by ProjectFile.rc +// +#define IDS_HELLO 1 + +// Next default values for new objects +// +#ifdef APSTUDIO_INVOKED +#ifndef APSTUDIO_READONLY_SYMBOLS +#define _APS_NEXT_RESOURCE_VALUE 101 +#define _APS_NEXT_COMMAND_VALUE 40001 +#define _APS_NEXT_CONTROL_VALUE 1000 +#define _APS_NEXT_SYMED_VALUE 101 +#endif +#endif Added: trunk/Testing/CppUnit/ProjectFile/SimpleLeft.cpp =================================================================== --- trunk/Testing/CppUnit/ProjectFile/SimpleLeft.cpp (rev 0) +++ trunk/Testing/CppUnit/ProjectFile/SimpleLeft.cpp 2006-11-20 19:18:36 UTC (rev 3820) @@ -0,0 +1,112 @@ +/** + * @file SimpleLeft.cpp + * + * @brief Implementation for SimpleLeft testcase. + */ + +#include <cppunit/config/SourcePrefix.h> +#include "stdafx.h" + +#include "ProjectFile.h" +#include "SimpleLeft.h" + +/** @brief Projectfile to load. */ +static const TCHAR FileName[] = _T("TestData\\SimpleLeft.WinMerge"); +/** @brief Left path we should get from file. */ +static const TCHAR LeftPath[] = _T("C:\\Temp\\Left"); + +CPPUNIT_TEST_SUITE_REGISTRATION( SimpleLeft ); + +/** @brief Testcase initialization code. */ +void SimpleLeft::setUp() +{ + // Add possible initializations here + m_pProjectFile = new ProjectFile; +} + +/** @brief Testcase cleanup code. */ +void SimpleLeft::tearDown() +{ + // Add possible cleanups here + delete m_pProjectFile; +} + +/** + * @brief Load the projectfile. + */ +void SimpleLeft::Load() +{ + CString sError; + + BOOL success = m_pProjectFile->Read(FileName, &sError); + + // Must succeed + CPPUNIT_ASSERT(success == TRUE); + CPPUNIT_ASSERT(sError.IsEmpty()); +} + +/** + * @brief Read left path different ways. + */ +void SimpleLeft::GetLeftPath() +{ + // Has left path (only) + BOOL bIsLeft = m_pProjectFile->HasLeft(); + CPPUNIT_ASSERT(bIsLeft == TRUE); + + // Get left path without read-only info + CString left = m_pProjectFile->GetLeft(); + CPPUNIT_ASSERT(left.Compare(LeftPath) == 0); + + // Get left path with read-only info + BOOL bReadOnly; + left = m_pProjectFile->GetLeft(&bReadOnly); + CPPUNIT_ASSERT(left.Compare(LeftPath) == 0); + CPPUNIT_ASSERT(bReadOnly == FALSE); +} + +/** + * @brief Make sure right path is not get. + */ +void SimpleLeft::GetRightPath() +{ + // We don't have right path + BOOL bIsRight = m_pProjectFile->HasRight(); + CPPUNIT_ASSERT(bIsRight == FALSE); + + // Get right path without read-only info + CString right = m_pProjectFile->GetRight(); + CPPUNIT_ASSERT(right.IsEmpty()); + + // Get right path with read-only info + BOOL bReadOnly; + right = m_pProjectFile->GetRight(&bReadOnly); + CPPUNIT_ASSERT(right.IsEmpty()); + CPPUNIT_ASSERT(bReadOnly == FALSE); +} + +/** + * @brief Make sure filter is not get. + */ +void SimpleLeft::GetSubfolders() +{ + // We don't have a subfolders + BOOL bHasSubfolders = m_pProjectFile->HasSubfolders(); + CPPUNIT_ASSERT(bHasSubfolders == FALSE); + + int subfolders = m_pProjectFile->GetSubfolders(); + CPPUNIT_ASSERT(subfolders == 0); +} + +/** + * @brief Make sure subfolder inclusion is not get. + */ +void SimpleLeft::GetFilter() +{ + // We don't have a filter + BOOL bHasFilter = m_pProjectFile->HasFilter(); + CPPUNIT_ASSERT(bHasFilter == FALSE); + + CString filter = m_pProjectFile->GetFilter(); + CPPUNIT_ASSERT(filter.IsEmpty()); +} Added: trunk/Testing/CppUnit/ProjectFile/SimpleLeft.h =================================================================== --- trunk/Testing/CppUnit/ProjectFile/SimpleLeft.h (rev 0) +++ trunk/Testing/CppUnit/ProjectFile/SimpleLeft.h 2006-11-20 19:18:36 UTC (rev 3820) @@ -0,0 +1,45 @@ +/** + * @file SimpleLeft.h + * + * @brief Declaration for SimpleLeft testcase. + */ + +#ifndef _SIMPLELEFT_H_ +#define _SIMPLELEFT_H_ + +#include <cppunit/extensions/HelperMacros.h> + + +/** + * @brief Test loading left-path-only projectfile. + * This testcase loads projectfile that has only left path defined. + * We test loading the file, getting left file path correctly and making + * sure all other parameters are correctly non-defined when read. + */ +class SimpleLeft : public CPPUNIT_NS::TestFixture +{ + CPPUNIT_TEST_SUITE( SimpleLeft ); + CPPUNIT_TEST( Load ); + CPPUNIT_TEST( GetLeftPath ); + CPPUNIT_TEST( GetRightPath ); + CPPUNIT_TEST( GetSubfolders); + CPPUNIT_TEST( GetFilter ); + CPPUNIT_TEST_SUITE_END(); + +public: + void setUp(); + void tearDown(); + +protected: + void Load(); + void GetLeftPath(); + void GetRightPath(); + void GetSubfolders(); + void GetFilter(); + +private: + ProjectFile * m_pProjectFile; + +}; + +#endif // _SIMPLELEFT_H_ Added: trunk/Testing/CppUnit/ProjectFile/SimpleRight.cpp =================================================================== --- trunk/Testing/CppUnit/ProjectFile/SimpleRight.cpp (rev 0) +++ trunk/Testing/CppUnit/ProjectFile/SimpleRight.cpp 2006-11-20 19:18:36 UTC (rev 3820) @@ -0,0 +1,112 @@ +/** + * @file SimpleRight.cpp + * + * @brief Implementation for SimpleRight testcase. + */ + +#include <cppunit/config/SourcePrefix.h> +#include "stdafx.h" + +#include "ProjectFile.h" +#include "SimpleRight.h" + +/** @brief Projectfile to load. */ +static const TCHAR FileName[] = _T("TestData\\SimpleRight.WinMerge"); +/** @brief Right path we should get from file. */ +static const TCHAR RightPath[] = _T("C:\\Temp\\Right"); + +CPPUNIT_TEST_SUITE_REGISTRATION( SimpleRight ); + +/** @brief Testcase initialization code. */ +void SimpleRight::setUp() +{ + // Add possible initializations here + m_pProjectFile = new ProjectFile; +} + +/** @brief Testcase cleanup code. */ +void SimpleRight::tearDown() +{ + // Add possible cleanups here + delete m_pProjectFile; +} + +/** + * @brief Load the projectfile. + */ +void SimpleRight::Load() +{ + CString sError; + + BOOL success = m_pProjectFile->Read(FileName, &sError); + + // Must succeed + CPPUNIT_ASSERT(success == TRUE); + CPPUNIT_ASSERT(sError.IsEmpty()); +} + +/** + * @brief Read right path different ways. + */ +void SimpleRight::GetRightPath() +{ + // Has right path (only) + BOOL bIsRight = m_pProjectFile->HasRight(); + CPPUNIT_ASSERT(bIsRight == TRUE); + + // Get right path without read-only info + CString right = m_pProjectFile->GetRight(); + CPPUNIT_ASSERT(right.Compare(RightPath) == 0); + + // Get right path with read-only info + BOOL bReadOnly; + right = m_pProjectFile->GetRight(&bReadOnly); + CPPUNIT_ASSERT(right.Compare(RightPath) == 0); + CPPUNIT_ASSERT(bReadOnly == FALSE); +} + +/** + * @brief Make sure left path is not get. + */ +void SimpleRight::GetLeftPath() +{ + // We don't have left path + BOOL bIsLeft = m_pProjectFile->HasLeft(); + CPPUNIT_ASSERT(bIsLeft == FALSE); + + // Get left path without read-only info + CString left = m_pProjectFile->GetLeft(); + CPPUNIT_ASSERT(left.IsEmpty()); + + // Get left path with read-only info + BOOL bReadOnly; + left = m_pProjectFile->GetLeft(&bReadOnly); + CPPUNIT_ASSERT(left.IsEmpty()); + CPPUNIT_ASSERT(bReadOnly == FALSE); +} + +/** + * @brief Make sure subfolder inclusion is not get. + */ +void SimpleRight::GetSubfolders() +{ + // We don't have a subfolders + BOOL bHasSubfolders = m_pProjectFile->HasSubfolders(); + CPPUNIT_ASSERT(bHasSubfolders == FALSE); + + int subfolders = m_pProjectFile->GetSubfolders(); + CPPUNIT_ASSERT(subfolders == 0); +} + +/** + * @brief Make sure filter is not get. + */ +void SimpleRight::GetFilter() +{ + // We don't have a filter + BOOL bHasFilter = m_pProjectFile->HasFilter(); + CPPUNIT_ASSERT(bHasFilter == FALSE); + + CString filter = m_pProjectFile->GetFilter(); + CPPUNIT_ASSERT(filter.IsEmpty()); +} Added: trunk/Testing/CppUnit/ProjectFile/SimpleRight.h =================================================================== --- trunk/Testing/CppUnit/ProjectFile/SimpleRight.h (rev 0) +++ trunk/Testing/CppUnit/ProjectFile/SimpleRight.h 2006-11-20 19:18:36 UTC (rev 3820) @@ -0,0 +1,45 @@ +/** + * @file SimpleRight.h + * + * @brief Declaration for SimpleRight testcase. + */ + +#ifndef _SIMPLERIGHT_H_ +#define _SIMPLERIGHT_H_ + +#include <cppunit/extensions/HelperMacros.h> + + +/** + * @brief Test loading right-path-only projectfile. + * This testcase loads projectfile that has only right path defined. + * We test loading the file, getting left file path correctly and making + * sure all other parameters are correctly non-defined when read. + */ +class SimpleRight : public CPPUNIT_NS::TestFixture +{ + CPPUNIT_TEST_SUITE( SimpleRight ); + CPPUNIT_TEST( Load ); + CPPUNIT_TEST( GetRightPath ); + CPPUNIT_TEST( GetLeftPath ); + CPPUNIT_TEST( GetSubfolders ); + CPPUNIT_TEST( GetFilter ); + CPPUNIT_TEST_SUITE_END(); + +public: + void setUp(); + void tearDown(); + +protected: + void Load(); + void GetRightPath(); + void GetLeftPath(); + void GetSubfolders(); + void GetFilter(); + +private: + ProjectFile * m_pProjectFile; + +}; + +#endif // _SIMPLERIGHT_H_ Added: trunk/Testing/CppUnit/ProjectFile/StdAfx.cpp =================================================================== --- trunk/Testing/CppUnit/ProjectFile/StdAfx.cpp (rev 0) +++ trunk/Testing/CppUnit/ProjectFile/StdAfx.cpp 2006-11-20 19:18:36 UTC (rev 3820) @@ -0,0 +1,20 @@ +// stdafx.cpp : source file that includes just the standard includes +// ProjectFile.pch will be the pre-compiled header +// stdafx.obj will contain the pre-compiled type information + +#include "stdafx.h" + +// TODO: reference any additional headers you need in STDAFX.H +// and not in this file + +/** + * @brief Load string resource and return as CString. + * @param [in] id Resource string ID. + * @return Resource string as CString. + */ +CString LoadResString(int id) +{ + CString s; + VERIFY(s.LoadString(id)); + return s; +} Added: trunk/Testing/CppUnit/ProjectFile/StdAfx.h =================================================================== --- trunk/Testing/CppUnit/ProjectFile/StdAfx.h (rev 0) +++ trunk/Testing/CppUnit/ProjectFile/StdAfx.h 2006-11-20 19:18:36 UTC (rev 3820) @@ -0,0 +1,34 @@ +// stdafx.h : include file for standard system include files, +// or project specific include files that are used frequently, but +// are changed infrequently +// + +#if !defined(AFX_STDAFX_H__BACD762B_6D72_4A1F_A1D2_353E2439F66E__INCLUDED_) +#define AFX_STDAFX_H__BACD762B_6D72_4A1F_A1D2_353E2439F66E__INCLUDED_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 + +#define VC_EXTRALEAN // Exclude rarely-used stuff from Windows headers + +#include <afx.h> +#include <afxwin.h> // MFC core and standard components +#include <afxext.h> // MFC extensions +#include <afxdtctl.h> // MFC support for Internet Explorer 4 Common Controls +#ifndef _AFX_NO_AFXCMN_SUPPORT +#include <afxcmn.h> // MFC support for Windows Common Controls +#endif // _AFX_NO_AFXCMN_SUPPORT + +#include <iostream> + +// TODO: reference additional headers your program requires here + + /** @brief Load string from string resources; shortcut for CString::LoadString */ +CString LoadResString(int id); + + +//{{AFX_INSERT_LOCATION}} +// Microsoft Visual C++ will insert additional declarations immediately before the previous line. + +#endif // !defined(AFX_STDAFX_H__BACD762B_6D72_4A1F_A1D2_353E2439F66E__INCLUDED_) Added: trunk/Testing/CppUnit/ProjectFile/TestData/LeftAndRight.WinMerge =================================================================== --- trunk/Testing/CppUnit/ProjectFile/TestData/LeftAndRight.WinMerge (rev 0) +++ trunk/Testing/CppUnit/ProjectFile/TestData/LeftAndRight.WinMerge 2006-11-20 19:18:36 UTC (rev 3820) @@ -0,0 +1,7 @@ +<?xml version='1.0' encoding='UTF-8'?> +<project> + <paths> + <left>C:\Temp\Left</left> + <right>C:\Temp\Right</right> + </paths> +</project> Added: trunk/Testing/CppUnit/ProjectFile/TestData/LeftAndRightNonRecursive.WinMerge =================================================================== --- trunk/Testing/CppUnit/ProjectFile/TestData/LeftAndRightNonRecursive.WinMerge (rev 0) +++ trunk/Testing/CppUnit/ProjectFile/TestData/LeftAndRightNonRecursive.WinMerge 2006-11-20 19:18:36 UTC (rev 3820) @@ -0,0 +1,8 @@ +<?xml version='1.0' encoding='UTF-8'?> +<project> + <paths> + <left>C:\Temp\Left</left> + <right>C:\Temp\Right</right> + <subfolders>1</subfolders> + </paths> +</project> Added: trunk/Testing/CppUnit/ProjectFile/TestData/LeftAndRightRecursive.WinMerge =================================================================== --- trunk/Testing/CppUnit/ProjectFile/TestData/LeftAndRightRecursive.WinMerge (rev 0) +++ trunk/Testing/CppUnit/ProjectFile/TestData/LeftAndRightRecursive.WinMerge 2006-11-20 19:18:36 UTC (rev 3820) @@ -0,0 +1,8 @@ +<?xml version='1.0' encoding='UTF-8'?> +<project> + <paths> + <left>C:\Temp\Left</left> + <right>C:\Temp\Right</right> + <subfolders>0</subfolders> + </paths> +</project> Added: trunk/Testing/CppUnit/ProjectFile/TestData/PathsAndFilter.WinMerge =================================================================== --- trunk/Testing/CppUnit/ProjectFile/TestData/PathsAndFilter.WinMerge (rev 0) +++ trunk/Testing/CppUnit/ProjectFile/TestData/PathsAndFilter.WinMerge 2006-11-20 19:18:36 UTC (rev 3820) @@ -0,0 +1,8 @@ +<?xml version='1.0' encoding='UTF-8'?> +<project> + <paths> + <left>C:\Temp\Left</left> + <right>C:\Temp\Right</right> + <filter>Filter Name</filter> + </paths> +</project> Added: trunk/Testing/CppUnit/ProjectFile/TestData/SimpleLeft.WinMerge =================================================================== --- trunk/Testing/CppUnit/ProjectFile/TestData/SimpleLeft.WinMerge (rev 0) +++ trunk/Testing/CppUnit/ProjectFile/TestData/SimpleLeft.WinMerge 2006-11-20 19:18:36 UTC (rev 3820) @@ -0,0 +1,6 @@ +<?xml version='1.0' encoding='UTF-8'?> +<project> + <paths> + <left>C:\Temp\Left</left> + </paths> +</project> Added: trunk/Testing/CppUnit/ProjectFile/TestData/SimpleRight.WinMerge =================================================================== --- trunk/Testing/CppUnit/ProjectFile/TestData/SimpleRight.WinMerge (rev 0) +++ trunk/Testing/CppUnit/ProjectFile/TestData/SimpleRight.WinMerge 2006-11-20 19:18:36 UTC (rev 3820) @@ -0,0 +1,6 @@ +<?xml version='1.0' encoding='UTF-8'?> +<project> + <paths> + <right>C:\Temp\Right</right> + </paths> +</project> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ki...@us...> - 2006-11-20 21:51:55
|
Revision: 3822 http://svn.sourceforge.net/winmerge/?rev=3822&view=rev Author: kimmov Date: 2006-11-20 13:51:53 -0800 (Mon, 20 Nov 2006) Log Message: ----------- Few fixes to the tests (need to create the project file for every test) Modified Paths: -------------- trunk/Testing/CppUnit/Changes.txt trunk/Testing/CppUnit/ProjectFile/LeftAndRight.cpp trunk/Testing/CppUnit/ProjectFile/LeftAndRightNonRecursive.cpp trunk/Testing/CppUnit/ProjectFile/LeftAndRightRecursive.cpp trunk/Testing/CppUnit/ProjectFile/PathsAndFilter.cpp trunk/Testing/CppUnit/ProjectFile/ProjectFile.dsp trunk/Testing/CppUnit/ProjectFile/ProjectFileTesting.cpp trunk/Testing/CppUnit/ProjectFile/SimpleLeft.cpp trunk/Testing/CppUnit/ProjectFile/SimpleRight.cpp trunk/Testing/CppUnit/ProjectFile/StdAfx.h trunk/Testing/CppUnit/ProjectFile/TestData/LeftAndRightNonRecursive.WinMerge trunk/Testing/CppUnit/ProjectFile/TestData/LeftAndRightRecursive.WinMerge Modified: trunk/Testing/CppUnit/Changes.txt =================================================================== --- trunk/Testing/CppUnit/Changes.txt 2006-11-20 19:20:34 UTC (rev 3821) +++ trunk/Testing/CppUnit/Changes.txt 2006-11-20 21:51:53 UTC (rev 3822) @@ -3,6 +3,12 @@ 2006-11-20 Kimmo Add unit tests for projectfiles Add folder: CppUnit/ProjectFile and its contents + Few fixes to the tests (need to create the project file for every test) + CppUnit/ProjectFile: LeftAndRight.cpp LeftAndRightNonRecursive.cpp LeftAndRightRecursive.cpp + PathsAndFilter.cpp ProjectFile.dsp ProjectFileTesting.cpp SimpleLeft.cpp SimpleRight.cpp + StdAfx.h + CppUnit/ProjectFile/TestData: LeftAndRightNonRecursive.WinMerge + LeftAndRightRecursive.WinMerge 2006-10-31 Kimmo Cleanup example test, add more simple string compare tests Modified: trunk/Testing/CppUnit/ProjectFile/LeftAndRight.cpp =================================================================== --- trunk/Testing/CppUnit/ProjectFile/LeftAndRight.cpp 2006-11-20 19:20:34 UTC (rev 3821) +++ trunk/Testing/CppUnit/ProjectFile/LeftAndRight.cpp 2006-11-20 21:51:53 UTC (rev 3822) @@ -24,6 +24,9 @@ { // Add possible initializations here m_pProjectFile = new ProjectFile; + + CString sError; + BOOL success = m_pProjectFile->Read(FileName, &sError); } /** @brief Testcase cleanup code. */ @@ -40,6 +43,13 @@ { CString sError; + // setUp already created the project file for us, but this + // test is for testing creation and loading.. + if (m_pProjectFile) + delete m_pProjectFile; + m_pProjectFile = new ProjectFile; + CPPUNIT_ASSERT(m_pProjectFile); + BOOL success = m_pProjectFile->Read(FileName, &sError); // Must succeed @@ -96,8 +106,9 @@ BOOL bHasSubfolders = m_pProjectFile->HasSubfolders(); CPPUNIT_ASSERT(bHasSubfolders == FALSE); + // Returns -1 if not set int subfolders = m_pProjectFile->GetSubfolders(); - CPPUNIT_ASSERT(subfolders == 0); + CPPUNIT_ASSERT(subfolders == -1); } /** Modified: trunk/Testing/CppUnit/ProjectFile/LeftAndRightNonRecursive.cpp =================================================================== --- trunk/Testing/CppUnit/ProjectFile/LeftAndRightNonRecursive.cpp 2006-11-20 19:20:34 UTC (rev 3821) +++ trunk/Testing/CppUnit/ProjectFile/LeftAndRightNonRecursive.cpp 2006-11-20 21:51:53 UTC (rev 3822) @@ -24,6 +24,9 @@ { // Add possible initializations here m_pProjectFile = new ProjectFile; + + CString sError; + BOOL success = m_pProjectFile->Read(FileName, &sError); } /** @brief Testcase cleanup code. */ @@ -40,6 +43,13 @@ { CString sError; + // setUp already created the project file for us, but this + // test is for testing creation and loading.. + if (m_pProjectFile) + delete m_pProjectFile; + m_pProjectFile = new ProjectFile; + CPPUNIT_ASSERT(m_pProjectFile); + BOOL success = m_pProjectFile->Read(FileName, &sError); // Must succeed @@ -96,6 +106,7 @@ BOOL bHasSubfolders = m_pProjectFile->HasSubfolders(); CPPUNIT_ASSERT(bHasSubfolders == TRUE); + // But the setting says we don't want recursive compare int subfolders = m_pProjectFile->GetSubfolders(); CPPUNIT_ASSERT(subfolders == 0); } Modified: trunk/Testing/CppUnit/ProjectFile/LeftAndRightRecursive.cpp =================================================================== --- trunk/Testing/CppUnit/ProjectFile/LeftAndRightRecursive.cpp 2006-11-20 19:20:34 UTC (rev 3821) +++ trunk/Testing/CppUnit/ProjectFile/LeftAndRightRecursive.cpp 2006-11-20 21:51:53 UTC (rev 3822) @@ -24,6 +24,9 @@ { // Add possible initializations here m_pProjectFile = new ProjectFile; + + CString sError; + BOOL success = m_pProjectFile->Read(FileName, &sError); } /** @brief Testcase cleanup code. */ @@ -40,6 +43,13 @@ { CString sError; + // setUp already created the project file for us, but this + // test is for testing creation and loading.. + if (m_pProjectFile) + delete m_pProjectFile; + m_pProjectFile = new ProjectFile; + CPPUNIT_ASSERT(m_pProjectFile); + BOOL success = m_pProjectFile->Read(FileName, &sError); // Must succeed Modified: trunk/Testing/CppUnit/ProjectFile/PathsAndFilter.cpp =================================================================== --- trunk/Testing/CppUnit/ProjectFile/PathsAndFilter.cpp 2006-11-20 19:20:34 UTC (rev 3821) +++ trunk/Testing/CppUnit/ProjectFile/PathsAndFilter.cpp 2006-11-20 21:51:53 UTC (rev 3822) @@ -11,7 +11,7 @@ #include "PathsAndFilter.h" /** @brief Projectfile to load. */ -static const TCHAR FileName[] = _T("TestData\\LeftAndRight.WinMerge"); +static const TCHAR FileName[] = _T("TestData\\PathsAndFilter.WinMerge"); /** @brief Left path we should get from file. */ static const TCHAR LeftPath[] = _T("C:\\Temp\\Left"); /** @brief Right path we should get from file. */ @@ -26,6 +26,9 @@ { // Add possible initializations here m_pProjectFile = new ProjectFile; + + CString sError; + BOOL success = m_pProjectFile->Read(FileName, &sError); } /** @brief Testcase cleanup code. */ @@ -42,6 +45,13 @@ { CString sError; + // setUp already created the project file for us, but this + // test is for testing creation and loading.. + if (m_pProjectFile) + delete m_pProjectFile; + m_pProjectFile = new ProjectFile; + CPPUNIT_ASSERT(m_pProjectFile); + BOOL success = m_pProjectFile->Read(FileName, &sError); // Must succeed @@ -98,8 +108,9 @@ BOOL bHasSubfolders = m_pProjectFile->HasSubfolders(); CPPUNIT_ASSERT(bHasSubfolders == FALSE); + // Returns -1 if not set int subfolders = m_pProjectFile->GetSubfolders(); - CPPUNIT_ASSERT(subfolders == 0); + CPPUNIT_ASSERT(subfolders == -1); } /** Modified: trunk/Testing/CppUnit/ProjectFile/ProjectFile.dsp =================================================================== --- trunk/Testing/CppUnit/ProjectFile/ProjectFile.dsp 2006-11-20 19:20:34 UTC (rev 3821) +++ trunk/Testing/CppUnit/ProjectFile/ProjectFile.dsp 2006-11-20 21:51:53 UTC (rev 3822) @@ -65,7 +65,7 @@ # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "_AFXDLL" /Yu"stdafx.h" /FD /GZ /c -# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "..\..\..\Externals\cppunit\include" /I "..\..\..\Externals\expat\lib" /I "..\..\..\Externals\scew" /I "..\..\..\Src" /I "..\..\..\Src\Common" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "_AFXDLL" /FD /GZ /c +# ADD CPP /nologo /MDd /W3 /Gm- /GR /GX /ZI /Od /I "..\..\..\Externals\cppunit\include" /I "..\..\..\Externals\expat\lib" /I "..\..\..\Externals\scew" /I "..\..\..\Src" /I "..\..\..\Src\Common" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "_AFXDLL" /FR /FD /GZ /c # SUBTRACT CPP /YX /Yc /Yu # ADD BASE RSC /l 0x40b /d "_DEBUG" /d "_AFXDLL" # ADD RSC /l 0x40b /d "_DEBUG" /d "_AFXDLL" Modified: trunk/Testing/CppUnit/ProjectFile/ProjectFileTesting.cpp =================================================================== --- trunk/Testing/CppUnit/ProjectFile/ProjectFileTesting.cpp 2006-11-20 19:20:34 UTC (rev 3821) +++ trunk/Testing/CppUnit/ProjectFile/ProjectFileTesting.cpp 2006-11-20 21:51:53 UTC (rev 3822) @@ -63,6 +63,9 @@ outputter.write(); } + // Wait for user... + getc(stdin); + return nRetCode; } Modified: trunk/Testing/CppUnit/ProjectFile/SimpleLeft.cpp =================================================================== --- trunk/Testing/CppUnit/ProjectFile/SimpleLeft.cpp 2006-11-20 19:20:34 UTC (rev 3821) +++ trunk/Testing/CppUnit/ProjectFile/SimpleLeft.cpp 2006-11-20 21:51:53 UTC (rev 3822) @@ -22,6 +22,9 @@ { // Add possible initializations here m_pProjectFile = new ProjectFile; + + CString sError; + BOOL success = m_pProjectFile->Read(FileName, &sError); } /** @brief Testcase cleanup code. */ @@ -38,6 +41,13 @@ { CString sError; + // setUp already created the project file for us, but this + // test is for testing creation and loading.. + if (m_pProjectFile) + delete m_pProjectFile; + m_pProjectFile = new ProjectFile; + CPPUNIT_ASSERT(m_pProjectFile); + BOOL success = m_pProjectFile->Read(FileName, &sError); // Must succeed @@ -94,8 +104,9 @@ BOOL bHasSubfolders = m_pProjectFile->HasSubfolders(); CPPUNIT_ASSERT(bHasSubfolders == FALSE); + // Returns -1 if not set int subfolders = m_pProjectFile->GetSubfolders(); - CPPUNIT_ASSERT(subfolders == 0); + CPPUNIT_ASSERT(subfolders == -1); } /** Modified: trunk/Testing/CppUnit/ProjectFile/SimpleRight.cpp =================================================================== --- trunk/Testing/CppUnit/ProjectFile/SimpleRight.cpp 2006-11-20 19:20:34 UTC (rev 3821) +++ trunk/Testing/CppUnit/ProjectFile/SimpleRight.cpp 2006-11-20 21:51:53 UTC (rev 3822) @@ -22,6 +22,9 @@ { // Add possible initializations here m_pProjectFile = new ProjectFile; + + CString sError; + BOOL success = m_pProjectFile->Read(FileName, &sError); } /** @brief Testcase cleanup code. */ @@ -38,6 +41,13 @@ { CString sError; + // setUp already created the project file for us, but this + // test is for testing creation and loading.. + if (m_pProjectFile) + delete m_pProjectFile; + m_pProjectFile = new ProjectFile; + CPPUNIT_ASSERT(m_pProjectFile); + BOOL success = m_pProjectFile->Read(FileName, &sError); // Must succeed @@ -94,8 +104,9 @@ BOOL bHasSubfolders = m_pProjectFile->HasSubfolders(); CPPUNIT_ASSERT(bHasSubfolders == FALSE); + // Returns -1 if not set int subfolders = m_pProjectFile->GetSubfolders(); - CPPUNIT_ASSERT(subfolders == 0); + CPPUNIT_ASSERT(subfolders == -1); } /** Modified: trunk/Testing/CppUnit/ProjectFile/StdAfx.h =================================================================== --- trunk/Testing/CppUnit/ProjectFile/StdAfx.h 2006-11-20 19:20:34 UTC (rev 3821) +++ trunk/Testing/CppUnit/ProjectFile/StdAfx.h 2006-11-20 21:51:53 UTC (rev 3822) @@ -11,6 +11,7 @@ #endif // _MSC_VER > 1000 #define VC_EXTRALEAN // Exclude rarely-used stuff from Windows headers +#define WINVER 0x0400 #include <afx.h> #include <afxwin.h> // MFC core and standard components Modified: trunk/Testing/CppUnit/ProjectFile/TestData/LeftAndRightNonRecursive.WinMerge =================================================================== --- trunk/Testing/CppUnit/ProjectFile/TestData/LeftAndRightNonRecursive.WinMerge 2006-11-20 19:20:34 UTC (rev 3821) +++ trunk/Testing/CppUnit/ProjectFile/TestData/LeftAndRightNonRecursive.WinMerge 2006-11-20 21:51:53 UTC (rev 3822) @@ -3,6 +3,6 @@ <paths> <left>C:\Temp\Left</left> <right>C:\Temp\Right</right> - <subfolders>1</subfolders> + <subfolders>0</subfolders> </paths> </project> Modified: trunk/Testing/CppUnit/ProjectFile/TestData/LeftAndRightRecursive.WinMerge =================================================================== --- trunk/Testing/CppUnit/ProjectFile/TestData/LeftAndRightRecursive.WinMerge 2006-11-20 19:20:34 UTC (rev 3821) +++ trunk/Testing/CppUnit/ProjectFile/TestData/LeftAndRightRecursive.WinMerge 2006-11-20 21:51:53 UTC (rev 3822) @@ -3,6 +3,6 @@ <paths> <left>C:\Temp\Left</left> <right>C:\Temp\Right</right> - <subfolders>0</subfolders> + <subfolders>1</subfolders> </paths> </project> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ki...@us...> - 2006-11-22 17:33:28
|
Revision: 3837 http://svn.sourceforge.net/winmerge/?rev=3837&view=rev Author: kimmov Date: 2006-11-22 09:33:25 -0800 (Wed, 22 Nov 2006) Log Message: ----------- Add more case difference tests to stringdiffs Modified Paths: -------------- trunk/Testing/CppUnit/Changes.txt trunk/Testing/CppUnit/StringDifferencing/StringDifferencing.dsp Added Paths: ----------- trunk/Testing/CppUnit/StringDifferencing/CasesDifferByte.cpp trunk/Testing/CppUnit/StringDifferencing/CasesDifferByte.h Modified: trunk/Testing/CppUnit/Changes.txt =================================================================== --- trunk/Testing/CppUnit/Changes.txt 2006-11-22 16:42:46 UTC (rev 3836) +++ trunk/Testing/CppUnit/Changes.txt 2006-11-22 17:33:25 UTC (rev 3837) @@ -1,5 +1,10 @@ Testing\selftest\Changes.txt +2006-11-22 Kimmo + Add more case difference tests to stringdiffs + StringDifferencing: StringDifferencing.dsp + StringDifferencing new files: CasesDiffByte.cpp CasesDiffByte.h + 2006-11-21 Kimmo Fix string differencing cases, add few new cases StringDifferencing: DifferentStrings1.cpp DifferentStrings1.h StringDifferencing.cpp Added: trunk/Testing/CppUnit/StringDifferencing/CasesDifferByte.cpp =================================================================== --- trunk/Testing/CppUnit/StringDifferencing/CasesDifferByte.cpp (rev 0) +++ trunk/Testing/CppUnit/StringDifferencing/CasesDifferByte.cpp 2006-11-22 17:33:25 UTC (rev 3837) @@ -0,0 +1,568 @@ +/** + * @file CasesDifferByte.cpp + * + * @brief Implementation for Case difference tests.. + */ + +#include <cppunit/config/SourcePrefix.h> +#include "stdafx.h" + +#include "CompareOptions.h" +#include "stringdiffs.h" + +#include "CasesDifferByte.h" + +CPPUNIT_TEST_SUITE_REGISTRATION( CasesDifferByte ); + +/** @brief Testcase initialization code. */ +void CasesDifferByte::setUp() +{ + // Add possible initializations here +} + +/** @brief Testcase cleanup code. */ +void CasesDifferByte::tearDown() +{ + // Add possible cleanups here +} + +/** + * @brief Test we handle simple case difference correctly. + * This function tests we handle one-char case difference correctly + * with different compare options. In this test the difference is + * the first char in word. + */ +void CasesDifferByte::CasesDifferByte1() +{ + wdiffarray diffs; + CString string1(_T("Test")); + CString string2(_T("test")); + int count = 0; + + // Compare case, all whitespaces, whitespace break + // We must find one difference + sd_ComputeWordDiffs(string1, string2, + true, WHITESPACE_COMPARE_ALL, 0, true, + &diffs); + count = diffs.GetSize(); + CPPUNIT_ASSERT(count == 1); + + // Ignore case, all whitespaces, whitespace break + // No difference + diffs.RemoveAll(); + sd_ComputeWordDiffs(string1, string2, + false, WHITESPACE_COMPARE_ALL, 0, true, + &diffs); + count = diffs.GetSize(); + CPPUNIT_ASSERT(count == 0); + + // Compare case, whitespaces change, whitespace break + // We must find one difference + diffs.RemoveAll(); + sd_ComputeWordDiffs(string1, string2, + true, WHITESPACE_IGNORE_CHANGE, 0, true, + &diffs); + count = diffs.GetSize(); + CPPUNIT_ASSERT(count == 1); + + // Compare case, whitespaces ignore, whitespace break + // We must find one difference + diffs.RemoveAll(); + sd_ComputeWordDiffs(string1, string2, + true, WHITESPACE_IGNORE_ALL, 0, true, + &diffs); + count = diffs.GetSize(); + CPPUNIT_ASSERT(count == 1); +} + +/** + * @brief Test we handle simple case difference correctly. + * This function tests we handle one-char case difference correctly + * with different compare options. In this test the difference is + * in the middle of word. + */ +void CasesDifferByte::CasesDifferByte2() +{ + wdiffarray diffs; + CString string1(_T("test")); + CString string2(_T("teSt")); + int count = 0; + + // Compare case, all whitespaces, whitespace break + // We must find one difference + diffs.RemoveAll(); + sd_ComputeWordDiffs(string1, string2, + true, WHITESPACE_COMPARE_ALL, 0, true, + &diffs); + count = diffs.GetSize(); + CPPUNIT_ASSERT(count == 1); + + // Ignore case, all whitespaces, whitespace break + // No difference + diffs.RemoveAll(); + sd_ComputeWordDiffs(string1, string2, + false, WHITESPACE_COMPARE_ALL, 0, true, + &diffs); + count = diffs.GetSize(); + CPPUNIT_ASSERT(count == 0); + + // Compare case, whitespaces change, whitespace break + // We must find one difference + diffs.RemoveAll(); + sd_ComputeWordDiffs(string1, string2, + true, WHITESPACE_IGNORE_CHANGE, 0, true, + &diffs); + count = diffs.GetSize(); + CPPUNIT_ASSERT(count == 1); + + // Compare case, whitespaces ignore, whitespace break + // We must find one difference + diffs.RemoveAll(); + sd_ComputeWordDiffs(string1, string2, + true, WHITESPACE_IGNORE_ALL, 0, true, + &diffs); + count = diffs.GetSize(); + CPPUNIT_ASSERT(count == 1); +} + +/** + * @brief Test we handle simple case difference correctly. + * This function tests we handle one-chars case difference correctly + * with different compare options. + */ +void CasesDifferByte::CasesDifferByte3() +{ + wdiffarray diffs; + CString string1(_T("test case")); + CString string2(_T("teSt case")); + int count = 0; + + // Compare case, all whitespaces, whitespace break + // We must find one difference + diffs.RemoveAll(); + sd_ComputeWordDiffs(string1, string2, + true, WHITESPACE_COMPARE_ALL, 0, true, + &diffs); + count = diffs.GetSize(); + CPPUNIT_ASSERT(count == 1); + + // Ignore case, all whitespaces, whitespace break + // No difference + diffs.RemoveAll(); + sd_ComputeWordDiffs(string1, string2, + false, WHITESPACE_COMPARE_ALL, 0, true, + &diffs); + count = diffs.GetSize(); + CPPUNIT_ASSERT(count == 0); + + // Compare case, whitespaces change, whitespace break + // We must find one difference + diffs.RemoveAll(); + sd_ComputeWordDiffs(string1, string2, + true, WHITESPACE_IGNORE_CHANGE, 0, true, + &diffs); + count = diffs.GetSize(); + CPPUNIT_ASSERT(count == 1); + + // Compare case, whitespaces ignore, whitespace break + // We must find one difference + diffs.RemoveAll(); + sd_ComputeWordDiffs(string1, string2, + true, WHITESPACE_IGNORE_ALL, 0, true, + &diffs); + count = diffs.GetSize(); + CPPUNIT_ASSERT(count == 1); +} + +/** + * @brief Test we handle simple case difference correctly. + * This function tests we handle one-chars case difference correctly + * with different compare options. + */ +void CasesDifferByte::CasesDifferByte4() +{ + wdiffarray diffs; + CString string1(_T("test case")); + CString string2(_T("test cAse")); + int count = 0; + + // Compare case, all whitespaces, whitespace break + // We must find one difference + diffs.RemoveAll(); + sd_ComputeWordDiffs(string1, string2, + true, WHITESPACE_COMPARE_ALL, 0, true, + &diffs); + count = diffs.GetSize(); + CPPUNIT_ASSERT(count == 1); + + // Ignore case, all whitespaces, whitespace break + // No difference + diffs.RemoveAll(); + sd_ComputeWordDiffs(string1, string2, + false, WHITESPACE_COMPARE_ALL, 0, true, + &diffs); + count = diffs.GetSize(); + CPPUNIT_ASSERT(count == 0); + + // Compare case, whitespaces change, whitespace break + // We must find one difference + diffs.RemoveAll(); + sd_ComputeWordDiffs(string1, string2, + true, WHITESPACE_IGNORE_CHANGE, 0, true, + &diffs); + count = diffs.GetSize(); + CPPUNIT_ASSERT(count == 1); + + // Compare case, whitespaces ignore, whitespace break + // We must find one difference + diffs.RemoveAll(); + sd_ComputeWordDiffs(string1, string2, + true, WHITESPACE_IGNORE_ALL, 0, true, + &diffs); + count = diffs.GetSize(); + CPPUNIT_ASSERT(count == 1); +} + +/** + * @brief Test we handle simple case difference correctly. + * This function tests we handle one-chars case difference correctly + * with different compare options. This time with two words. + */ +void CasesDifferByte::CasesDifferByte5() +{ + wdiffarray diffs; + CString string1(_T("test case")); + CString string2(_T("tEst cAse")); + int count = 0; + + // Compare case, all whitespaces, whitespace break + // We must find one difference + diffs.RemoveAll(); + sd_ComputeWordDiffs(string1, string2, + true, WHITESPACE_COMPARE_ALL, 0, true, + &diffs); + count = diffs.GetSize(); + CPPUNIT_ASSERT(count == 1); + + // Ignore case, all whitespaces, whitespace break + // No difference + diffs.RemoveAll(); + sd_ComputeWordDiffs(string1, string2, + false, WHITESPACE_COMPARE_ALL, 0, true, + &diffs); + count = diffs.GetSize(); + CPPUNIT_ASSERT(count == 0); + + // Compare case, whitespaces change, whitespace break + // We must find one difference + diffs.RemoveAll(); + sd_ComputeWordDiffs(string1, string2, + true, WHITESPACE_IGNORE_CHANGE, 0, true, + &diffs); + count = diffs.GetSize(); + CPPUNIT_ASSERT(count == 1); + + // Compare case, whitespaces ignore, whitespace break + // We must find one difference + diffs.RemoveAll(); + sd_ComputeWordDiffs(string1, string2, + true, WHITESPACE_IGNORE_ALL, 0, true, + &diffs); + count = diffs.GetSize(); + CPPUNIT_ASSERT(count == 1); +} + +/** + * @brief Test we handle simple case difference correctly. + * This function tests we handle one-chars case difference correctly + * with different compare options. This time with three words, + * with one identical word between two different words. + */ +void CasesDifferByte::CasesDifferByte6() +{ + wdiffarray diffs; + CString string1(_T("test case string")); + CString string2(_T("tEst case String")); + int count = 0; + + // Compare case, all whitespaces, whitespace break + // We must find two differences + diffs.RemoveAll(); + sd_ComputeWordDiffs(string1, string2, + true, WHITESPACE_COMPARE_ALL, 0, true, + &diffs); + count = diffs.GetSize(); + CPPUNIT_ASSERT(count == 2); + + // Ignore case, all whitespaces, whitespace break + // No difference + diffs.RemoveAll(); + sd_ComputeWordDiffs(string1, string2, + false, WHITESPACE_COMPARE_ALL, 0, true, + &diffs); + count = diffs.GetSize(); + CPPUNIT_ASSERT(count == 0); + + // Compare case, whitespaces change, whitespace break + // We must find two differences + diffs.RemoveAll(); + sd_ComputeWordDiffs(string1, string2, + true, WHITESPACE_IGNORE_CHANGE, 0, true, + &diffs); + count = diffs.GetSize(); + CPPUNIT_ASSERT(count == 2); + + // Compare case, whitespaces ignore, whitespace break + // We must find two differences + diffs.RemoveAll(); + sd_ComputeWordDiffs(string1, string2, + true, WHITESPACE_IGNORE_ALL, 0, true, + &diffs); + count = diffs.GetSize(); + CPPUNIT_ASSERT(count == 2); +} + +/** + * @brief Test we handle simple case difference correctly. + * This function tests we handle one-chars case difference correctly + * with different compare options. This time in one word. + */ +void CasesDifferByte::CasesDifferByte7() +{ + wdiffarray diffs; + CString string1(_T("testcasestring")); + CString string2(_T("tEstcaseString")); + int count = 0; + + // Compare case, all whitespaces, whitespace break + // We must find two differences + diffs.RemoveAll(); + sd_ComputeWordDiffs(string1, string2, + true, WHITESPACE_COMPARE_ALL, 0, true, + &diffs); + count = diffs.GetSize(); + CPPUNIT_ASSERT(count == 1); + + // Ignore case, all whitespaces, whitespace break + // No difference + diffs.RemoveAll(); + sd_ComputeWordDiffs(string1, string2, + false, WHITESPACE_COMPARE_ALL, 0, true, + &diffs); + count = diffs.GetSize(); + CPPUNIT_ASSERT(count == 0); + + // Compare case, whitespaces change, whitespace break + // We must find two differences + diffs.RemoveAll(); + sd_ComputeWordDiffs(string1, string2, + true, WHITESPACE_IGNORE_CHANGE, 0, true, + &diffs); + count = diffs.GetSize(); + CPPUNIT_ASSERT(count == 1); + + // Compare case, whitespaces ignore, whitespace break + // We must find two differences + diffs.RemoveAll(); + sd_ComputeWordDiffs(string1, string2, + true, WHITESPACE_IGNORE_ALL, 0, true, + &diffs); + count = diffs.GetSize(); + CPPUNIT_ASSERT(count == 1); +} + +/** + * @brief Test we handle simple case difference correctly. + * This function tests we handle one-chars case difference correctly + * with different compare options. This time in two words. + */ +void CasesDifferByte::CasesDifferByte8() +{ + wdiffarray diffs; + CString string1(_T("testcasestring second")); + CString string2(_T("tEstcaseString second")); + int count = 0; + + // Compare case, all whitespaces, whitespace break + // We must find two differences + diffs.RemoveAll(); + sd_ComputeWordDiffs(string1, string2, + true, WHITESPACE_COMPARE_ALL, 0, true, + &diffs); + count = diffs.GetSize(); + CPPUNIT_ASSERT(count == 1); + + // Ignore case, all whitespaces, whitespace break + // No difference + diffs.RemoveAll(); + sd_ComputeWordDiffs(string1, string2, + false, WHITESPACE_COMPARE_ALL, 0, true, + &diffs); + count = diffs.GetSize(); + CPPUNIT_ASSERT(count == 0); + + // Compare case, whitespaces change, whitespace break + // We must find two differences + diffs.RemoveAll(); + sd_ComputeWordDiffs(string1, string2, + true, WHITESPACE_IGNORE_CHANGE, 0, true, + &diffs); + count = diffs.GetSize(); + CPPUNIT_ASSERT(count == 1); + + // Compare case, whitespaces ignore, whitespace break + // We must find two differences + diffs.RemoveAll(); + sd_ComputeWordDiffs(string1, string2, + true, WHITESPACE_IGNORE_ALL, 0, true, + &diffs); + count = diffs.GetSize(); + CPPUNIT_ASSERT(count == 1); +} + +/** + * @brief Test we handle simple case difference correctly. + * This function tests we handle one-chars case difference correctly + * with different compare options. This time in two words. + */ +void CasesDifferByte::CasesDifferByte9() +{ + wdiffarray diffs; + CString string1(_T("testcasestring secoNd")); + CString string2(_T("tEstcaseString second")); + int count = 0; + + // Compare case, all whitespaces, whitespace break + // We must find two differences + diffs.RemoveAll(); + sd_ComputeWordDiffs(string1, string2, + true, WHITESPACE_COMPARE_ALL, 0, true, + &diffs); + count = diffs.GetSize(); + CPPUNIT_ASSERT(count == 1); + + // Ignore case, all whitespaces, whitespace break + // No difference + diffs.RemoveAll(); + sd_ComputeWordDiffs(string1, string2, + false, WHITESPACE_COMPARE_ALL, 0, true, + &diffs); + count = diffs.GetSize(); + CPPUNIT_ASSERT(count == 0); + + // Compare case, whitespaces change, whitespace break + // We must find two differences + diffs.RemoveAll(); + sd_ComputeWordDiffs(string1, string2, + true, WHITESPACE_IGNORE_CHANGE, 0, true, + &diffs); + count = diffs.GetSize(); + CPPUNIT_ASSERT(count == 1); + + // Compare case, whitespaces ignore, whitespace break + // We must find two differences + diffs.RemoveAll(); + sd_ComputeWordDiffs(string1, string2, + true, WHITESPACE_IGNORE_ALL, 0, true, + &diffs); + count = diffs.GetSize(); + CPPUNIT_ASSERT(count == 1); +} + +/** + * @brief Test we handle simple case difference correctly. + * This function tests we handle one-chars case difference correctly + * with different compare options. This time in three words. + */ +void CasesDifferByte::CasesDifferByte10() +{ + wdiffarray diffs; + CString string1(_T("testcasestring second third")); + CString string2(_T("tEstcaseString second thIrd")); + int count = 0; + + // Compare case, all whitespaces, whitespace break + // We must find two differences + diffs.RemoveAll(); + sd_ComputeWordDiffs(string1, string2, + true, WHITESPACE_COMPARE_ALL, 0, true, + &diffs); + count = diffs.GetSize(); + CPPUNIT_ASSERT(count == 2); + + // Ignore case, all whitespaces, whitespace break + // No difference + diffs.RemoveAll(); + sd_ComputeWordDiffs(string1, string2, + false, WHITESPACE_COMPARE_ALL, 0, true, + &diffs); + count = diffs.GetSize(); + CPPUNIT_ASSERT(count == 0); + + // Compare case, whitespaces change, whitespace break + // We must find two differences + diffs.RemoveAll(); + sd_ComputeWordDiffs(string1, string2, + true, WHITESPACE_IGNORE_CHANGE, 0, true, + &diffs); + count = diffs.GetSize(); + CPPUNIT_ASSERT(count == 2); + + // Compare case, whitespaces ignore, whitespace break + // We must find two differences + diffs.RemoveAll(); + sd_ComputeWordDiffs(string1, string2, + true, WHITESPACE_IGNORE_ALL, 0, true, + &diffs); + count = diffs.GetSize(); + CPPUNIT_ASSERT(count == 2); +} + +/** + * @brief Test we handle simple case difference correctly. + * This function tests we handle one-chars case difference correctly + * with different compare options. This time in four words. + */ +void CasesDifferByte::CasesDifferByte11() +{ + wdiffarray diffs; + CString string1(_T("testcasestring second third fourth")); + CString string2(_T("tEstcaseString second thIrd fOurth")); + int count = 0; + + // Compare case, all whitespaces, whitespace break + // We must find two differences + diffs.RemoveAll(); + sd_ComputeWordDiffs(string1, string2, + true, WHITESPACE_COMPARE_ALL, 0, true, + &diffs); + count = diffs.GetSize(); + CPPUNIT_ASSERT(count == 2); + + // Ignore case, all whitespaces, whitespace break + // No difference + diffs.RemoveAll(); + sd_ComputeWordDiffs(string1, string2, + false, WHITESPACE_COMPARE_ALL, 0, true, + &diffs); + count = diffs.GetSize(); + CPPUNIT_ASSERT(count == 0); + + // Compare case, whitespaces change, whitespace break + // We must find two differences + diffs.RemoveAll(); + sd_ComputeWordDiffs(string1, string2, + true, WHITESPACE_IGNORE_CHANGE, 0, true, + &diffs); + count = diffs.GetSize(); + CPPUNIT_ASSERT(count == 2); + + // Compare case, whitespaces ignore, whitespace break + // We must find two differences + diffs.RemoveAll(); + sd_ComputeWordDiffs(string1, string2, + true, WHITESPACE_IGNORE_ALL, 0, true, + &diffs); + count = diffs.GetSize(); + CPPUNIT_ASSERT(count == 2); +} Added: trunk/Testing/CppUnit/StringDifferencing/CasesDifferByte.h =================================================================== --- trunk/Testing/CppUnit/StringDifferencing/CasesDifferByte.h (rev 0) +++ trunk/Testing/CppUnit/StringDifferencing/CasesDifferByte.h 2006-11-22 17:33:25 UTC (rev 3837) @@ -0,0 +1,50 @@ +/** + * @file CasesDifferByte.h + * + * @brief Declaration for Case difference tests. + */ + +#ifndef _CASESDIFFERBYTE_H_ +#define _CASESDIFFERBYTE_H_ + +#include <cppunit/extensions/HelperMacros.h> + + +/** + * @brief Compares case differences with byte compare method. + */ +class CasesDifferByte : public CPPUNIT_NS::TestFixture +{ + CPPUNIT_TEST_SUITE( CasesDifferByte ); + CPPUNIT_TEST( CasesDifferByte1 ); + CPPUNIT_TEST( CasesDifferByte2 ); + CPPUNIT_TEST( CasesDifferByte3 ); + CPPUNIT_TEST( CasesDifferByte4 ); + CPPUNIT_TEST( CasesDifferByte5 ); + CPPUNIT_TEST( CasesDifferByte6 ); + CPPUNIT_TEST( CasesDifferByte7 ); + CPPUNIT_TEST( CasesDifferByte8 ); + CPPUNIT_TEST( CasesDifferByte9 ); + CPPUNIT_TEST( CasesDifferByte10 ); + CPPUNIT_TEST( CasesDifferByte11 ); + CPPUNIT_TEST_SUITE_END(); + +public: + void setUp(); + void tearDown(); + +protected: + void CasesDifferByte1(); + void CasesDifferByte2(); + void CasesDifferByte3(); + void CasesDifferByte4(); + void CasesDifferByte5(); + void CasesDifferByte6(); + void CasesDifferByte7(); + void CasesDifferByte8(); + void CasesDifferByte9(); + void CasesDifferByte10(); + void CasesDifferByte11(); +}; + +#endif // _CASESDIFFERBYTE_ Modified: trunk/Testing/CppUnit/StringDifferencing/StringDifferencing.dsp =================================================================== --- trunk/Testing/CppUnit/StringDifferencing/StringDifferencing.dsp 2006-11-22 16:42:46 UTC (rev 3836) +++ trunk/Testing/CppUnit/StringDifferencing/StringDifferencing.dsp 2006-11-22 17:33:25 UTC (rev 3837) @@ -125,6 +125,14 @@ # PROP Default_Filter "" # Begin Source File +SOURCE=.\CasesDifferByte.cpp +# End Source File +# Begin Source File + +SOURCE=.\CasesDifferByte.h +# End Source File +# Begin Source File + SOURCE=.\DifferentStrings1.cpp # End Source File # Begin Source File This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ga...@us...> - 2007-03-21 13:08:58
|
Revision: 4181 http://svn.sourceforge.net/winmerge/?rev=4181&view=rev Author: galh Date: 2007-03-21 06:08:53 -0700 (Wed, 21 Mar 2007) Log Message: ----------- Added more test case to stringdiff (line coloring feature). Modified Paths: -------------- trunk/Testing/CppUnit/Changes.txt trunk/Testing/CppUnit/StringDifferencing/StringDifferencing.dsp trunk/Testing/CppUnit/StringDifferencing/TestCase1.cpp Added Paths: ----------- trunk/Testing/CppUnit/StringDifferencing/DiffColoring.cpp trunk/Testing/CppUnit/StringDifferencing/DiffColoring.h Modified: trunk/Testing/CppUnit/Changes.txt =================================================================== --- trunk/Testing/CppUnit/Changes.txt 2007-03-20 22:43:45 UTC (rev 4180) +++ trunk/Testing/CppUnit/Changes.txt 2007-03-21 13:08:53 UTC (rev 4181) @@ -1,5 +1,13 @@ Testing\selftest\Changes.txt +2007-03-21 Gal + Fix TestCase1::Difference2 test. + StringDifferencing: TestCase1.cpp + + Add more test case to stringdiff (line coloring feature). + StringDifferencing: StringDifferencing.dsp + StringDifferencing new files: DiffColoring.cpp DiffColoring.h + 2006-11-22 Kimmo Add more case difference tests to stringdiffs StringDifferencing: StringDifferencing.dsp Added: trunk/Testing/CppUnit/StringDifferencing/DiffColoring.cpp =================================================================== --- trunk/Testing/CppUnit/StringDifferencing/DiffColoring.cpp (rev 0) +++ trunk/Testing/CppUnit/StringDifferencing/DiffColoring.cpp 2007-03-21 13:08:53 UTC (rev 4181) @@ -0,0 +1,179 @@ +/** +* @file DiffColoring.cpp +* +* @brief Implementation of DiffColoring test cases. +*/ + +#include <cppunit/config/SourcePrefix.h> +#include "StdAfx.h" + +#include "CompareOptions.h" +#include "stringdiffs.h" + +#include "DiffColoring.h" + +CPPUNIT_TEST_SUITE_REGISTRATION( DiffColoring ); + +bool operator==(const wdiff& rdf, const wdiff& ldf) +{ + return ((rdf.start[0] == ldf.start[0]) && + (rdf.end[0] == ldf.end[0]) && + (rdf.start[1] == ldf.start[1]) && + (rdf.start[1] == ldf.start[1])); +} + +/** @brief Testcase initialization code. */ +void DiffColoring::setUp() +{ + // Add possible initializations here +} + +/** @brief Testcase cleanup code. */ +void DiffColoring::tearDown() +{ + // Add possible cleanups here +} + +/** +* @brief Test a single word difference. +*/ +void DiffColoring::OneWord() +{ + wdiffarray diffs; + CString string1(_T("Left")); + CString string2(_T("Right")); + int count = 0; + + // Compare case, all white spaces, whitespace break + sd_ComputeWordDiffs(string1, string2, + true, WHITESPACE_COMPARE_ALL, 0, false, + &diffs); + count = diffs.GetSize(); + CPPUNIT_ASSERT(count == 1); + CPPUNIT_ASSERT(diffs[0] == wdiff(0, 3, 0, 3)); +} + +/** +* @brief Test a multi words difference. +*/ +void DiffColoring::OneDiff() +{ + wdiffarray diffs; + CString string1(_T("This is the first line")); + CString string2(_T("This is not a cow")); + int count = 0; + + // Compare case, all white spaces, whitespace break + sd_ComputeWordDiffs(string1, string2, + true, WHITESPACE_COMPARE_ALL, 0, false, + &diffs); + count = diffs.GetSize(); + CPPUNIT_ASSERT(count == 1); + CPPUNIT_ASSERT(diffs[0] == wdiff(8, 21, 8, 16)); +} + +/** +* @brief Test a different string length difference. +*/ +void DiffColoring::DifferentLength() +{ + wdiffarray diffs; + CString string1(_T("First line to check")); + CString string2(_T("Second line")); + int count = 0; + + // Compare case, all white spaces, whitespace break + sd_ComputeWordDiffs(string1, string2, + true, WHITESPACE_COMPARE_ALL, 0, false, + &diffs); + count = diffs.GetSize(); + CPPUNIT_ASSERT(count == 2); + CPPUNIT_ASSERT(diffs[0] == wdiff(0, 4, 0, 5)); + CPPUNIT_ASSERT(diffs[1] == wdiff(11, 18, 11, 10)); +} + +/** +* @brief Test a string against an empty string difference. +*/ +void DiffColoring::DiffWithEmpty() +{ + wdiffarray diffs; + CString string1(_T("First line to check")); + CString string2(_T("")); + int count = 0; + + // Compare case, all white spaces, whitespace break + sd_ComputeWordDiffs(string1, string2, + true, WHITESPACE_COMPARE_ALL, 0, false, + &diffs); + count = diffs.GetSize(); + CPPUNIT_ASSERT(count == 1); + CPPUNIT_ASSERT(diffs[0] == wdiff(0, 18, 0, -1)); +} + +/** +* @brief Bug #1491334: Thinly highlighted position is wrong. +*/ +void DiffColoring::Bug1491334() +{ + wdiffarray diffs; + CString string1(_T("00 52 C8 52")); + CString string2(_T("00 00 00 52")); + int count = 0; + + // Compare case, all white spaces, whitespace break + sd_ComputeWordDiffs(string1, string2, + true, WHITESPACE_COMPARE_ALL, 0, false, + &diffs); + count = diffs.GetSize(); + CPPUNIT_ASSERT(count == 1); + CPPUNIT_ASSERT(diffs[0] == wdiff(3, 7, 3, 7)); +} + +/** +* @brief Bug #1639453: Imaginary difference highlighted in character level mode. +*/ +void DiffColoring::Bug1639453() +{ + wdiffarray diffs; + CString string1(_T("[12, 34]")); + CString string2(_T("[12, 34, 56]")); + int count = 0; + + // Compare case, all white spaces, whitespace break + punctuation, char level + sd_ComputeWordDiffs(string1, string2, + true, WHITESPACE_COMPARE_ALL, 1, true, + &diffs); + count = diffs.GetSize(); + CPPUNIT_ASSERT(count == 1); + CPPUNIT_ASSERT(diffs[0] == wdiff(7, 7, 7, 11)); +} + +/** +* @brief Bug #1683061: Bug in highlighting. +*/ +void DiffColoring::Bug1683061() +{ + wdiffarray diffs; + CString string1(_T("ABC")); + CString string2(_T("ABCD")); + int count = 0; + + // Compare case, all white spaces, whitespace break + sd_ComputeWordDiffs(string1, string2, + true, WHITESPACE_COMPARE_ALL, 0, false, + &diffs); + count = diffs.GetSize(); + CPPUNIT_ASSERT(count == 1); + CPPUNIT_ASSERT(diffs[0] == wdiff(0, 2, 0, 3)); + + // Compare case, all white spaces, whitespace break + punctuation + diffs.RemoveAll(); + sd_ComputeWordDiffs(string1, string2, + true, WHITESPACE_COMPARE_ALL, 0, true, + &diffs); + count = diffs.GetSize(); + CPPUNIT_ASSERT(count == 1); + CPPUNIT_ASSERT(diffs[0] == wdiff(3, 2, 3, 3)); +} + Added: trunk/Testing/CppUnit/StringDifferencing/DiffColoring.h =================================================================== --- trunk/Testing/CppUnit/StringDifferencing/DiffColoring.h (rev 0) +++ trunk/Testing/CppUnit/StringDifferencing/DiffColoring.h 2007-03-21 13:08:53 UTC (rev 4181) @@ -0,0 +1,46 @@ +/** +* @file DiffColoring.h +* +* @brief Declaration of DiffColoring test cases. +* +* This class doesn't check if the current number of differences found. It check +* the differences positions. Wrong difference positions cause bugs in the line +* coloring feature. +* +*/ + +#ifndef _DIFF_COLORING_H_INCLUDED_ +#define _DIFF_COLORING_H_INCLUDED_ + +#include <cppunit/extensions/HelperMacros.h> + +/** +* @brief Test cases for the line coloring feature. +*/ +class DiffColoring : public CPPUNIT_NS::TestFixture +{ + CPPUNIT_TEST_SUITE( DiffColoring ); + CPPUNIT_TEST( OneWord ); + CPPUNIT_TEST( OneDiff ); + CPPUNIT_TEST( DifferentLength ); + CPPUNIT_TEST( DiffWithEmpty ); + CPPUNIT_TEST( Bug1491334 ); + CPPUNIT_TEST( Bug1639453 ); + CPPUNIT_TEST( Bug1683061 ); + CPPUNIT_TEST_SUITE_END(); + +public: + void setUp(); + void tearDown(); + +protected: + void OneWord(); + void OneDiff(); + void DifferentLength(); + void DiffWithEmpty(); + void Bug1491334(); + void Bug1639453(); + void Bug1683061(); +}; + +#endif // _DIFF_COLORING_H_INCLUDED_ Modified: trunk/Testing/CppUnit/StringDifferencing/StringDifferencing.dsp =================================================================== --- trunk/Testing/CppUnit/StringDifferencing/StringDifferencing.dsp 2007-03-20 22:43:45 UTC (rev 4180) +++ trunk/Testing/CppUnit/StringDifferencing/StringDifferencing.dsp 2007-03-21 13:08:53 UTC (rev 4181) @@ -133,6 +133,14 @@ # End Source File # Begin Source File +SOURCE=.\DiffColoring.cpp +# End Source File +# Begin Source File + +SOURCE=.\DiffColoring.h +# End Source File +# Begin Source File + SOURCE=.\DifferentStrings1.cpp # End Source File # Begin Source File Modified: trunk/Testing/CppUnit/StringDifferencing/TestCase1.cpp =================================================================== --- trunk/Testing/CppUnit/StringDifferencing/TestCase1.cpp 2007-03-20 22:43:45 UTC (rev 4180) +++ trunk/Testing/CppUnit/StringDifferencing/TestCase1.cpp 2007-03-21 13:08:53 UTC (rev 4181) @@ -134,13 +134,14 @@ count = diffs.GetSize(); CPPUNIT_ASSERT(count == 0); - // This fails? Why? - // Shouldn't it it find two differences? But it founds only one? + // Expect to find one differences since difference starts from the first + // non-matching word and ends in the predecessor of the first matching + // word. diffs.RemoveAll(); sd_ComputeWordDiffs(string1, string2, true, WHITESPACE_COMPARE_ALL, 0, false, &diffs); count = diffs.GetSize(); - CPPUNIT_ASSERT(count == 2); + CPPUNIT_ASSERT(count == 1); diffs.RemoveAll(); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ga...@us...> - 2007-03-26 10:10:28
|
Revision: 4196 http://svn.sourceforge.net/winmerge/?rev=4196&view=rev Author: galh Date: 2007-03-26 03:10:25 -0700 (Mon, 26 Mar 2007) Log Message: ----------- Fix and addition to line coloring tests Modified Paths: -------------- trunk/Testing/CppUnit/Changes.txt trunk/Testing/CppUnit/StringDifferencing/DiffColoring.cpp trunk/Testing/CppUnit/StringDifferencing/DiffColoring.h Modified: trunk/Testing/CppUnit/Changes.txt =================================================================== --- trunk/Testing/CppUnit/Changes.txt 2007-03-26 08:39:34 UTC (rev 4195) +++ trunk/Testing/CppUnit/Changes.txt 2007-03-26 10:10:25 UTC (rev 4196) @@ -1,5 +1,9 @@ Testing\selftest\Changes.txt +2007-03-26 Gal + Fix and addition to line coloring tests + StringDifferencing: DiffColoring.cpp DiffColoring.h + 2007-03-21 Gal Fix TestCase1::Difference2 test. StringDifferencing: TestCase1.cpp Modified: trunk/Testing/CppUnit/StringDifferencing/DiffColoring.cpp =================================================================== --- trunk/Testing/CppUnit/StringDifferencing/DiffColoring.cpp 2007-03-26 08:39:34 UTC (rev 4195) +++ trunk/Testing/CppUnit/StringDifferencing/DiffColoring.cpp 2007-03-26 10:10:25 UTC (rev 4196) @@ -19,7 +19,7 @@ return ((rdf.start[0] == ldf.start[0]) && (rdf.end[0] == ldf.end[0]) && (rdf.start[1] == ldf.start[1]) && - (rdf.start[1] == ldf.start[1])); + (rdf.end[1] == ldf.end[1])); } /** @brief Testcase initialization code. */ @@ -50,7 +50,7 @@ &diffs); count = diffs.GetSize(); CPPUNIT_ASSERT(count == 1); - CPPUNIT_ASSERT(diffs[0] == wdiff(0, 3, 0, 3)); + CPPUNIT_ASSERT(diffs[0] == wdiff(0, 3, 0, 4)); } /** @@ -73,6 +73,25 @@ } /** +* @brief Test word difference in the middle of the line. +*/ +void DiffColoring::OneWordDiff() +{ + wdiffarray diffs; + CString string1(_T("This is the first line")); + CString string2(_T("This is the last line")); + int count = 0; + + // Compare case, all white spaces, whitespace break + sd_ComputeWordDiffs(string1, string2, + true, WHITESPACE_COMPARE_ALL, 0, false, + &diffs); + count = diffs.GetSize(); + CPPUNIT_ASSERT(count == 1); + CPPUNIT_ASSERT(diffs[0] == wdiff(12, 16, 12, 15)); +} + +/** * @brief Test a different string length difference. */ void DiffColoring::DifferentLength() @@ -131,6 +150,62 @@ } /** +* @brief Test punctuation break mode at char level. +*/ +void DiffColoring::PunctuationChar() +{ + wdiffarray diffs; + CString string1(_T("00,52,C8,52")); + CString string2(_T("00,00,00,52")); + int count = 0; + + // Compare case, all white spaces, whitespace break, char level + sd_ComputeWordDiffs(string1, string2, + true, WHITESPACE_COMPARE_ALL, 0, true, + &diffs); + count = diffs.GetSize(); + CPPUNIT_ASSERT(count == 1); + CPPUNIT_ASSERT(diffs[0] == wdiff(3, 7, 3, 7)); + + // Compare case, all white spaces, whitespace break + punctuation, char level + diffs.RemoveAll(); + sd_ComputeWordDiffs(string1, string2, + true, WHITESPACE_COMPARE_ALL, 1, true, + &diffs); + count = diffs.GetSize(); + CPPUNIT_ASSERT(count == 1); + CPPUNIT_ASSERT(diffs[0] == wdiff(3, 7, 3, 7)); +}; + +/** +* @brief Test punctuation break mode at word level. +*/ +void DiffColoring::PunctuationWord() +{ + wdiffarray diffs; + CString string1(_T("00,52,C8,52")); + CString string2(_T("00,00,00,52")); + int count = 0; + + // Compare case, all white spaces, whitespace break + sd_ComputeWordDiffs(string1, string2, + true, WHITESPACE_COMPARE_ALL, 0, false, + &diffs); + count = diffs.GetSize(); + CPPUNIT_ASSERT(count == 1); + CPPUNIT_ASSERT(diffs[0] == wdiff(0, 10, 0, 10)); + + // Compare case, all white spaces, whitespace break + punctuation + diffs.RemoveAll(); + sd_ComputeWordDiffs(string1, string2, + true, WHITESPACE_COMPARE_ALL, 1, false, + &diffs); + count = diffs.GetSize(); + CPPUNIT_ASSERT(count == 1); + CPPUNIT_ASSERT(diffs[0] == wdiff(3, 7, 3, 7)); +}; + +/** * @brief Bug #1639453: Imaginary difference highlighted in character level mode. */ void DiffColoring::Bug1639453() @@ -146,7 +221,20 @@ &diffs); count = diffs.GetSize(); CPPUNIT_ASSERT(count == 1); - CPPUNIT_ASSERT(diffs[0] == wdiff(7, 7, 7, 11)); + CPPUNIT_ASSERT(diffs[0] == wdiff(7, 6, 7, 10)); + + // A more complex strings. + string1 = _T("[overlay_oid_origin, overlay_oid_target], [nil, nil]"); + string2 = _T("[overlay_oid_origin, overlay_oid_target, origin_file_name, target_file_name], [nil, nil, \"origin.txt\", \"target.txt\"]"); + + // Compare case, all white spaces, whitespace break + punctuation, char level + diffs.RemoveAll(); + sd_ComputeWordDiffs(string1, string2, + true, WHITESPACE_COMPARE_ALL, 1, true, + &diffs); + count = diffs.GetSize(); + CPPUNIT_ASSERT(count == 1); + CPPUNIT_ASSERT(diffs[0] == wdiff(39, 50, 39, 114)); } /** Modified: trunk/Testing/CppUnit/StringDifferencing/DiffColoring.h =================================================================== --- trunk/Testing/CppUnit/StringDifferencing/DiffColoring.h 2007-03-26 08:39:34 UTC (rev 4195) +++ trunk/Testing/CppUnit/StringDifferencing/DiffColoring.h 2007-03-26 10:10:25 UTC (rev 4196) @@ -22,8 +22,11 @@ CPPUNIT_TEST_SUITE( DiffColoring ); CPPUNIT_TEST( OneWord ); CPPUNIT_TEST( OneDiff ); + CPPUNIT_TEST( OneWordDiff ); CPPUNIT_TEST( DifferentLength ); CPPUNIT_TEST( DiffWithEmpty ); + CPPUNIT_TEST( PunctuationChar ); + CPPUNIT_TEST( PunctuationWord ); CPPUNIT_TEST( Bug1491334 ); CPPUNIT_TEST( Bug1639453 ); CPPUNIT_TEST( Bug1683061 ); @@ -36,8 +39,11 @@ protected: void OneWord(); void OneDiff(); + void OneWordDiff(); void DifferentLength(); void DiffWithEmpty(); + void PunctuationChar(); + void PunctuationWord(); void Bug1491334(); void Bug1639453(); void Bug1683061(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ga...@us...> - 2007-05-14 06:02:46
|
Revision: 4284 http://svn.sourceforge.net/winmerge/?rev=4284&view=rev Author: galh Date: 2007-05-13 23:02:44 -0700 (Sun, 13 May 2007) Log Message: ----------- Fixed test case for bug 1639453. Added test case for bug 1714088. Modified Paths: -------------- trunk/Testing/CppUnit/Changes.txt trunk/Testing/CppUnit/StringDifferencing/DiffColoring.cpp trunk/Testing/CppUnit/StringDifferencing/DiffColoring.h Modified: trunk/Testing/CppUnit/Changes.txt =================================================================== --- trunk/Testing/CppUnit/Changes.txt 2007-05-14 05:53:28 UTC (rev 4283) +++ trunk/Testing/CppUnit/Changes.txt 2007-05-14 06:02:44 UTC (rev 4284) @@ -1,5 +1,10 @@ Testing\selftest\Changes.txt +2007-05-14 Gal + Fixed test case for bug 1639453. + Added test case for bug 1714088. + StringDifferencing: DiffColoring.cpp DiffColoring.h + 2007-03-26 Gal Fix and addition to line coloring tests StringDifferencing: DiffColoring.cpp DiffColoring.h Modified: trunk/Testing/CppUnit/StringDifferencing/DiffColoring.cpp =================================================================== --- trunk/Testing/CppUnit/StringDifferencing/DiffColoring.cpp 2007-05-14 05:53:28 UTC (rev 4283) +++ trunk/Testing/CppUnit/StringDifferencing/DiffColoring.cpp 2007-05-14 06:02:44 UTC (rev 4284) @@ -221,7 +221,7 @@ &diffs); count = diffs.GetSize(); CPPUNIT_ASSERT(count == 1); - CPPUNIT_ASSERT(diffs[0] == wdiff(7, 6, 7, 10)); + CPPUNIT_ASSERT(diffs[0] == wdiff(8, 7, 7, 10)); // A more complex strings. string1 = _T("[overlay_oid_origin, overlay_oid_target], [nil, nil]"); @@ -265,3 +265,22 @@ CPPUNIT_ASSERT(diffs[0] == wdiff(3, 2, 3, 3)); } +/** +* @brief Bug #1683061: Displays not existing content. +*/ +void DiffColoring::Bug1714088() +{ + wdiffarray diffs; + CString string1(_T("arg_separator.output = \";\"")); + CString string2(_T(";arg_separator.output = \"&\"")); + int count = 0; + + // Compare case, all white spaces, whitespace break, char level + sd_ComputeWordDiffs(string1, string2, + true, WHITESPACE_COMPARE_ALL, 0, true, + &diffs); + count = diffs.GetSize(); + CPPUNIT_ASSERT(count == 2); + CPPUNIT_ASSERT(diffs[0] == wdiff(26, 25, 0, 0)); + CPPUNIT_ASSERT(diffs[1] == wdiff(26, 25, 25, 28)); +} Modified: trunk/Testing/CppUnit/StringDifferencing/DiffColoring.h =================================================================== --- trunk/Testing/CppUnit/StringDifferencing/DiffColoring.h 2007-05-14 05:53:28 UTC (rev 4283) +++ trunk/Testing/CppUnit/StringDifferencing/DiffColoring.h 2007-05-14 06:02:44 UTC (rev 4284) @@ -30,6 +30,7 @@ CPPUNIT_TEST( Bug1491334 ); CPPUNIT_TEST( Bug1639453 ); CPPUNIT_TEST( Bug1683061 ); + CPPUNIT_TEST( Bug1714088 ); CPPUNIT_TEST_SUITE_END(); public: @@ -47,6 +48,7 @@ void Bug1491334(); void Bug1639453(); void Bug1683061(); + void Bug1714088(); }; #endif // _DIFF_COLORING_H_INCLUDED_ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |