Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(356)

Side by Side Diff: chrome/browser/android/physical_web/eddystone_encoder_bridge_unittest.cc

Issue 2753683002: Build a Bridge to Eddystone Encoder in Components (Closed)
Patch Set: Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2017 The Chromium Authors. All rights reserved.
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 "chrome/browser/android/physical_web/eddystone_encoder_bridge.h"
6
7 #include "base/android/jni_android.h"
8 #include "base/android/jni_array.h"
9 #include "base/android/jni_string.h"
10 #include "testing/gtest/include/gtest/gtest.h"
11
12 using base::android::JavaParamRef;
13 using base::android::ScopedJavaLocalRef;
14 using base::android::ToJavaByteArray;
15
16 class EddystoneEncoderBridgeTest : public testing::Test {
17 public:
18 EddystoneEncoderBridgeTest() {}
19 ~EddystoneEncoderBridgeTest() override {}
20
21 void SetUp() override { env_ = base::android::AttachCurrentThread(); }
22
23 void TearDown() override {}
24
25 JNIEnv* Env();
26 jstring JavaString(const std::string& value);
27 bool ScopedJavaLocalRefJByteArrayEquals(JNIEnv* env,
28 ScopedJavaLocalRef<jbyteArray> a,
29 ScopedJavaLocalRef<jbyteArray> b);
30
31 private:
32 JNIEnv* env_;
33 };
34
35 JNIEnv* EddystoneEncoderBridgeTest::Env() {
36 return env_;
37 }
38
39 jstring EddystoneEncoderBridgeTest::JavaString(const std::string& value) {
40 return base::android::ConvertUTF8ToJavaString(Env(), value).Release();
41 }
42
43 bool EddystoneEncoderBridgeTest::ScopedJavaLocalRefJByteArrayEquals(
44 JNIEnv* env,
45 ScopedJavaLocalRef<jbyteArray> a,
46 ScopedJavaLocalRef<jbyteArray> b) {
47 jbyteArray aByteArray = a.obj();
mattreynolds 2017/03/14 23:21:12 snake_case
iankc 2017/03/15 19:08:50 Done.
48 jbyteArray bByteArray = b.obj();
49
50 int aLen = env->GetArrayLength(aByteArray);
51 if (aLen != env->GetArrayLength(bByteArray)) {
52 return false;
53 }
54
55 jbyte* aElems = env->GetByteArrayElements(aByteArray, NULL);
56 jbyte* bElems = env->GetByteArrayElements(bByteArray, NULL);
57
58 bool cmp = memcmp(aElems, bElems, aLen) == 0;
59
60 env->ReleaseByteArrayElements(aByteArray, aElems, JNI_ABORT);
61 env->ReleaseByteArrayElements(bByteArray, bElems, JNI_ABORT);
62
63 return cmp;
64 }
65
66 TEST_F(EddystoneEncoderBridgeTest, testNullUrl) {
67 ScopedJavaLocalRef<jbyteArray> actual =
68 EncodeUrlForTesting(Env(), JavaParamRef<jobject>(nullptr),
69 JavaParamRef<jstring>(Env(), nullptr));
70 EXPECT_TRUE(Env()->ExceptionCheck());
71 }
72
73 TEST_F(EddystoneEncoderBridgeTest, testInvalidUrl) {
74 std::string url = "Wrong!";
75 ScopedJavaLocalRef<jbyteArray> actual =
76 EncodeUrlForTesting(Env(), JavaParamRef<jobject>(nullptr),
77 JavaParamRef<jstring>(Env(), JavaString(url)));
78 EXPECT_TRUE(Env()->ExceptionCheck());
79 }
80
81 TEST_F(EddystoneEncoderBridgeTest, testValidUrl) {
82 std::string url = "https://www.example.com/";
83 uint8_t expected_array[] = {0x01, // "https://www."
84 0x65, 0x78, 0x61, 0x6d,
85 0x70, 0x6c, 0x65, // "example"
86 0x00};
87 size_t expected_array_length = sizeof(expected_array) / sizeof(uint8_t);
88 ScopedJavaLocalRef<jbyteArray> expected =
89 ToJavaByteArray(Env(), &expected_array[0], expected_array_length);
mattreynolds 2017/03/14 23:21:12 Let's change this one too. &expected_array[0] ->
iankc 2017/03/15 19:08:50 This is an array and not a vector. I don't think t
90 ScopedJavaLocalRef<jbyteArray> actual =
91 EncodeUrlForTesting(Env(), JavaParamRef<jobject>(nullptr),
92 JavaParamRef<jstring>(Env(), JavaString(url)));
93 EXPECT_TRUE(ScopedJavaLocalRefJByteArrayEquals(Env(), expected, actual));
94 EXPECT_FALSE(Env()->ExceptionCheck());
95 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698