1 // Copyright 2012 The Chromium Authors
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "base/android/jni_string.h"
6
7 #include "base/android/jni_android.h"
8 #include "base/android/scoped_java_ref.h"
9 #include "base/strings/utf_string_conversions.h"
10 #include "testing/gtest/include/gtest/gtest.h"
11
12 namespace base {
13 namespace android {
14
TEST(JniString,FastConversionsUTF8)15 TEST(JniString, FastConversionsUTF8) {
16 const std::string kSimpleString = "SimpleTest8";
17 JNIEnv* env = AttachCurrentThread();
18 std::string result =
19 ConvertJavaStringToUTF8(ConvertUTF8ToJavaString(env, kSimpleString));
20 EXPECT_EQ(kSimpleString, result);
21 }
22
TEST(JniString,FastConversionsUTF16)23 TEST(JniString, FastConversionsUTF16) {
24 const std::u16string kSimpleString = u"SimpleTest16";
25 JNIEnv* env = AttachCurrentThread();
26 std::u16string result =
27 ConvertJavaStringToUTF16(ConvertUTF16ToJavaString(env, kSimpleString));
28 EXPECT_EQ(kSimpleString, result);
29 }
30
TEST(JniString,SlowConversionsUTF8)31 TEST(JniString, SlowConversionsUTF8) {
32 constexpr auto length = 2048;
33 std::array<char, length> kLongArray;
34 for (int i = 0; i < length; i++) {
35 kLongArray[i] = 'a';
36 }
37 std::string kLongString;
38 kLongString.assign(reinterpret_cast<const char*>(kLongArray.data()),
39 static_cast<size_t>(length));
40 JNIEnv* env = AttachCurrentThread();
41 std::string result =
42 ConvertJavaStringToUTF8(ConvertUTF8ToJavaString(env, kLongString));
43 EXPECT_EQ(kLongString, result);
44 }
45
TEST(JniString,SlowConversionsUTF16)46 TEST(JniString, SlowConversionsUTF16) {
47 constexpr auto length = 2048;
48 std::array<char16_t, length> kLongArray;
49 for (int i = 0; i < length; i++) {
50 kLongArray[i] = u'a';
51 }
52 std::u16string kLongString;
53 kLongString.assign(reinterpret_cast<const char16_t*>(kLongArray.data()),
54 static_cast<size_t>(length));
55 JNIEnv* env = AttachCurrentThread();
56 std::u16string result =
57 ConvertJavaStringToUTF16(ConvertUTF16ToJavaString(env, kLongString));
58 EXPECT_EQ(kLongString, result);
59 }
60
TEST(JniString,EmptyConversionUTF8)61 TEST(JniString, EmptyConversionUTF8) {
62 const std::string kEmptyString;
63 JNIEnv* env = AttachCurrentThread();
64 std::string result =
65 ConvertJavaStringToUTF8(ConvertUTF8ToJavaString(env, kEmptyString));
66 EXPECT_EQ(kEmptyString, result);
67 }
68
TEST(JniString,EmptyConversionUTF16)69 TEST(JniString, EmptyConversionUTF16) {
70 const std::u16string kEmptyString;
71 JNIEnv* env = AttachCurrentThread();
72 std::u16string result =
73 ConvertJavaStringToUTF16(ConvertUTF16ToJavaString(env, kEmptyString));
74 EXPECT_EQ(kEmptyString, result);
75 }
76
77 } // namespace android
78 } // namespace base
79