[Libreoffice-commits] .: tools/qa tools/source

Caolán McNamara caolan at kemper.freedesktop.org
Fri Dec 17 07:11:36 PST 2010


 tools/qa/makefile.mk               |    7 +
 tools/qa/test_reversemap.cxx       |  175 +++++++++++++++++++++++++++++++++++++
 tools/source/string/reversemap.cxx |   30 ++++++
 3 files changed, 210 insertions(+), 2 deletions(-)

New commits:
commit 24a7610031176bd8199453c9a8c2671cc331387f
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Fri Dec 17 14:53:36 2010 +0000

    add cppunit tests for new getBestMSEncodingByChar

diff --git a/tools/qa/makefile.mk b/tools/qa/makefile.mk
index 7e8720e..f8cca03 100644
--- a/tools/qa/makefile.mk
+++ b/tools/qa/makefile.mk
@@ -42,8 +42,11 @@ CFLAGSCXX+=-DADAPT_EXT_STL
 CFLAGSCXX += $(CPPUNIT_CFLAGS)
 DLLPRE = # no leading "lib" on .so files
 
-SHL1TARGET = test_pathutils
-SHL1OBJS = $(SLO)$/test_pathutils.obj $(SLO)$/pathutils.obj
+SHL1TARGET=test_tools
+SHL1OBJS=\
+    $(SLO)$/pathutils.obj \
+    $(SLO)$/test_pathutils.obj \
+    $(SLO)$/test_reversemap.obj
 SHL1STDLIBS = $(TOOLSLIB) $(CPPUNITLIB) $(SALLIB)
 SHL1VERSIONMAP = version.map
 SHL1IMPLIB = i$(SHL1TARGET)
diff --git a/tools/qa/test_reversemap.cxx b/tools/qa/test_reversemap.cxx
new file mode 100644
index 0000000..3170f6c
--- /dev/null
+++ b/tools/qa/test_reversemap.cxx
@@ -0,0 +1,175 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * Version: MPL 1.1 / GPLv3+ / LGPLv3+
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Initial Developer of the Original Code is
+ *        Caolán McNamara <caolanm at redhat.com> (Red Hat, Inc.)
+ * Portions created by the Initial Developer are Copyright (C) 2010 the
+ * Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s): Caolán McNamara <caolanm at redhat.com>
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 3 or later (the "GPLv3+"), or
+ * the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"),
+ * in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable
+ * instead of those above.
+ */
+
+#include "precompiled_tools.hxx"
+#include "sal/config.h"
+
+#include "preextstl.h"
+#include <cppunit/TestFixture.h>
+#include <cppunit/extensions/HelperMacros.h>
+#include <cppunit/plugin/TestPlugIn.h>
+#include "postextstl.h"
+
+#include <rtl/ustring.hxx>
+#include <vector>
+
+#include "tools/tenccvt.hxx"
+
+//Tests for getBestMSEncodingByChar
+
+namespace
+{
+
+    class Test: public CppUnit::TestFixture
+    {
+    public:
+        void testEncoding(rtl_TextEncoding eEncoding);
+
+        void test1258();
+        void test1257();
+        void test1256();
+        void test1255();
+        void test1254();
+        void test1253();
+        void test1252();
+        void test1251();
+        void test1250();
+        void test874();
+
+        CPPUNIT_TEST_SUITE(Test);
+        CPPUNIT_TEST(test1258);
+        CPPUNIT_TEST(test1257);
+        CPPUNIT_TEST(test1256);
+        CPPUNIT_TEST(test1255);
+        CPPUNIT_TEST(test1254);
+        CPPUNIT_TEST(test1253);
+        CPPUNIT_TEST(test1252);
+        CPPUNIT_TEST(test1251);
+        CPPUNIT_TEST(test1250);
+        CPPUNIT_TEST(test874);
+        CPPUNIT_TEST_SUITE_END();
+    };
+
+    void Test::testEncoding(rtl_TextEncoding eEncoding)
+    {
+        //Taking the single byte legacy encodings, fill in all possible values
+        std::vector<sal_Char> aAllChars(255);
+        for (int i = 1; i <= 256; ++i)
+            aAllChars[i-1] = i;
+
+        //Some slots are unused, so don't map to private, just set them to 'X'
+        sal_uInt32 convertFlags = OUSTRING_TO_OSTRING_CVTFLAGS ^ RTL_TEXTTOUNICODE_FLAGS_UNDEFINED_MAPTOPRIVATE;
+        rtl::OUString sOrigText(&aAllChars[0], aAllChars.size(), eEncoding, convertFlags);
+        sOrigText = sOrigText.replace( 0xfffd, 'X' );
+
+        //Should clearly be equal
+        sal_Int32 nLength = aAllChars.size();
+        CPPUNIT_ASSERT_EQUAL(sOrigText.getLength(), nLength);
+
+        rtl::OUString sFinalText;
+
+        //Split up in chunks of the same encoding returned by
+        //getBestMSEncodingByChar, convert to it, and back
+        rtl_TextEncoding ePrevEncoding = RTL_TEXTENCODING_DONTKNOW;
+        const sal_Unicode *pStr = sOrigText.getStr();
+        sal_Int32 nChunkStart=0;
+        for (int i = 0; i < 255; ++i)
+        {
+            rtl_TextEncoding eCurrEncoding = getBestMSEncodingByChar(pStr[i]);
+            if (eCurrEncoding != ePrevEncoding)
+            {
+                rtl::OString aChunk(pStr+nChunkStart, i-nChunkStart, ePrevEncoding);
+                sFinalText += rtl::OStringToOUString(aChunk, ePrevEncoding);
+                nChunkStart = i;
+            }
+            ePrevEncoding = eCurrEncoding;
+        }
+        if (nChunkStart < 255)
+        {
+            rtl::OString aChunk(pStr+nChunkStart, 255-nChunkStart, ePrevEncoding);
+            sFinalText += rtl::OStringToOUString(aChunk, ePrevEncoding);
+        }
+
+        //Final text should be the same as original
+        CPPUNIT_ASSERT_EQUAL(sOrigText, sFinalText);
+    }
+
+    void Test::test1252()
+    {
+        testEncoding(RTL_TEXTENCODING_MS_1252);
+    }
+
+    void Test::test874()
+    {
+        testEncoding(RTL_TEXTENCODING_MS_874);
+    }
+
+    void Test::test1258()
+    {
+        testEncoding(RTL_TEXTENCODING_MS_1258);
+    }
+
+    void Test::test1257()
+    {
+        testEncoding(RTL_TEXTENCODING_MS_1257);
+    }
+
+    void Test::test1256()
+    {
+        testEncoding(RTL_TEXTENCODING_MS_1256);
+    }
+
+    void Test::test1255()
+    {
+        testEncoding(RTL_TEXTENCODING_MS_1255);
+    }
+
+    void Test::test1254()
+    {
+        testEncoding(RTL_TEXTENCODING_MS_1254);
+    }
+
+    void Test::test1253()
+    {
+        testEncoding(RTL_TEXTENCODING_MS_1253);
+    }
+
+    void Test::test1251()
+    {
+        testEncoding(RTL_TEXTENCODING_MS_1251);
+    }
+
+    void Test::test1250()
+    {
+        testEncoding(RTL_TEXTENCODING_MS_1250);
+    }
+
+    CPPUNIT_TEST_SUITE_REGISTRATION(Test);
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/tools/source/string/reversemap.cxx b/tools/source/string/reversemap.cxx
index bff45a2..9e51ffd 100644
--- a/tools/source/string/reversemap.cxx
+++ b/tools/source/string/reversemap.cxx
@@ -1,6 +1,36 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * Version: MPL 1.1 / GPLv3+ / LGPLv3+
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Initial Developer of the Original Code is
+ *        Caolán McNamara <caolanm at redhat.com> (Red Hat, Inc.)
+ * Portions created by the Initial Developer are Copyright (C) 2010 the
+ * Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s): Caolán McNamara <caolanm at redhat.com>
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 3 or later (the "GPLv3+"), or
+ * the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"),
+ * in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable
+ * instead of those above.
+ */
+
 #include <rtl/textenc.h>
 #include <tools/tenccvt.hxx>
 
 //Use reverse map generated at buildtime via bestreversemap
 
 #include "reversemap.hxx"
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */


More information about the Libreoffice-commits mailing list