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.mohrh...@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.mohrh...@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; _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits