Kaydet (Commit) 66b1b690 authored tarafından Bjoern Michaelsen's avatar Bjoern Michaelsen Kaydeden (comit) Björn Michaelsen

add unittest for moving around the marks

Change-Id: I31849e655ab9e9c9acc62f1fdc124d40342deb49
Reviewed-on: https://gerrit.libreoffice.org/9069Reviewed-by: 's avatarBjörn Michaelsen <bjoern.michaelsen@canonical.com>
Tested-by: 's avatarBjörn Michaelsen <bjoern.michaelsen@canonical.com>
üst 8db04e71
...@@ -51,6 +51,7 @@ ...@@ -51,6 +51,7 @@
#include "docary.hxx" #include "docary.hxx"
#include "modeltoviewhelper.hxx" #include "modeltoviewhelper.hxx"
#include "scriptinfo.hxx" #include "scriptinfo.hxx"
#include "IMark.hxx"
typedef tools::SvRef<SwDocShell> SwDocShellRef; typedef tools::SvRef<SwDocShell> SwDocShellRef;
...@@ -73,6 +74,7 @@ public: ...@@ -73,6 +74,7 @@ public:
void testUserPerceivedCharCount(); void testUserPerceivedCharCount();
void testGraphicAnchorDeletion(); void testGraphicAnchorDeletion();
void testTransliterate(); void testTransliterate();
void testMarkMove();
CPPUNIT_TEST_SUITE(SwDocTest); CPPUNIT_TEST_SUITE(SwDocTest);
CPPUNIT_TEST(testTransliterate); CPPUNIT_TEST(testTransliterate);
...@@ -84,6 +86,7 @@ public: ...@@ -84,6 +86,7 @@ public:
CPPUNIT_TEST(testSwScanner); CPPUNIT_TEST(testSwScanner);
CPPUNIT_TEST(testUserPerceivedCharCount); CPPUNIT_TEST(testUserPerceivedCharCount);
CPPUNIT_TEST(testGraphicAnchorDeletion); CPPUNIT_TEST(testGraphicAnchorDeletion);
CPPUNIT_TEST(testMarkMove);
CPPUNIT_TEST_SUITE_END(); CPPUNIT_TEST_SUITE_END();
private: private:
...@@ -1009,6 +1012,140 @@ void SwDocTest::testTransliterate() ...@@ -1009,6 +1012,140 @@ void SwDocTest::testTransliterate()
i18n::TransliterationModules_HIRAGANA_KATAKANA)); i18n::TransliterationModules_HIRAGANA_KATAKANA));
} }
void SwDocTest::testMarkMove()
{
IDocumentMarkAccess* pMarksAccess = m_pDoc->getIDocumentMarkAccess();
{
SwNodeIndex aIdx(m_pDoc->GetNodes().GetEndOfContent(), -1);
SwPaM aPaM(aIdx);
m_pDoc->InsertString(aPaM, OUString("Paragraph 1"));
aPaM.SetMark();
aPaM.GetMark()->nContent -= aPaM.GetMark()->nContent.GetIndex();
pMarksAccess->makeMark(aPaM, OUString("Para1"), IDocumentMarkAccess::BOOKMARK);
m_pDoc->AppendTxtNode(*aPaM.GetPoint());
m_pDoc->InsertString(aPaM, OUString("Paragraph 2"));
aPaM.SetMark();
aPaM.GetMark()->nContent -= aPaM.GetMark()->nContent.GetIndex();
pMarksAccess->makeMark(aPaM, OUString("Para2"), IDocumentMarkAccess::BOOKMARK);
m_pDoc->AppendTxtNode(*aPaM.GetPoint());
m_pDoc->InsertString(aPaM, OUString("Paragraph 3"));
aPaM.SetMark();
aPaM.GetMark()->nContent -= aPaM.GetMark()->nContent.GetIndex();
pMarksAccess->makeMark(aPaM, OUString("Para3"), IDocumentMarkAccess::BOOKMARK);
}
// join paragraph 2 and 3 and check
{
SwNodeIndex aIdx(m_pDoc->GetNodes().GetEndOfContent(), -2);
SwTxtNode* pParaNode2 = dynamic_cast<SwTxtNode*>(&aIdx.GetNode());
pParaNode2->JoinNext();
}
::sw::mark::IMark* pBM1 = pMarksAccess->findMark("Para1")->get();
::sw::mark::IMark* pBM2 = pMarksAccess->findMark("Para2")->get();
::sw::mark::IMark* pBM3 = pMarksAccess->findMark("Para3")->get();
CPPUNIT_ASSERT_EQUAL(0 , pBM1->GetMarkStart().nContent.GetIndex());
CPPUNIT_ASSERT_EQUAL(11, pBM1->GetMarkEnd().nContent.GetIndex());
CPPUNIT_ASSERT_EQUAL(
pBM1->GetMarkStart().nNode.GetIndex(),
pBM1->GetMarkEnd().nNode.GetIndex());
CPPUNIT_ASSERT_EQUAL(0 , pBM2->GetMarkStart().nContent.GetIndex());
CPPUNIT_ASSERT_EQUAL(11, pBM2->GetMarkEnd().nContent.GetIndex());
CPPUNIT_ASSERT_EQUAL(
pBM2->GetMarkStart().nNode.GetIndex(),
pBM2->GetMarkEnd().nNode.GetIndex());
CPPUNIT_ASSERT_EQUAL(11, pBM3->GetMarkStart().nContent.GetIndex());
CPPUNIT_ASSERT_EQUAL(22, pBM3->GetMarkEnd().nContent.GetIndex());
CPPUNIT_ASSERT_EQUAL(
pBM3->GetMarkStart().nNode.GetIndex(),
pBM3->GetMarkEnd().nNode.GetIndex());
CPPUNIT_ASSERT_EQUAL(
pBM1->GetMarkStart().nNode.GetIndex()+1,
pBM2->GetMarkStart().nNode.GetIndex());
CPPUNIT_ASSERT_EQUAL(
pBM2->GetMarkStart().nNode.GetIndex(),
pBM3->GetMarkStart().nNode.GetIndex());
// cut some text
{
SwNodeIndex aIdx(m_pDoc->GetNodes().GetEndOfContent(), -1);
SwPaM aPaM(aIdx, aIdx, -1);
aPaM.GetPoint()->nContent += 5;
aPaM.GetMark()->nContent += 6;
m_pDoc->DeleteAndJoin(aPaM);
}
pBM1 = pMarksAccess->findMark("Para1")->get();
pBM2 = pMarksAccess->findMark("Para2")->get();
pBM3 = pMarksAccess->findMark("Para3")->get();
CPPUNIT_ASSERT_EQUAL(0, pBM1->GetMarkStart().nContent.GetIndex());
CPPUNIT_ASSERT_EQUAL(6, pBM1->GetMarkEnd().nContent.GetIndex());
CPPUNIT_ASSERT_EQUAL(
pBM1->GetMarkStart().nNode.GetIndex(),
pBM1->GetMarkEnd().nNode.GetIndex());
CPPUNIT_ASSERT_EQUAL(6, pBM2->GetMarkStart().nContent.GetIndex());
CPPUNIT_ASSERT_EQUAL(12, pBM2->GetMarkEnd().nContent.GetIndex());
CPPUNIT_ASSERT_EQUAL(
pBM2->GetMarkStart().nNode.GetIndex(),
pBM2->GetMarkEnd().nNode.GetIndex());
CPPUNIT_ASSERT_EQUAL(12, pBM3->GetMarkStart().nContent.GetIndex());
CPPUNIT_ASSERT_EQUAL(23, pBM3->GetMarkEnd().nContent.GetIndex());
CPPUNIT_ASSERT_EQUAL(
pBM3->GetMarkStart().nNode.GetIndex(),
pBM3->GetMarkEnd().nNode.GetIndex());
CPPUNIT_ASSERT_EQUAL(
pBM1->GetMarkStart().nNode.GetIndex(),
pBM2->GetMarkStart().nNode.GetIndex());
CPPUNIT_ASSERT_EQUAL(
pBM2->GetMarkStart().nNode.GetIndex(),
pBM3->GetMarkStart().nNode.GetIndex());
// split the paragraph
{
SwNodeIndex aIdx(m_pDoc->GetNodes().GetEndOfContent(), -1);
SwPosition aPos(aIdx);
aPos.nContent += 8;
m_pDoc->SplitNode(aPos, false);
}
pBM1 = pMarksAccess->findMark("Para1")->get();
pBM2 = pMarksAccess->findMark("Para2")->get();
pBM3 = pMarksAccess->findMark("Para3")->get();
CPPUNIT_ASSERT_EQUAL(0, pBM1->GetMarkStart().nContent.GetIndex());
CPPUNIT_ASSERT_EQUAL(6, pBM1->GetMarkEnd().nContent.GetIndex());
CPPUNIT_ASSERT_EQUAL(
pBM1->GetMarkStart().nNode.GetIndex(),
pBM1->GetMarkEnd().nNode.GetIndex());
CPPUNIT_ASSERT_EQUAL(6, pBM2->GetMarkStart().nContent.GetIndex());
CPPUNIT_ASSERT_EQUAL(4, pBM2->GetMarkEnd().nContent.GetIndex());
CPPUNIT_ASSERT_EQUAL(
pBM2->GetMarkStart().nNode.GetIndex()+1,
pBM2->GetMarkEnd().nNode.GetIndex());
CPPUNIT_ASSERT_EQUAL(4, pBM3->GetMarkStart().nContent.GetIndex());
CPPUNIT_ASSERT_EQUAL(15, pBM3->GetMarkEnd().nContent.GetIndex());
CPPUNIT_ASSERT_EQUAL(
pBM3->GetMarkStart().nNode.GetIndex(),
pBM3->GetMarkEnd().nNode.GetIndex());
CPPUNIT_ASSERT_EQUAL(
pBM1->GetMarkStart().nNode.GetIndex(),
pBM2->GetMarkStart().nNode.GetIndex());
CPPUNIT_ASSERT_EQUAL(
pBM2->GetMarkEnd().nNode.GetIndex(),
pBM3->GetMarkEnd().nNode.GetIndex());
}
void SwDocTest::setUp() void SwDocTest::setUp()
{ {
BootstrapFixture::setUp(); BootstrapFixture::setUp();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment