summaryrefslogtreecommitdiff
path: root/editeng/qa/unit/core-test.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'editeng/qa/unit/core-test.cxx')
-rw-r--r--editeng/qa/unit/core-test.cxx111
1 files changed, 111 insertions, 0 deletions
diff --git a/editeng/qa/unit/core-test.cxx b/editeng/qa/unit/core-test.cxx
index 2e122cc59c1d..195fae1bcb4a 100644
--- a/editeng/qa/unit/core-test.cxx
+++ b/editeng/qa/unit/core-test.cxx
@@ -33,6 +33,7 @@
#include <svl/srchitem.hxx>
#include <editeng/fontitem.hxx>
#include <editeng/fhgtitem.hxx>
+#include <editeng/adjustitem.hxx>
#include <com/sun/star/text/textfield/Type.hpp>
@@ -97,6 +98,9 @@ public:
void testTransliterate();
+ /// Test HoriAlignIgnoreTrailingWhitespace compatibility flag
+ void testHoriAlignIgnoreTrailingWhitespace();
+
DECL_STATIC_LINK( Test, CalcFieldValueHdl, EditFieldInfo*, void );
CPPUNIT_TEST_SUITE(Test);
@@ -117,6 +121,7 @@ public:
CPPUNIT_TEST(testSectionAttributes);
CPPUNIT_TEST(testLargeParaCopyPaste);
CPPUNIT_TEST(testTransliterate);
+ CPPUNIT_TEST(testHoriAlignIgnoreTrailingWhitespace);
CPPUNIT_TEST_SUITE_END();
private:
@@ -1848,6 +1853,112 @@ void Test::testTransliterate()
CPPUNIT_ASSERT_EQUAL(aExpected, aEditEngine.GetText());
}
+void Test::testHoriAlignIgnoreTrailingWhitespace()
+{
+ // Create EditEngine's instance
+ EditEngine aEditEngine(mpItemPool);
+
+ // Get EditDoc for current EditEngine's instance
+ EditDoc &rDoc = aEditEngine.GetEditDoc();
+
+ // Initially no text should be there
+ CPPUNIT_ASSERT_EQUAL(sal_uLong(0), rDoc.GetTextLen());
+ CPPUNIT_ASSERT_EQUAL(OUString(), rDoc.GetParaAsString(sal_Int32(0)));
+
+ // Set initial text
+ OUString aText = "Some text ";
+ sal_Int32 aTextLen = aText.getLength();
+ aEditEngine.SetText(aText);
+
+ // Assert changes - text insertion
+ CPPUNIT_ASSERT_EQUAL(static_cast<sal_uLong>(aTextLen), rDoc.GetTextLen());
+ CPPUNIT_ASSERT_EQUAL(aText, rDoc.GetParaAsString(static_cast<sal_Int32>(0)));
+
+ // First test case: center alignment with compatibility option enabled
+ {
+ aEditEngine.SetHoriAlignIgnoreTrailingWhitespace(true);
+ std::unique_ptr<SfxItemSet> pSet(new SfxItemSet(aEditEngine.GetEmptyItemSet()));
+ pSet->Put(SvxAdjustItem( SvxAdjust::Center, EE_PARA_JUST ));
+ CPPUNIT_ASSERT_EQUAL(static_cast<sal_uInt16>(1), pSet->Count());
+
+ // Select all paragraphs and apply changes
+ ESelection aSelection(0, 0, 0, aTextLen);
+ aEditEngine.QuickSetAttribs(*pSet, aSelection);
+
+ // Use a one line paragraph
+ aEditEngine.SetPaperSize(Size(10000, 6000));
+ CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(1), aEditEngine.GetLineCount(0));
+
+ // Check horizontal position
+ ParaPortion* pParaPortion = aEditEngine.GetParaPortions()[0];
+ EditLine* pLine = &pParaPortion->GetLines()[0];
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(static_cast<long>(4527), pLine->GetStartPosX(), 10);
+ }
+
+ // Second test case: center alignment with compatibility option disabled
+ {
+ aEditEngine.SetHoriAlignIgnoreTrailingWhitespace(false);
+ std::unique_ptr<SfxItemSet> pSet(new SfxItemSet(aEditEngine.GetEmptyItemSet()));
+ pSet->Put(SvxAdjustItem( SvxAdjust::Center, EE_PARA_JUST ));
+ CPPUNIT_ASSERT_EQUAL(static_cast<sal_uInt16>(1), pSet->Count());
+
+ // Select all paragraphs and apply changes
+ ESelection aSelection(0, 0, 0, aTextLen);
+ aEditEngine.QuickSetAttribs(*pSet, aSelection);
+
+ // Use a one line paragraph
+ aEditEngine.SetPaperSize(Size(10000, 6000));
+ CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(1), aEditEngine.GetLineCount(0));
+
+ // Check horizontal position
+ ParaPortion* pParaPortion = aEditEngine.GetParaPortions()[0];
+ EditLine* pLine = &pParaPortion->GetLines()[0];
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(static_cast<long>(4407), pLine->GetStartPosX(), 10);
+ }
+
+ // Third test case: right alignment with compatibility option enabled
+ {
+ aEditEngine.SetHoriAlignIgnoreTrailingWhitespace(true);
+ std::unique_ptr<SfxItemSet> pSet(new SfxItemSet(aEditEngine.GetEmptyItemSet()));
+ pSet->Put(SvxAdjustItem( SvxAdjust::Right, EE_PARA_JUST ));
+ CPPUNIT_ASSERT_EQUAL(static_cast<sal_uInt16>(1), pSet->Count());
+
+ // Select all paragraphs and apply changes
+ ESelection aSelection(0, 0, 0, aTextLen);
+ aEditEngine.QuickSetAttribs(*pSet, aSelection);
+
+ // Use a one line paragraph
+ aEditEngine.SetPaperSize(Size(10000, 6000));
+ CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(1), aEditEngine.GetLineCount(0));
+
+ // Check horizontal position
+ ParaPortion* pParaPortion = aEditEngine.GetParaPortions()[0];
+ EditLine* pLine = &pParaPortion->GetLines()[0];
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(static_cast<long>(9054), pLine->GetStartPosX(), 10);
+ }
+
+ // Fourth test case: right alignment with compatibility option disabled
+ {
+ aEditEngine.SetHoriAlignIgnoreTrailingWhitespace(false);
+ std::unique_ptr<SfxItemSet> pSet(new SfxItemSet(aEditEngine.GetEmptyItemSet()));
+ pSet->Put(SvxAdjustItem( SvxAdjust::Right, EE_PARA_JUST ));
+ CPPUNIT_ASSERT_EQUAL(static_cast<sal_uInt16>(1), pSet->Count());
+
+ // Select all paragraphs and apply changes
+ ESelection aSelection(0, 0, 0, aTextLen);
+ aEditEngine.QuickSetAttribs(*pSet, aSelection);
+
+ // Use a one line paragraph
+ aEditEngine.SetPaperSize(Size(10000, 6000));
+ CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(1), aEditEngine.GetLineCount(0));
+
+ // Check horizontal position
+ ParaPortion* pParaPortion = aEditEngine.GetParaPortions()[0];
+ EditLine* pLine = &pParaPortion->GetLines()[0];
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(static_cast<long>(8815), pLine->GetStartPosX(), 10);
+ }
+}
+
CPPUNIT_TEST_SUITE_REGISTRATION(Test);
}