tests: Add scim::IConvert test case 31/245831/2
authorJihoon Kim <jihoon48.kim@samsung.com>
Fri, 16 Oct 2020 09:18:56 +0000 (18:18 +0900)
committerJihoon Kim <jihoon48.kim@samsung.com>
Tue, 27 Oct 2020 03:17:55 +0000 (12:17 +0900)
Change-Id: I51434568a127de2f9d097ca928cb9f325e786dca
Signed-off-by: Jihoon Kim <jihoon48.kim@samsung.com>
ism/tests/Makefile.am
ism/tests/iconvert_tests.cpp [new file with mode: 0644]

index 5b74784..c921ef8 100644 (file)
@@ -26,7 +26,7 @@ ISF_TESTS = isf-tests
 appexecdir            = /usr/bin/
 appexec_PROGRAMS      = $(ISF_TESTS)
 
-isf_tests_SOURCES  = main.cpp ecore_imf_tests.cpp
+isf_tests_SOURCES  = main.cpp ecore_imf_tests.cpp iconvert_tests.cpp
 
 isf_tests_CXXFLAGS = @GMOCK_CFLAGS@ \
                      @ECORE_IMF_CFLAGS@ \
@@ -42,4 +42,4 @@ isf_tests_LDFLAGS  = @GMOCK_LIBS@ -rpath $(libdir)\
                      @VCONF_LIBS@ \
                      -pie
 
-isf_tests_LDADD    =
+isf_tests_LDADD    = $(top_builddir)/ism/src/libscim_imengine.la
diff --git a/ism/tests/iconvert_tests.cpp b/ism/tests/iconvert_tests.cpp
new file mode 100644 (file)
index 0000000..8de337a
--- /dev/null
@@ -0,0 +1,103 @@
+/*
+ * ISF(Input Service Framework)
+ *
+ * ISF is based on SCIM 1.4.7 and extended for supporting more mobile fitable.
+ * Copyright (c) 2012-2015 Samsung Electronics Co., Ltd.
+ *
+ * Contact: Jihoon Kim <jihoon48.kim@samsung.com>, Inhong Han <inhong1.han@samsung.com>
+ *
+ * This library is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Lesser General Public License as published by the
+ * Free Software Foundation; either version 2.1 of the License, or (at your option)
+ * any later version.
+ *
+ * This library is distributed in the hope that it will be useful, but WITHOUT ANY
+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+ * License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; if not, write to the Free Software Foundation, Inc., 51
+ * Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ */
+
+#define Uses_SCIM_ICONV
+
+#include <gtest/gtest.h>
+#include <cstring>
+#include "scim.h"
+
+namespace {
+
+static const char * utf8_strings [] =
+{
+    "Hello World! 世界你好!アカハザカダハフカハサダフワエロイアカサダジフハワエハラカジハサダフ",
+    "Hello World! 世界你好!世界你好!世界你好!世界你好!",
+    "Hello World! 世界你好!世界你好!世界你好!",
+    "Hello World! 世界你好!世界你好!",
+    "Hello World! 世界你好!",
+    "Japanese いあえらかそいだはふあ",
+    NULL
+};
+
+class IConvertTest : public testing::Test {
+    public:
+        virtual void SetUp() {
+        }
+        virtual void TearDown() {
+        }
+};
+
+TEST_F(IConvertTest, convert)
+{
+    bool result = true;
+
+    scim::IConvert to_utf8 ("UTF-8");
+    scim::IConvert to_gb18030 ("GB18030");
+    scim::IConvert to_eucjp ("EUC-JP");
+
+    scim::String mbs, utf;
+    scim::WideString wcs;
+
+    const char **ptr = utf8_strings;
+    while (*ptr) {
+        std::cout << "Convert: " << *ptr << "\n";
+
+        if (to_utf8.convert (wcs, *ptr, std::strlen (*ptr))) {
+            std::cout << "--> UTF-8 OK! ";
+            if (to_gb18030.convert (mbs, wcs) && to_gb18030.convert (wcs, mbs)) {
+                std::cout << "--> GB18030 OK!\n";
+                std::cout << "  GB18030: " << mbs << "\n";
+            } else {
+                std::cout << "--> GB18030 Failed!\n";
+                result = false;
+                break;
+            }
+            if (to_eucjp.convert (mbs, wcs) && to_eucjp.convert (wcs, mbs)) {
+                std::cout << "--> EUC-JP OK!\n";
+                std::cout << "  EUC-JP: " << mbs << "\n";
+            } else {
+                std::cout << "--> EUC-JP Failed!\n";
+                result = false;
+                break;
+            }
+        } else {
+            std::cout << "--> UTF-8 Failed!\n";
+            result = false;
+            break;
+        }
+        if (to_utf8.test_convert (*ptr, std::strlen (*ptr))) {
+            std::cout << "Test UTF-8 OK!\n";
+        } else {
+            std::cout << "Test UTF-8 Failed!\n";
+            result = false;
+            break;
+        }
+        ++ptr;
+    }
+
+    EXPECT_EQ(result, true);
+}
+
+} // namespace