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

Unified 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/android/physical_web/eddystone_encoder_bridge_unittest.cc
diff --git a/chrome/browser/android/physical_web/eddystone_encoder_bridge_unittest.cc b/chrome/browser/android/physical_web/eddystone_encoder_bridge_unittest.cc
new file mode 100644
index 0000000000000000000000000000000000000000..d49033957c0bbbec54709d5fce11fdd9de2f2b0d
--- /dev/null
+++ b/chrome/browser/android/physical_web/eddystone_encoder_bridge_unittest.cc
@@ -0,0 +1,95 @@
+// Copyright 2017 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/android/physical_web/eddystone_encoder_bridge.h"
+
+#include "base/android/jni_android.h"
+#include "base/android/jni_array.h"
+#include "base/android/jni_string.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+using base::android::JavaParamRef;
+using base::android::ScopedJavaLocalRef;
+using base::android::ToJavaByteArray;
+
+class EddystoneEncoderBridgeTest : public testing::Test {
+ public:
+ EddystoneEncoderBridgeTest() {}
+ ~EddystoneEncoderBridgeTest() override {}
+
+ void SetUp() override { env_ = base::android::AttachCurrentThread(); }
+
+ void TearDown() override {}
+
+ JNIEnv* Env();
+ jstring JavaString(const std::string& value);
+ bool ScopedJavaLocalRefJByteArrayEquals(JNIEnv* env,
+ ScopedJavaLocalRef<jbyteArray> a,
+ ScopedJavaLocalRef<jbyteArray> b);
+
+ private:
+ JNIEnv* env_;
+};
+
+JNIEnv* EddystoneEncoderBridgeTest::Env() {
+ return env_;
+}
+
+jstring EddystoneEncoderBridgeTest::JavaString(const std::string& value) {
+ return base::android::ConvertUTF8ToJavaString(Env(), value).Release();
+}
+
+bool EddystoneEncoderBridgeTest::ScopedJavaLocalRefJByteArrayEquals(
+ JNIEnv* env,
+ ScopedJavaLocalRef<jbyteArray> a,
+ ScopedJavaLocalRef<jbyteArray> b) {
+ jbyteArray aByteArray = a.obj();
mattreynolds 2017/03/14 23:21:12 snake_case
iankc 2017/03/15 19:08:50 Done.
+ jbyteArray bByteArray = b.obj();
+
+ int aLen = env->GetArrayLength(aByteArray);
+ if (aLen != env->GetArrayLength(bByteArray)) {
+ return false;
+ }
+
+ jbyte* aElems = env->GetByteArrayElements(aByteArray, NULL);
+ jbyte* bElems = env->GetByteArrayElements(bByteArray, NULL);
+
+ bool cmp = memcmp(aElems, bElems, aLen) == 0;
+
+ env->ReleaseByteArrayElements(aByteArray, aElems, JNI_ABORT);
+ env->ReleaseByteArrayElements(bByteArray, bElems, JNI_ABORT);
+
+ return cmp;
+}
+
+TEST_F(EddystoneEncoderBridgeTest, testNullUrl) {
+ ScopedJavaLocalRef<jbyteArray> actual =
+ EncodeUrlForTesting(Env(), JavaParamRef<jobject>(nullptr),
+ JavaParamRef<jstring>(Env(), nullptr));
+ EXPECT_TRUE(Env()->ExceptionCheck());
+}
+
+TEST_F(EddystoneEncoderBridgeTest, testInvalidUrl) {
+ std::string url = "Wrong!";
+ ScopedJavaLocalRef<jbyteArray> actual =
+ EncodeUrlForTesting(Env(), JavaParamRef<jobject>(nullptr),
+ JavaParamRef<jstring>(Env(), JavaString(url)));
+ EXPECT_TRUE(Env()->ExceptionCheck());
+}
+
+TEST_F(EddystoneEncoderBridgeTest, testValidUrl) {
+ std::string url = "https://www.example.com/";
+ uint8_t expected_array[] = {0x01, // "https://www."
+ 0x65, 0x78, 0x61, 0x6d,
+ 0x70, 0x6c, 0x65, // "example"
+ 0x00};
+ size_t expected_array_length = sizeof(expected_array) / sizeof(uint8_t);
+ ScopedJavaLocalRef<jbyteArray> expected =
+ 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
+ ScopedJavaLocalRef<jbyteArray> actual =
+ EncodeUrlForTesting(Env(), JavaParamRef<jobject>(nullptr),
+ JavaParamRef<jstring>(Env(), JavaString(url)));
+ EXPECT_TRUE(ScopedJavaLocalRefJByteArrayEquals(Env(), expected, actual));
+ EXPECT_FALSE(Env()->ExceptionCheck());
+}

Powered by Google App Engine
This is Rietveld 408576698