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

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: Rebasing Again 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
« no previous file with comments | « chrome/browser/android/physical_web/eddystone_encoder_bridge.cc ('k') | chrome/test/BUILD.gn » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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..b030195e8a5b9e0c02a97d2c8cd2be4aaa482f8a
--- /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 a_byte_array = a.obj();
+ jbyteArray b_byte_array = b.obj();
+
+ int a_len = env->GetArrayLength(a_byte_array);
+ if (a_len != env->GetArrayLength(b_byte_array)) {
+ return false;
+ }
+
+ jbyte* a_elems = env->GetByteArrayElements(a_byte_array, NULL);
+ jbyte* b_elems = env->GetByteArrayElements(b_byte_array, NULL);
+
+ bool cmp = memcmp(a_elems, b_elems, a_len) == 0;
+
+ env->ReleaseByteArrayElements(a_byte_array, a_elems, JNI_ABORT);
+ env->ReleaseByteArrayElements(b_byte_array, b_elems, 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);
+ ScopedJavaLocalRef<jbyteArray> actual =
+ EncodeUrlForTesting(Env(), JavaParamRef<jobject>(nullptr),
+ JavaParamRef<jstring>(Env(), JavaString(url)));
+ EXPECT_TRUE(ScopedJavaLocalRefJByteArrayEquals(Env(), expected, actual));
+ EXPECT_FALSE(Env()->ExceptionCheck());
+}
« no previous file with comments | « chrome/browser/android/physical_web/eddystone_encoder_bridge.cc ('k') | chrome/test/BUILD.gn » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698