xref: /aosp_15_r20/external/cronet/base/android/jni_string_unittest.cc (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
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