diff options
Diffstat (limited to 'editeng/qa/unit/EditLineListTest.cxx')
-rw-r--r-- | editeng/qa/unit/EditLineListTest.cxx | 173 |
1 files changed, 173 insertions, 0 deletions
diff --git a/editeng/qa/unit/EditLineListTest.cxx b/editeng/qa/unit/EditLineListTest.cxx new file mode 100644 index 000000000000..c6240c4e055c --- /dev/null +++ b/editeng/qa/unit/EditLineListTest.cxx @@ -0,0 +1,173 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include <test/bootstrapfixture.hxx> +#include <EditLineList.hxx> + +namespace +{ +class EditLineListTest : public test::BootstrapFixture +{ +}; + +CPPUNIT_TEST_FIXTURE(EditLineListTest, testConstruction) +{ + EditLineList aNewList; + CPPUNIT_ASSERT_EQUAL(sal_Int32(0), aNewList.Count()); +} + +CPPUNIT_TEST_FIXTURE(EditLineListTest, testAppendAndInsert) +{ + // Test case: + // Append EditLine1 + // Append EditLine3 + // Insert EditLine2 in-between EditLine1 and pEditLine3 + + EditLineList aNewList; + + EditLine* pEditLine1 = new EditLine; + EditLine* pEditLine2 = new EditLine; + EditLine* pEditLine3 = new EditLine; + + aNewList.Append(std::unique_ptr<EditLine>(pEditLine1)); + CPPUNIT_ASSERT_EQUAL(sal_Int32(1), aNewList.Count()); + + aNewList.Append(std::unique_ptr<EditLine>(pEditLine3)); + CPPUNIT_ASSERT_EQUAL(sal_Int32(2), aNewList.Count()); + + CPPUNIT_ASSERT_EQUAL(pEditLine1, &aNewList[0]); + CPPUNIT_ASSERT_EQUAL(pEditLine3, &aNewList[1]); + + aNewList.Insert(1, std::unique_ptr<EditLine>(pEditLine2)); + CPPUNIT_ASSERT_EQUAL(sal_Int32(3), aNewList.Count()); + + CPPUNIT_ASSERT_EQUAL(pEditLine1, &aNewList[0]); + CPPUNIT_ASSERT_EQUAL(pEditLine2, &aNewList[1]); + CPPUNIT_ASSERT_EQUAL(pEditLine3, &aNewList[2]); +} + +CPPUNIT_TEST_FIXTURE(EditLineListTest, testReset) +{ + EditLineList aNewList; + + aNewList.Append(std::make_unique<EditLine>()); + aNewList.Append(std::make_unique<EditLine>()); + aNewList.Append(std::make_unique<EditLine>()); + + CPPUNIT_ASSERT_EQUAL(sal_Int32(3), aNewList.Count()); + + aNewList.Reset(); + + CPPUNIT_ASSERT_EQUAL(sal_Int32(0), aNewList.Count()); +} + +CPPUNIT_TEST_FIXTURE(EditLineListTest, testDeleteFrom) +{ + EditLineList aNewList; + + aNewList.Append(std::make_unique<EditLine>()); + aNewList.Append(std::make_unique<EditLine>()); + aNewList.Append(std::make_unique<EditLine>()); + aNewList.Append(std::make_unique<EditLine>()); + aNewList.Append(std::make_unique<EditLine>()); + + aNewList[0].SetStart(10); + aNewList[1].SetStart(11); + aNewList[2].SetStart(12); + aNewList[3].SetStart(13); + aNewList[4].SetStart(14); + + CPPUNIT_ASSERT_EQUAL(sal_Int32(5), aNewList.Count()); + + aNewList.DeleteFromLine(2); + + CPPUNIT_ASSERT_EQUAL(sal_Int32(2), aNewList.Count()); + + CPPUNIT_ASSERT_EQUAL(sal_Int32(10), aNewList[0].GetStart()); + CPPUNIT_ASSERT_EQUAL(sal_Int32(11), aNewList[1].GetStart()); + + aNewList.Append(std::make_unique<EditLine>()); + aNewList.Append(std::make_unique<EditLine>()); + aNewList.Append(std::make_unique<EditLine>()); + aNewList.Append(std::make_unique<EditLine>()); + + aNewList[2].SetStart(15); + aNewList[3].SetStart(16); + aNewList[4].SetStart(17); + aNewList[5].SetStart(18); + + CPPUNIT_ASSERT_EQUAL(sal_Int32(6), aNewList.Count()); + + CPPUNIT_ASSERT_EQUAL(sal_Int32(10), aNewList[0].GetStart()); + CPPUNIT_ASSERT_EQUAL(sal_Int32(11), aNewList[1].GetStart()); + CPPUNIT_ASSERT_EQUAL(sal_Int32(15), aNewList[2].GetStart()); + CPPUNIT_ASSERT_EQUAL(sal_Int32(16), aNewList[3].GetStart()); + CPPUNIT_ASSERT_EQUAL(sal_Int32(17), aNewList[4].GetStart()); + CPPUNIT_ASSERT_EQUAL(sal_Int32(18), aNewList[5].GetStart()); + + aNewList.DeleteFromLine(4); + + CPPUNIT_ASSERT_EQUAL(sal_Int32(4), aNewList.Count()); + + CPPUNIT_ASSERT_EQUAL(sal_Int32(10), aNewList[0].GetStart()); + CPPUNIT_ASSERT_EQUAL(sal_Int32(11), aNewList[1].GetStart()); + CPPUNIT_ASSERT_EQUAL(sal_Int32(15), aNewList[2].GetStart()); + CPPUNIT_ASSERT_EQUAL(sal_Int32(16), aNewList[3].GetStart()); +} + +CPPUNIT_TEST_FIXTURE(EditLineListTest, testFindLine) +{ + EditLineList aNewList; + EditLine* pEditLine1 = new EditLine; + pEditLine1->SetStart(0); + pEditLine1->SetEnd(10); + aNewList.Append(std::unique_ptr<EditLine>(pEditLine1)); + + EditLine* pEditLine2 = new EditLine; + pEditLine2->SetStart(10); + pEditLine2->SetEnd(20); + aNewList.Append(std::unique_ptr<EditLine>(pEditLine2)); + + EditLine* pEditLine3 = new EditLine; + pEditLine3->SetStart(20); + pEditLine3->SetEnd(30); + aNewList.Append(std::unique_ptr<EditLine>(pEditLine3)); + + // Exclude end + CPPUNIT_ASSERT_EQUAL(sal_Int32(0), aNewList.FindLine(-1, false)); + CPPUNIT_ASSERT_EQUAL(sal_Int32(0), aNewList.FindLine(0, false)); + CPPUNIT_ASSERT_EQUAL(sal_Int32(0), aNewList.FindLine(5, false)); + CPPUNIT_ASSERT_EQUAL(sal_Int32(0), aNewList.FindLine(9, false)); + CPPUNIT_ASSERT_EQUAL(sal_Int32(1), aNewList.FindLine(10, false)); + CPPUNIT_ASSERT_EQUAL(sal_Int32(1), aNewList.FindLine(15, false)); + CPPUNIT_ASSERT_EQUAL(sal_Int32(1), aNewList.FindLine(19, false)); + CPPUNIT_ASSERT_EQUAL(sal_Int32(2), aNewList.FindLine(20, false)); + CPPUNIT_ASSERT_EQUAL(sal_Int32(2), aNewList.FindLine(25, false)); + CPPUNIT_ASSERT_EQUAL(sal_Int32(2), aNewList.FindLine(30, false)); + CPPUNIT_ASSERT_EQUAL(sal_Int32(2), aNewList.FindLine(31, false)); + CPPUNIT_ASSERT_EQUAL(sal_Int32(2), aNewList.FindLine(10000, false)); + + // Include end + CPPUNIT_ASSERT_EQUAL(sal_Int32(0), aNewList.FindLine(-1, true)); + CPPUNIT_ASSERT_EQUAL(sal_Int32(0), aNewList.FindLine(0, true)); + CPPUNIT_ASSERT_EQUAL(sal_Int32(0), aNewList.FindLine(5, true)); + CPPUNIT_ASSERT_EQUAL(sal_Int32(0), aNewList.FindLine(9, true)); + CPPUNIT_ASSERT_EQUAL(sal_Int32(0), aNewList.FindLine(10, true)); + CPPUNIT_ASSERT_EQUAL(sal_Int32(1), aNewList.FindLine(15, true)); + CPPUNIT_ASSERT_EQUAL(sal_Int32(1), aNewList.FindLine(19, true)); + CPPUNIT_ASSERT_EQUAL(sal_Int32(1), aNewList.FindLine(20, true)); + CPPUNIT_ASSERT_EQUAL(sal_Int32(2), aNewList.FindLine(25, true)); + CPPUNIT_ASSERT_EQUAL(sal_Int32(2), aNewList.FindLine(30, true)); + CPPUNIT_ASSERT_EQUAL(sal_Int32(2), aNewList.FindLine(31, true)); + CPPUNIT_ASSERT_EQUAL(sal_Int32(2), aNewList.FindLine(10000, true)); +} + +} // end anonymous namespace + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |