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 <stddef.h> | 7 #include <stddef.h> |
8 #include <stdint.h> | 8 #include <stdint.h> |
9 | 9 |
10 #include <limits> | 10 #include <limits> |
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
106 ScopedJavaLocalRef<jintArray> jints, | 106 ScopedJavaLocalRef<jintArray> jints, |
107 std::vector<int> int_vector, | 107 std::vector<int> int_vector, |
108 const size_t len) { | 108 const size_t len) { |
109 jint value; | 109 jint value; |
110 for (size_t i = 0; i < len; ++i) { | 110 for (size_t i = 0; i < len; ++i) { |
111 env->GetIntArrayRegion(jints.obj(), i, 1, &value); | 111 env->GetIntArrayRegion(jints.obj(), i, 1, &value); |
112 ASSERT_EQ(int_vector[i], value); | 112 ASSERT_EQ(int_vector[i], value); |
113 } | 113 } |
114 } | 114 } |
115 | 115 |
| 116 void CheckFloatConversion( |
| 117 JNIEnv* env, |
| 118 const float* float_array, |
| 119 const size_t len, |
| 120 const ScopedJavaLocalRef<jfloatArray>& floats) { |
| 121 ASSERT_TRUE(floats.obj()); |
| 122 |
| 123 jsize java_array_len = env->GetArrayLength(floats.obj()); |
| 124 ASSERT_EQ(static_cast<jsize>(len), java_array_len); |
| 125 |
| 126 jfloat value; |
| 127 for (size_t i = 0; i < len; ++i) { |
| 128 env->GetFloatArrayRegion(floats.obj(), i, 1, &value); |
| 129 ASSERT_EQ(float_array[i], value); |
| 130 } |
| 131 } |
| 132 |
| 133 TEST(JniArray, FloatConversions) { |
| 134 const float kFloats[] = { 0.0f, 1.0f, -10.0f}; |
| 135 const size_t kLen = arraysize(kFloats); |
| 136 |
| 137 JNIEnv* env = AttachCurrentThread(); |
| 138 CheckFloatConversion(env, kFloats, kLen, |
| 139 ToJavaFloatArray(env, kFloats, kLen)); |
| 140 |
| 141 const std::vector<float> vec(kFloats, kFloats + kLen); |
| 142 CheckFloatConversion(env, kFloats, kLen, ToJavaFloatArray(env, vec)); |
| 143 } |
| 144 |
116 TEST(JniArray, JavaIntArrayToIntVector) { | 145 TEST(JniArray, JavaIntArrayToIntVector) { |
117 const int kInts[] = {0, 1, -1}; | 146 const int kInts[] = {0, 1, -1}; |
118 const size_t kLen = arraysize(kInts); | 147 const size_t kLen = arraysize(kInts); |
119 | 148 |
120 JNIEnv* env = AttachCurrentThread(); | 149 JNIEnv* env = AttachCurrentThread(); |
121 ScopedJavaLocalRef<jintArray> jints(env, env->NewIntArray(kLen)); | 150 ScopedJavaLocalRef<jintArray> jints(env, env->NewIntArray(kLen)); |
122 ASSERT_TRUE(jints.obj()); | 151 ASSERT_TRUE(jints.obj()); |
123 | 152 |
124 for (size_t i = 0; i < kLen; ++i) { | 153 for (size_t i = 0; i < kLen; ++i) { |
125 jint j = static_cast<jint>(kInts[i]); | 154 jint j = static_cast<jint>(kInts[i]); |
(...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
293 | 322 |
294 EXPECT_EQ(kNumItems, out.size()); | 323 EXPECT_EQ(kNumItems, out.size()); |
295 CheckIntArrayConversion(env, int_array0, out[0], kLen0); | 324 CheckIntArrayConversion(env, int_array0, out[0], kLen0); |
296 CheckIntArrayConversion(env, int_array1, out[1], kLen1); | 325 CheckIntArrayConversion(env, int_array1, out[1], kLen1); |
297 CheckIntArrayConversion(env, int_array2, out[2], kLen2); | 326 CheckIntArrayConversion(env, int_array2, out[2], kLen2); |
298 CheckIntArrayConversion(env, int_array3, out[3], kLen3); | 327 CheckIntArrayConversion(env, int_array3, out[3], kLen3); |
299 } | 328 } |
300 | 329 |
301 } // namespace android | 330 } // namespace android |
302 } // namespace base | 331 } // namespace base |
OLD | NEW |