[Libreoffice-commits] .: 2 commits - sc/qa sc/source
Libreoffice Gerrit user
logerrit at kemper.freedesktop.org
Fri Sep 21 19:48:05 PDT 2012
sc/qa/unit/rangelst_test.cxx | 128 +++++++++++++++++++++++++++++++++++++++
sc/source/core/tool/rangelst.cxx | 12 +--
2 files changed, 134 insertions(+), 6 deletions(-)
New commits:
commit fc0aa44b9d6aab7af68b00e4e26f3d9300e30fc2
Author: Markus Mohrhard <markus.mohrhard at googlemail.com>
Date: Sat Sep 22 04:45:10 2012 +0200
test cases for the changes to ScRangeList::DeleteArea
Change-Id: Iaf64a4cdceed76ba37e4486cfded18bd7e49b196
diff --git a/sc/qa/unit/rangelst_test.cxx b/sc/qa/unit/rangelst_test.cxx
index f6e1d53..2c618a5 100644
--- a/sc/qa/unit/rangelst_test.cxx
+++ b/sc/qa/unit/rangelst_test.cxx
@@ -24,10 +24,16 @@ public:
void testDeleteArea_3Ranges();
void testDeleteArea_3Ranges_Case2();
void testDeleteArea_3Ranges_Case3();
+ void testDeleteArea_3Ranges_Case4();
+ void testDeleteArea_3Ranges_Case5();
void testDeleteArea_2Ranges();
void testDeleteArea_2Ranges_Case2();
void testDeleteArea_2Ranges_Case3();
void testDeleteArea_2Ranges_Case4();
+ void testDeleteArea_2Ranges_Case5();
+ void testDeleteArea_2Ranges_Case6();
+ void testDeleteArea_2Ranges_Case7();
+ void testDeleteArea_2Ranges_Case8();
void testDeleteArea_1Range();
void testDeleteArea_0Ranges();
@@ -39,10 +45,16 @@ public:
CPPUNIT_TEST(testDeleteArea_3Ranges);
CPPUNIT_TEST(testDeleteArea_3Ranges_Case2);
CPPUNIT_TEST(testDeleteArea_3Ranges_Case3);
+ CPPUNIT_TEST(testDeleteArea_3Ranges_Case4);
+ CPPUNIT_TEST(testDeleteArea_3Ranges_Case5);
CPPUNIT_TEST(testDeleteArea_2Ranges);
CPPUNIT_TEST(testDeleteArea_2Ranges_Case2);
CPPUNIT_TEST(testDeleteArea_2Ranges_Case3);
CPPUNIT_TEST(testDeleteArea_2Ranges_Case4);
+ CPPUNIT_TEST(testDeleteArea_2Ranges_Case5);
+ CPPUNIT_TEST(testDeleteArea_2Ranges_Case6);
+ CPPUNIT_TEST(testDeleteArea_2Ranges_Case7);
+ CPPUNIT_TEST(testDeleteArea_2Ranges_Case8);
CPPUNIT_TEST(testDeleteArea_1Range);
CPPUNIT_TEST(testDeleteArea_0Ranges);
CPPUNIT_TEST(testUpdateReference_DeleteRow);
@@ -154,6 +166,46 @@ void Test::testDeleteArea_3Ranges_Case3()
}
}
+void Test::testDeleteArea_3Ranges_Case4()
+{
+ ScRangeList aList(ScRange(1,5,0,6,11,0));
+ CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(1), aList.size());
+ aList.DeleteArea(3,5,0,4,5,0);
+ CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(3), aList.size());
+
+ // Column 3-4 && Row 5 should not be in the range list.
+ for (SCCOL nCol = 1; nCol <= 6; ++nCol)
+ {
+ for (SCROW nRow = 5; nRow <= 11; ++nRow)
+ {
+ if ((3 <= nCol && nCol <= 4) && 5 == nRow )
+ CPPUNIT_ASSERT(!aList.In(ScRange(nCol, nRow, 0)));
+ else
+ CPPUNIT_ASSERT(aList.In(ScRange(nCol, nRow, 0)));
+ }
+ }
+}
+
+void Test::testDeleteArea_3Ranges_Case5()
+{
+ ScRangeList aList(ScRange(1,5,0,6,11,0));
+ CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(1), aList.size());
+ aList.DeleteArea(6,7,0,6,9,0);
+ CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(3), aList.size());
+
+ // Column 6 && Row 7-9 should not be in the range list.
+ for (SCCOL nCol = 1; nCol <= 6; ++nCol)
+ {
+ for (SCROW nRow = 5; nRow <= 11; ++nRow)
+ {
+ if ( nCol == 6 && (7 <= nRow && nRow <= 9))
+ CPPUNIT_ASSERT(!aList.In(ScRange(nCol, nRow, 0)));
+ else
+ CPPUNIT_ASSERT(aList.In(ScRange(nCol, nRow, 0)));
+ }
+ }
+}
+
void Test::testDeleteArea_2Ranges()
{
ScRangeList aList(ScRange(0,0,0,5,5,5));
@@ -229,6 +281,82 @@ void Test::testDeleteArea_2Ranges_Case4()
}
}
+void Test::testDeleteArea_2Ranges_Case5()
+{
+ ScRangeList aList(ScRange(2,2,0,5,5,0));
+ aList.DeleteArea(4,5,0,5,5,0);
+ CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(2), aList.size());
+
+ // Column 4 and 5 Row 5 shouldn't be in the list.
+ for(SCCOL nCol = 2; nCol <= 5; ++nCol)
+ {
+ for(SCROW nRow = 2; nRow <= 5; ++nRow)
+ {
+ if(nRow == 5 && 4 <= nCol)
+ CPPUNIT_ASSERT(!aList.In(ScRange(nCol, nRow, 0)));
+ else
+ CPPUNIT_ASSERT(aList.In(ScRange(nCol, nRow, 0)));
+ }
+ }
+}
+
+void Test::testDeleteArea_2Ranges_Case6()
+{
+ ScRangeList aList(ScRange(2,2,0,5,5,0));
+ aList.DeleteArea(4,2,0,5,2,0);
+ CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(2), aList.size());
+
+ // Column 4 and 5 Row 2 shouldn't be in the list.
+ for(SCCOL nCol = 2; nCol <= 5; ++nCol)
+ {
+ for(SCROW nRow = 2; nRow <= 5; ++nRow)
+ {
+ if(nRow == 2 && 4 <= nCol)
+ CPPUNIT_ASSERT(!aList.In(ScRange(nCol, nRow, 0)));
+ else
+ CPPUNIT_ASSERT(aList.In(ScRange(nCol, nRow, 0)));
+ }
+ }
+}
+
+void Test::testDeleteArea_2Ranges_Case7()
+{
+ ScRangeList aList(ScRange(2,2,0,5,5,0));
+ aList.DeleteArea(2,5,0,2,5,0);
+ CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(2), aList.size());
+
+ // Column 2 Row 5 shouldn't be in the list.
+ for(SCCOL nCol = 2; nCol <= 5; ++nCol)
+ {
+ for(SCROW nRow = 2; nRow <= 5; ++nRow)
+ {
+ if(nRow == 5 && nCol == 2)
+ CPPUNIT_ASSERT(!aList.In(ScRange(nCol, nRow, 0)));
+ else
+ CPPUNIT_ASSERT(aList.In(ScRange(nCol, nRow, 0)));
+ }
+ }
+}
+
+void Test::testDeleteArea_2Ranges_Case8()
+{
+ ScRangeList aList(ScRange(2,2,0,5,5,0));
+ aList.DeleteArea(2,2,0,3,2,0);
+ CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(2), aList.size());
+
+ // Column 2 & 3 Row 2 shouldn't be in the list.
+ for(SCCOL nCol = 2; nCol <= 5; ++nCol)
+ {
+ for(SCROW nRow = 2; nRow <= 5; ++nRow)
+ {
+ if(nRow == 2 && nCol <= 3)
+ CPPUNIT_ASSERT(!aList.In(ScRange(nCol, nRow, 0)));
+ else
+ CPPUNIT_ASSERT(aList.In(ScRange(nCol, nRow, 0)));
+ }
+ }
+}
+
void Test::testDeleteArea_1Range()
{
ScRangeList aList(ScRange(1,1,0,3,3,0));
commit 925ed0b79bc400a72eaaf7c8b53b67d96c7cab7a
Author: Markus Mohrhard <markus.mohrhard at googlemail.com>
Date: Sat Sep 22 04:44:35 2012 +0200
some more fixes for ScRangeList::DeleteArea
Change-Id: I7f4cf6b053d7cff85e46ecf51cbf8a327530de67
diff --git a/sc/source/core/tool/rangelst.cxx b/sc/source/core/tool/rangelst.cxx
index 96f7de5..8aae801 100644
--- a/sc/source/core/tool/rangelst.cxx
+++ b/sc/source/core/tool/rangelst.cxx
@@ -604,7 +604,7 @@ bool handleTwoRanges( const ScRange& rDeleteRange, ScRange* p, std::vector<ScRan
{
// column deleted : |-------|
// column original: |-------|
- if (nRow1 < nDeleteRow1 && nDeleteRow1 < nRow2 && nRow2 <= nDeleteRow2)
+ if (nRow1 < nDeleteRow1 && nDeleteRow1 <= nRow2 && nRow2 <= nDeleteRow2)
{
// row deleted: |------|
// row original: |------|
@@ -623,7 +623,7 @@ bool handleTwoRanges( const ScRange& rDeleteRange, ScRange* p, std::vector<ScRan
p->aEnd.SetRow(nDeleteRow1-1); // 1
return true;
}
- else if (nRow1 < nDeleteRow2 && nDeleteRow2 < nRow2 && nDeleteRow1 <= nRow1)
+ else if (nRow1 <= nDeleteRow2 && nDeleteRow2 < nRow2 && nDeleteRow1 <= nRow1)
{
// row deleted: |------|
// row original: |------|
@@ -647,7 +647,7 @@ bool handleTwoRanges( const ScRange& rDeleteRange, ScRange* p, std::vector<ScRan
{
// column deleted : |-------|
// column original: |-------|
- if (nRow1 < nDeleteRow1 && nDeleteRow1 < nRow2 && nRow2 <= nDeleteRow2)
+ if (nRow1 < nDeleteRow1 && nDeleteRow1 <= nRow2 && nRow2 <= nDeleteRow2)
{
// row deleted: |------|
// row original: |------|
@@ -667,7 +667,7 @@ bool handleTwoRanges( const ScRange& rDeleteRange, ScRange* p, std::vector<ScRan
p->aEnd.SetRow(nDeleteRow1-1); // 1
return true;
}
- else if (nRow1 < nDeleteRow2 && nDeleteRow2 < nRow2 && nDeleteRow1 <= nRow1)
+ else if (nRow1 <= nDeleteRow2 && nDeleteRow2 < nRow2 && nDeleteRow1 <= nRow1)
{
// row deleted: |-------|
// row original: |--------|
@@ -751,10 +751,10 @@ template<typename X, typename Y>
bool checkForThreeRanges(
X nDeleteX1, X nDeleteX2, Y nDeleteY1, Y nDeleteY2, X nX1, X nX2, Y nY1, Y nY2)
{
- if (nX1 < nDeleteX1 && nX2 <= nDeleteX2 && nY1 < nDeleteY1 && nDeleteY2 < nY2)
+ if (nX1 <= nDeleteX1 && nX2 <= nDeleteX2 && nY1 < nDeleteY1 && nDeleteY2 < nY2)
return true;
- if (nDeleteX1 <= nX1 && nDeleteX2 < nX2 && nY1 < nDeleteY1 && nDeleteY2 < nY2)
+ if (nDeleteX1 <= nX1 && nDeleteX2 <= nX2 && nY1 < nDeleteY1 && nDeleteY2 < nY2)
return true;
return false;
More information about the Libreoffice-commits
mailing list