| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "base/android/jni_array.h" | 5 #include "base/android/jni_array.h" |
| 6 | 6 |
| 7 #include <stdint.h> |
| 8 |
| 9 #include <limits> |
| 10 |
| 7 #include "base/android/jni_android.h" | 11 #include "base/android/jni_android.h" |
| 8 #include "base/android/scoped_java_ref.h" | 12 #include "base/android/scoped_java_ref.h" |
| 9 #include "testing/gtest/include/gtest/gtest.h" | 13 #include "testing/gtest/include/gtest/gtest.h" |
| 10 | 14 |
| 11 namespace base { | 15 namespace base { |
| 12 namespace android { | 16 namespace android { |
| 13 | 17 |
| 14 TEST(JniArray, BasicConversions) { | 18 TEST(JniArray, BasicConversions) { |
| 15 const uint8_t kBytes[] = {0, 1, 2, 3}; | 19 const uint8_t kBytes[] = {0, 1, 2, 3}; |
| 16 const size_t kLen = arraysize(kBytes); | 20 const size_t kLen = arraysize(kBytes); |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 50 ASSERT_EQ(static_cast<jsize>(len), java_array_len); | 54 ASSERT_EQ(static_cast<jsize>(len), java_array_len); |
| 51 | 55 |
| 52 jint value; | 56 jint value; |
| 53 for (size_t i = 0; i < len; ++i) { | 57 for (size_t i = 0; i < len; ++i) { |
| 54 env->GetIntArrayRegion(ints.obj(), i, 1, &value); | 58 env->GetIntArrayRegion(ints.obj(), i, 1, &value); |
| 55 ASSERT_EQ(int_array[i], value); | 59 ASSERT_EQ(int_array[i], value); |
| 56 } | 60 } |
| 57 } | 61 } |
| 58 | 62 |
| 59 TEST(JniArray, IntConversions) { | 63 TEST(JniArray, IntConversions) { |
| 60 const int kInts[] = { 0, 1, -1, kint32min, kint32max}; | 64 const int kInts[] = {0, 1, -1, std::numeric_limits<int32_t>::min(), |
| 65 std::numeric_limits<int32_t>::max()}; |
| 61 const size_t kLen = arraysize(kInts); | 66 const size_t kLen = arraysize(kInts); |
| 62 | 67 |
| 63 JNIEnv* env = AttachCurrentThread(); | 68 JNIEnv* env = AttachCurrentThread(); |
| 64 CheckIntConversion(env, kInts, kLen, ToJavaIntArray(env, kInts, kLen)); | 69 CheckIntConversion(env, kInts, kLen, ToJavaIntArray(env, kInts, kLen)); |
| 65 | 70 |
| 66 const std::vector<int> vec(kInts, kInts + kLen); | 71 const std::vector<int> vec(kInts, kInts + kLen); |
| 67 CheckIntConversion(env, kInts, kLen, ToJavaIntArray(env, vec)); | 72 CheckIntConversion(env, kInts, kLen, ToJavaIntArray(env, vec)); |
| 68 } | 73 } |
| 69 | 74 |
| 70 void CheckLongConversion(JNIEnv* env, | 75 void CheckLongConversion(JNIEnv* env, |
| (...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 251 | 256 |
| 252 // Create an int[][] object. | 257 // Create an int[][] object. |
| 253 ScopedJavaLocalRef<jclass> int_array_clazz(env, env->FindClass("[I")); | 258 ScopedJavaLocalRef<jclass> int_array_clazz(env, env->FindClass("[I")); |
| 254 ASSERT_TRUE(int_array_clazz.obj()); | 259 ASSERT_TRUE(int_array_clazz.obj()); |
| 255 | 260 |
| 256 ScopedJavaLocalRef<jobjectArray> array( | 261 ScopedJavaLocalRef<jobjectArray> array( |
| 257 env, env->NewObjectArray(kNumItems, int_array_clazz.obj(), nullptr)); | 262 env, env->NewObjectArray(kNumItems, int_array_clazz.obj(), nullptr)); |
| 258 ASSERT_TRUE(array.obj()); | 263 ASSERT_TRUE(array.obj()); |
| 259 | 264 |
| 260 // Populate int[][] object. | 265 // Populate int[][] object. |
| 261 const int kInts0[] = {0, 1, -1, kint32min, kint32max}; | 266 const int kInts0[] = {0, 1, -1, std::numeric_limits<int32_t>::min(), |
| 267 std::numeric_limits<int32_t>::max()}; |
| 262 const size_t kLen0 = arraysize(kInts0); | 268 const size_t kLen0 = arraysize(kInts0); |
| 263 ScopedJavaLocalRef<jintArray> int_array0 = ToJavaIntArray(env, kInts0, kLen0); | 269 ScopedJavaLocalRef<jintArray> int_array0 = ToJavaIntArray(env, kInts0, kLen0); |
| 264 env->SetObjectArrayElement(array.obj(), 0, int_array0.obj()); | 270 env->SetObjectArrayElement(array.obj(), 0, int_array0.obj()); |
| 265 | 271 |
| 266 const int kInts1[] = {3, 4, 5}; | 272 const int kInts1[] = {3, 4, 5}; |
| 267 const size_t kLen1 = arraysize(kInts1); | 273 const size_t kLen1 = arraysize(kInts1); |
| 268 ScopedJavaLocalRef<jintArray> int_array1 = ToJavaIntArray(env, kInts1, kLen1); | 274 ScopedJavaLocalRef<jintArray> int_array1 = ToJavaIntArray(env, kInts1, kLen1); |
| 269 env->SetObjectArrayElement(array.obj(), 1, int_array1.obj()); | 275 env->SetObjectArrayElement(array.obj(), 1, int_array1.obj()); |
| 270 | 276 |
| 271 const int kInts2[] = {}; | 277 const int kInts2[] = {}; |
| (...skipping 12 matching lines...) Expand all Loading... |
| 284 | 290 |
| 285 EXPECT_EQ(kNumItems, out.size()); | 291 EXPECT_EQ(kNumItems, out.size()); |
| 286 CheckIntArrayConversion(env, int_array0, out[0], kLen0); | 292 CheckIntArrayConversion(env, int_array0, out[0], kLen0); |
| 287 CheckIntArrayConversion(env, int_array1, out[1], kLen1); | 293 CheckIntArrayConversion(env, int_array1, out[1], kLen1); |
| 288 CheckIntArrayConversion(env, int_array2, out[2], kLen2); | 294 CheckIntArrayConversion(env, int_array2, out[2], kLen2); |
| 289 CheckIntArrayConversion(env, int_array3, out[3], kLen3); | 295 CheckIntArrayConversion(env, int_array3, out[3], kLen3); |
| 290 } | 296 } |
| 291 | 297 |
| 292 } // namespace android | 298 } // namespace android |
| 293 } // namespace base | 299 } // namespace base |
| OLD | NEW |