summaryrefslogtreecommitdiff
path: root/svl/qa
diff options
context:
space:
mode:
authorKohei Yoshida <kohei.yoshida@collabora.com>2013-10-02 16:35:41 -0400
committerKohei Yoshida <kohei.yoshida@collabora.com>2013-10-04 19:15:23 -0400
commit5f5876e5c395808006daef3456a961d9e6756791 (patch)
tree4695bbda72a078015f616ed36f54d1e923e3f940 /svl/qa
parent46ca6ab1fe69a29b75c3b9c3a04af27b5af63fd3 (diff)
Add purge() method to purge unreferenced strings from the pool.
But this code needs more work. Change-Id: I538eebf5eb1738a2cfeebc22052b3d5db6001b6b
Diffstat (limited to 'svl/qa')
-rw-r--r--svl/qa/unit/svl.cxx22
1 files changed, 21 insertions, 1 deletions
diff --git a/svl/qa/unit/svl.cxx b/svl/qa/unit/svl.cxx
index 58882bb734c2..26cad83d96b4 100644
--- a/svl/qa/unit/svl.cxx
+++ b/svl/qa/unit/svl.cxx
@@ -36,7 +36,7 @@
#include "svl/stringpool.hxx"
#include "unotools/syslocale.hxx"
-#define DEBUG_UNIT_TEST 0
+#define DEBUG_UNIT_TEST 1
#if DEBUG_UNIT_TEST
#include <iostream>
@@ -68,12 +68,14 @@ public:
void testNumberFormat();
void testStringPool();
+ void testStringPoolPurge();
void testFdo60915();
void testI116701();
CPPUNIT_TEST_SUITE(Test);
CPPUNIT_TEST(testNumberFormat);
CPPUNIT_TEST(testStringPool);
+// CPPUNIT_TEST(testStringPoolPurge); // FIXME: String pool's life cycle needs more work.
CPPUNIT_TEST(testFdo60915);
CPPUNIT_TEST(testI116701);
CPPUNIT_TEST_SUITE_END();
@@ -335,6 +337,24 @@ void Test::testStringPool()
CPPUNIT_ASSERT_EQUAL(si1, si2);
}
+void Test::testStringPoolPurge()
+{
+ SvtSysLocale aSysLocale;
+ svl::StringPool aPool(aSysLocale.GetCharClassPtr());
+ aPool.intern("Andy");
+ aPool.intern("andy");
+ aPool.intern("ANDY");
+
+ CPPUNIT_ASSERT_MESSAGE("Wrong string count.", aPool.getCount() == 3);
+ CPPUNIT_ASSERT_MESSAGE("Wrong case insensitive string count.", aPool.getCountIgnoreCase() == 1);
+
+ // Since no string objects referencing the pooled strings exist, purging
+ // the pool should empty it.
+ aPool.purge();
+ CPPUNIT_ASSERT_MESSAGE("Wrong string count.", aPool.getCount() == 0);
+ CPPUNIT_ASSERT_MESSAGE("Wrong case insensitive string count.", aPool.getCountIgnoreCase() == 0);
+}
+
void Test::checkPreviewString(SvNumberFormatter& aFormatter,
const OUString& sCode,
double fPreviewNumber,