summaryrefslogtreecommitdiff
path: root/svl/qa
diff options
context:
space:
mode:
authorTobias Lippert <drtl@fastmail.fm>2014-07-15 21:05:20 +0200
committerCaolán McNamara <caolanm@redhat.com>2014-07-23 11:33:14 +0000
commit9782ba7f1b7f4d6cc11045b6c953deb6f17f321d (patch)
tree169715724ebc5153d00f65ca825b60ecfe214cf2 /svl/qa
parent8c6e900e4724dc7c800047099139c080f5f5d564 (diff)
fdo#76754 Add return first to IndexedStyleSheets to speed up ods writing
Change-Id: I6fc9fe8ce78ad9cc1a7c2fe3e13ed38ce468ce6c Reviewed-on: https://gerrit.libreoffice.org/10347 Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'svl/qa')
-rw-r--r--svl/qa/unit/items/test_IndexedStyleSheets.cxx31
1 files changed, 31 insertions, 0 deletions
diff --git a/svl/qa/unit/items/test_IndexedStyleSheets.cxx b/svl/qa/unit/items/test_IndexedStyleSheets.cxx
index 99b816f2c781..25944e29cc94 100644
--- a/svl/qa/unit/items/test_IndexedStyleSheets.cxx
+++ b/svl/qa/unit/items/test_IndexedStyleSheets.cxx
@@ -27,6 +27,13 @@ class MockedStyleSheet : public SfxStyleSheetBase
};
+struct DummyPredicate : public StyleSheetPredicate {
+ bool Check(const SfxStyleSheetBase& styleSheet) SAL_OVERRIDE {
+ (void)styleSheet; // fix compiler warning
+ return true;
+ }
+};
+
class IndexedStyleSheetsTest : public CppUnit::TestFixture
{
void InstantiationWorks();
@@ -37,6 +44,7 @@ class IndexedStyleSheetsTest : public CppUnit::TestFixture
void StyleSheetsCanBeRetrievedByTheirName();
void KnowsThatItStoresAStyleSheet();
void PositionCanBeQueriedByFamily();
+ void OnlyOneStyleSheetIsReturnedWhenReturnFirstIsUsed();
// Adds code needed to register the test suite
CPPUNIT_TEST_SUITE(IndexedStyleSheetsTest);
@@ -49,6 +57,7 @@ class IndexedStyleSheetsTest : public CppUnit::TestFixture
CPPUNIT_TEST(StyleSheetsCanBeRetrievedByTheirName);
CPPUNIT_TEST(KnowsThatItStoresAStyleSheet);
CPPUNIT_TEST(PositionCanBeQueriedByFamily);
+ CPPUNIT_TEST(OnlyOneStyleSheetIsReturnedWhenReturnFirstIsUsed);
// End of test suite definition
CPPUNIT_TEST_SUITE_END();
@@ -174,7 +183,29 @@ void IndexedStyleSheetsTest::PositionCanBeQueriedByFamily()
const std::vector<unsigned>& w = iss.GetStyleSheetPositionsByFamily(SFX_STYLE_FAMILY_ALL);
CPPUNIT_ASSERT_EQUAL_MESSAGE("Wildcard works for family queries.", static_cast<size_t>(3), w.size());
+}
+
+void IndexedStyleSheetsTest::OnlyOneStyleSheetIsReturnedWhenReturnFirstIsUsed()
+{
+ rtl::OUString name("name1");
+ rtl::Reference<SfxStyleSheetBase> sheet1(new MockedStyleSheet(name, SFX_STYLE_FAMILY_CHAR));
+ rtl::Reference<SfxStyleSheetBase> sheet2(new MockedStyleSheet(name, SFX_STYLE_FAMILY_PARA));
+ rtl::Reference<SfxStyleSheetBase> sheet3(new MockedStyleSheet(name, SFX_STYLE_FAMILY_CHAR));
+
+ IndexedStyleSheets iss;
+ iss.AddStyleSheet(sheet1);
+ iss.AddStyleSheet(sheet2);
+ iss.AddStyleSheet(sheet3);
+
+ DummyPredicate predicate; // returns always true, i.e., all style sheets match the predicate.
+
+ std::vector<unsigned> v = iss.FindPositionsByNameAndPredicate(name, predicate,
+ IndexedStyleSheets::RETURN_FIRST);
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("Only one style sheet is returned.", static_cast<size_t>(1), v.size());
+ std::vector<unsigned> w = iss.FindPositionsByNameAndPredicate(name, predicate,
+ IndexedStyleSheets::RETURN_ALL);
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("All style sheets are returned.", static_cast<size_t>(1), v.size());
}
CPPUNIT_TEST_SUITE_REGISTRATION(IndexedStyleSheetsTest);