summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sc/qa/unit/data/ods/rich-text-cells.odsbin18264 -> 20162 bytes
-rw-r--r--sc/qa/unit/subsequent_filters-test.cxx57
2 files changed, 49 insertions, 8 deletions
diff --git a/sc/qa/unit/data/ods/rich-text-cells.ods b/sc/qa/unit/data/ods/rich-text-cells.ods
index da3a1edcada3..b039c3781999 100644
--- a/sc/qa/unit/data/ods/rich-text-cells.ods
+++ b/sc/qa/unit/data/ods/rich-text-cells.ods
Binary files differ
diff --git a/sc/qa/unit/subsequent_filters-test.cxx b/sc/qa/unit/subsequent_filters-test.cxx
index fcd6bd34a04e..219b2caf17b6 100644
--- a/sc/qa/unit/subsequent_filters-test.cxx
+++ b/sc/qa/unit/subsequent_filters-test.cxx
@@ -1688,18 +1688,20 @@ void ScFiltersTest::testRichTextContentODS()
// first line is bold.
pEditText->GetCharAttribs(0, aAttribs);
- bool bHasBold = false;
- for (it = aAttribs.begin(), itEnd = aAttribs.end(); it != itEnd; ++it)
{
- if (it->pAttr->Which() == EE_CHAR_WEIGHT)
+ bool bHasBold = false;
+ for (it = aAttribs.begin(), itEnd = aAttribs.end(); it != itEnd; ++it)
{
- const SvxWeightItem& rItem = static_cast<const SvxWeightItem&>(*it->pAttr);
- bHasBold = (rItem.GetWeight() == WEIGHT_BOLD);
- if (bHasBold)
- break;
+ if (it->pAttr->Which() == EE_CHAR_WEIGHT)
+ {
+ const SvxWeightItem& rItem = static_cast<const SvxWeightItem&>(*it->pAttr);
+ bHasBold = (rItem.GetWeight() == WEIGHT_BOLD);
+ if (bHasBold)
+ break;
+ }
}
+ CPPUNIT_ASSERT_MESSAGE("First line should be bold.", bHasBold);
}
- CPPUNIT_ASSERT_MESSAGE("First line should be bold.", bHasBold);
// second line is italic.
pEditText->GetCharAttribs(1, aAttribs);
@@ -1766,6 +1768,45 @@ void ScFiltersTest::testRichTextContentODS()
const SvxURLField* pURLData = static_cast<const SvxURLField*>(pData);
CPPUNIT_ASSERT_MESSAGE("URL is not absolute with respect to the file system.", pURLData->GetURL().startsWith("file:///"));
+ // Embedded spaces as <text:s text:c='4' />, normal text
+ aPos.IncRow();
+ CPPUNIT_ASSERT_EQUAL(CELLTYPE_STRING, pDoc->GetCellType(aPos));
+ CPPUNIT_ASSERT_EQUAL(OUString("one two"), pDoc->GetString(aPos.Col(), aPos.Row(), aPos.Tab()));
+
+ // Leading space as <text:s />.
+ aPos.IncRow();
+ CPPUNIT_ASSERT_EQUAL(CELLTYPE_STRING, pDoc->GetCellType(aPos));
+ CPPUNIT_ASSERT_EQUAL(OUString(" =3+4"), pDoc->GetString(aPos.Col(), aPos.Row(), aPos.Tab()));
+
+ // Embedded spaces with <text:s text:c='4' /> inside a <text:span>, text
+ // partly bold.
+ aPos.IncRow();
+ CPPUNIT_ASSERT_EQUAL(CELLTYPE_EDIT, pDoc->GetCellType(aPos));
+ pEditText = pDoc->GetEditText(aPos);
+ CPPUNIT_ASSERT_MESSAGE("Failed to retrieve edit text object.", pEditText);
+ CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(1), pEditText->GetParagraphCount());
+ aParaText = pEditText->GetText(0);
+ CPPUNIT_ASSERT_EQUAL(OUString("one two"), aParaText);
+ pEditText->GetCharAttribs(0, aAttribs);
+ {
+ bool bHasBold = false;
+ for (it = aAttribs.begin(), itEnd = aAttribs.end(); it != itEnd; ++it)
+ {
+ if (it->pAttr->Which() == EE_CHAR_WEIGHT)
+ {
+ const SvxWeightItem& rItem = static_cast<const SvxWeightItem&>(*it->pAttr);
+ bHasBold = (rItem.GetWeight() == WEIGHT_BOLD);
+ if (bHasBold)
+ {
+ OUString aSeg = aParaText.copy(it->nStart, it->nEnd - it->nStart);
+ CPPUNIT_ASSERT_EQUAL(OUString("e t"), aSeg);
+ break;
+ }
+ }
+ }
+ CPPUNIT_ASSERT_MESSAGE("Expected a bold sequence.", bHasBold);
+ }
+
xDocSh->DoClose();
}