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