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

Unified Diff: device/bluetooth/test/bluetooth_gatt_server_test.cc

Issue 1920693002: Complete //device/bt implementation for hosting local GATT attributes. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 8 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 | « device/bluetooth/test/bluetooth_gatt_server_test.h ('k') | device/bluetooth/test/bluetooth_test.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: device/bluetooth/test/bluetooth_gatt_server_test.cc
diff --git a/device/bluetooth/test/bluetooth_gatt_server_test.cc b/device/bluetooth/test/bluetooth_gatt_server_test.cc
new file mode 100644
index 0000000000000000000000000000000000000000..66c7b41dbfd205bf5992ca14673dd24ef3d0cae1
--- /dev/null
+++ b/device/bluetooth/test/bluetooth_gatt_server_test.cc
@@ -0,0 +1,162 @@
+// Copyright 2016 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 "device/bluetooth/test/bluetooth_gatt_server_test.h"
+
+#include "base/callback.h"
+#include "base/logging.h"
+#include "base/memory/ptr_util.h"
+#include "base/memory/ref_counted.h"
+#include "device/bluetooth/bluetooth_gatt_characteristic.h"
+#include "device/bluetooth/bluetooth_uuid.h"
+#include "device/bluetooth/test/bluetooth_test.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+namespace device {
+
+// TestLocalGattServiceDelegate:
+
+bool TestLocalGattServiceDelegate::should_fail_ = false;
+uint64_t TestLocalGattServiceDelegate::last_written_value_ = 0;
+uint64_t TestLocalGattServiceDelegate::value_to_write_ = 0;
+
+TestLocalGattServiceDelegate::TestLocalGattServiceDelegate()
+ : expected_service_(nullptr),
+ expected_characteristic_(nullptr),
+ expected_descriptor_(nullptr) {}
+
+void TestLocalGattServiceDelegate::OnCharacteristicReadRequest(
+ const BluetoothLocalGattService* service,
+ const BluetoothLocalGattCharacteristic* characteristic,
+ int offset,
+ const ValueCallback& callback,
+ const ErrorCallback& error_callback) {
+ EXPECT_EQ(expected_service_, service);
+ EXPECT_EQ(expected_characteristic_, characteristic);
+ if (should_fail_) {
+ error_callback.Run();
+ return;
+ }
+ callback.Run(BluetoothGattServerTest::GetValue(value_to_write_));
+}
+
+void TestLocalGattServiceDelegate::OnCharacteristicWriteRequest(
+ const BluetoothLocalGattService* service,
+ const BluetoothLocalGattCharacteristic* characteristic,
+ const std::vector<uint8_t>& value,
+ int offset,
+ const base::Closure& callback,
+ const ErrorCallback& error_callback) {
+ EXPECT_EQ(expected_service_, service);
+ EXPECT_EQ(expected_characteristic_, characteristic);
+ if (should_fail_) {
+ error_callback.Run();
+ return;
+ }
+ last_written_value_ = BluetoothGattServerTest::GetInteger(value);
+ callback.Run();
+}
+
+void TestLocalGattServiceDelegate::OnDescriptorReadRequest(
+ const BluetoothLocalGattService* service,
+ const BluetoothLocalGattDescriptor* descriptor,
+ int offset,
+ const ValueCallback& callback,
+ const ErrorCallback& error_callback) {
+ EXPECT_EQ(expected_service_, service);
+ EXPECT_EQ(expected_descriptor_, descriptor);
+ if (should_fail_) {
+ error_callback.Run();
+ return;
+ }
+ callback.Run(BluetoothGattServerTest::GetValue(value_to_write_));
+}
+
+void TestLocalGattServiceDelegate::OnDescriptorWriteRequest(
+ const BluetoothLocalGattService* service,
+ const BluetoothLocalGattDescriptor* descriptor,
+ const std::vector<uint8_t>& value,
+ int offset,
+ const base::Closure& callback,
+ const ErrorCallback& error_callback) {
+ EXPECT_EQ(expected_service_, service);
+ EXPECT_EQ(expected_descriptor_, descriptor);
+ if (should_fail_) {
+ error_callback.Run();
+ return;
+ }
+ last_written_value_ = BluetoothGattServerTest::GetInteger(value);
+ callback.Run();
+}
+
+// BluetoothGattServerTest:
+
+BluetoothGattServerTest::BluetoothGattServerTest() {}
+
+BluetoothGattServerTest::~BluetoothGattServerTest() {}
+
+void BluetoothGattServerTest::StartGattSetup() {
+ InitWithFakeAdapter();
+ delegate_ = base::WrapUnique(new TestLocalGattServiceDelegate());
+ service_ = BluetoothLocalGattService::Create(
+ adapter_.get(), BluetoothUUID(kTestUUIDGenericAttribute), true, nullptr,
+ delegate_.get());
+ delegate_->set_expected_service(service_.get());
+}
+
+void BluetoothGattServerTest::CompleteGattSetup() {
+ service_->Register(GetCallback(Call::EXPECTED),
+ GetGattErrorCallback(Call::NOT_EXPECTED));
+ EXPECT_EQ(1, callback_count_);
+ EXPECT_EQ(0, error_callback_count_);
+}
+
+void BluetoothGattServerTest::SetUp() {
+ BluetoothTest::SetUp();
+
+ last_read_value_ = std::vector<uint8_t>();
+ TestLocalGattServiceDelegate::value_to_write_ = 0;
+ TestLocalGattServiceDelegate::last_written_value_ = 0;
+ TestLocalGattServiceDelegate::should_fail_ = false;
+}
+
+void BluetoothGattServerTest::TearDown() {
+ int callback_count = callback_count_;
+ int error_callback_count = error_callback_count_;
+ service_->Unregister(GetCallback(Call::EXPECTED),
+ GetGattErrorCallback(Call::NOT_EXPECTED));
+ EXPECT_EQ(callback_count + 1, callback_count_);
+ EXPECT_EQ(error_callback_count, error_callback_count_);
+
+ delegate_ = nullptr;
+
+ BluetoothTest::TearDown();
+}
+
+// static
+uint64_t BluetoothGattServerTest::GetInteger(
+ const std::vector<uint8_t>& value) {
+ // Handling only up to 4 bytes value for tests.
+ CHECK_LE(value.size(), 4u);
+ uint64_t int_value = 0;
+ uint64_t powers_of_256 = 1;
+ for (uint8_t v : value) {
+ int_value += v * powers_of_256;
+ powers_of_256 *= 256;
+ }
+ return int_value;
+}
+
+// static
+std::vector<uint8_t> BluetoothGattServerTest::GetValue(uint64_t int_value) {
+ CHECK_LE(int_value, 0xFFFFFFFFul);
+ std::vector<uint8_t> value;
+ while (int_value) {
+ value.push_back(int_value & 0xff);
+ int_value >>= 8;
+ }
+ return value;
+}
+
+} // namespace device
« no previous file with comments | « device/bluetooth/test/bluetooth_gatt_server_test.h ('k') | device/bluetooth/test/bluetooth_test.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698