--- /dev/null
+/*
+ * 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