Revision: 6595
http://winmerge.svn.sourceforge.net/winmerge/?rev=6595&view=rev
Author: kimmov
Date: 2009-03-25 08:49:02 +0000 (Wed, 25 Mar 2009)
Log Message:
-----------
Tests: Add more stringdiff unit tests against earlier reported bugs.
Modified Paths:
--------------
trunk/Testing/GoogleTest/StringDiffs/stringdiffs_test_bugs.cpp
Modified: trunk/Testing/GoogleTest/StringDiffs/stringdiffs_test_bugs.cpp
===================================================================
--- trunk/Testing/GoogleTest/StringDiffs/stringdiffs_test_bugs.cpp 2009-03-25 06:39:09 UTC (rev 6594)
+++ trunk/Testing/GoogleTest/StringDiffs/stringdiffs_test_bugs.cpp 2009-03-25 08:49:02 UTC (rev 6595)
@@ -56,6 +56,101 @@
// bool byte_level - are we word (false) or byte-level (true) diffing
// std::vector<wdiff*> * pDiffs - resultting diff list
+
+ // Sf.net bug #1685466 - char level diff
+ // (ENUMRESLANGPROC) added to middle
+ TEST_F(StringDiffsBugsTest, Bug_1685466_1)
+ {
+ std::vector<wdiff*> diffs;
+ sd_ComputeWordDiffs("if (EnumResourceLanguages(hinstLang, RT_VERSION, MAKEINTRESOURCE(VS_VERSION_INFO), (ENUMRESLANGPROC)FindNextResLang, (LPARAM)&wLangID) == 0)",
+ "if (EnumResourceLanguages(hinstLang, RT_VERSION, MAKEINTRESOURCE(VS_VERSION_INFO), FindNextResLang, (LPARAM)&wLangID) == 0)",
+ false, 0, 1, true, &diffs);
+ EXPECT_EQ(1, diffs.size());
+ if (diffs.size() > 0)
+ {
+ wdiff *pDiff = diffs[0];
+ EXPECT_EQ(83, pDiff->start[0]);
+ EXPECT_EQ(0, pDiff->start[1]);
+ EXPECT_EQ(99, pDiff->end[0]);
+ EXPECT_EQ(-1, pDiff->end[1]);
+ }
+ }
+
+ // Sf.net bug #1685466 - word level diff
+ // (ENUMRESLANGPROC) added to middle
+ TEST_F(StringDiffsBugsTest, Bug_1685466_2)
+ {
+ std::vector<wdiff*> diffs;
+ sd_ComputeWordDiffs("if (EnumResourceLanguages(hinstLang, RT_VERSION, MAKEINTRESOURCE(VS_VERSION_INFO), (ENUMRESLANGPROC)FindNextResLang, (LPARAM)&wLangID) == 0)",
+ "if (EnumResourceLanguages(hinstLang, RT_VERSION, MAKEINTRESOURCE(VS_VERSION_INFO), FindNextResLang, (LPARAM)&wLangID) == 0)",
+ false, 0, 1, false, &diffs);
+ EXPECT_EQ(1, diffs.size());
+ if (diffs.size() > 0)
+ {
+ wdiff *pDiff = diffs[0];
+ EXPECT_EQ(83, pDiff->start[0]);
+ EXPECT_EQ(0, pDiff->start[1]);
+ EXPECT_EQ(114, pDiff->end[0]);
+ EXPECT_EQ(-1, pDiff->end[1]);
+ }
+ }
+
+ // Sf.net bug #1939279 - char level diff
+ // various changes
+ TEST_F(StringDiffsBugsTest, Bug_1939279_1)
+ {
+ std::vector<wdiff*> diffs;
+ sd_ComputeWordDiffs("[overlay_oid_origin, overlay_oid_target], [nil, nil]",
+ "[overlay_oid_origin, overlay_oid_target, origin_file_name, target_file_name], [nil, nil, \"origin.txt\", \"target.txt\"]",
+ false, 0, 1, true, &diffs);
+ EXPECT_EQ(6, diffs.size());
+ if (diffs.size() > 0)
+ {
+ wdiff *pDiff = diffs[0];
+ EXPECT_EQ(39, pDiff->start[0]);
+ EXPECT_EQ(41, pDiff->start[1]);
+ EXPECT_EQ(39, pDiff->end[0]);
+ EXPECT_EQ(56, pDiff->end[1]);
+ }
+ }
+
+ // Sf.net bug #1939279 - word level diff
+ // various changes
+ TEST_F(StringDiffsBugsTest, Bug_1939279_2)
+ {
+ std::vector<wdiff*> diffs;
+ sd_ComputeWordDiffs("[overlay_oid_origin, overlay_oid_target], [nil, nil]",
+ "[overlay_oid_origin, overlay_oid_target, origin_file_name, target_file_name], [nil, nil, \"origin.txt\", \"target.txt\"]",
+ false, 0, 1, false, &diffs);
+ EXPECT_EQ(6, diffs.size());
+ if (diffs.size() > 0)
+ {
+ wdiff *pDiff = diffs[0];
+ EXPECT_EQ(21, pDiff->start[0]);
+ EXPECT_EQ(21, pDiff->start[1]);
+ EXPECT_EQ(39, pDiff->end[0]);
+ EXPECT_EQ(38, pDiff->end[1]);
+ }
+ }
+
+ // Sf.net bug #2022935 - char level diff
+ // Chars added to end
+ TEST_F(StringDiffsBugsTest, Bug_2022935)
+ {
+ std::vector<wdiff*> diffs;
+ sd_ComputeWordDiffs("N42=Import", "N42=Importuj",
+ false, 0, 1, true, &diffs);
+ EXPECT_EQ(1, diffs.size());
+ if (diffs.size() > 0)
+ {
+ wdiff *pDiff = diffs[0];
+ EXPECT_EQ(0, pDiff->start[0]);
+ EXPECT_EQ(10, pDiff->start[1]);
+ EXPECT_EQ(-1, pDiff->end[0]);
+ EXPECT_EQ(11, pDiff->end[1]);
+ }
+ }
+
// Sf.net bug #2638045 - word diff
// Char added to end
TEST_F(StringDiffsBugsTest, Bug_2638045)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|