blob: 0455ba9bc072a08dd53863997a40daa1a5b9de6c [file] [log] [blame]
// Copyright 2019 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef SRC_DEVELOPER_FORENSICS_TESTING_STUBS_DEVICE_ID_PROVIDER_H_
#define SRC_DEVELOPER_FORENSICS_TESTING_STUBS_DEVICE_ID_PROVIDER_H_
#include <fuchsia/feedback/cpp/fidl.h>
#include <fuchsia/feedback/cpp/fidl_test_base.h>
#include <memory>
#include "src/developer/forensics/testing/stubs/fidl_server.h"
namespace forensics {
namespace stubs {
class DeviceIdProviderBase
: public SINGLE_BINDING_STUB_FIDL_SERVER(fuchsia::feedback, DeviceIdProvider) {
public:
void SetDeviceId(std::string device_id);
// |fuchsia::feedback::DeviceIdProvider|
void GetId(GetIdCallback callback) override;
protected:
DeviceIdProviderBase() : device_id_(std::nullopt), callback_(nullptr) {}
explicit DeviceIdProviderBase(const std::string& device_id)
: device_id_(device_id), callback_(nullptr) {}
void GetIdInternal(GetIdCallback callback);
private:
std::optional<std::string> device_id_;
GetIdCallback callback_;
bool dirty_{true};
};
class DeviceIdProvider : public DeviceIdProviderBase {
public:
explicit DeviceIdProvider(const std::string& device_id) : DeviceIdProviderBase(device_id) {}
// |fuchsia::feedback::DeviceIdProvider|
void GetId(GetIdCallback callback) override;
};
class DeviceIdProviderNeverReturns : public DeviceIdProviderBase {
public:
// |fuchsia::feedback::DeviceIdProvider|
STUB_METHOD_DOES_NOT_RETURN(GetId, GetIdCallback);
};
class DeviceIdProviderExpectsOneCall : public DeviceIdProviderBase {
public:
explicit DeviceIdProviderExpectsOneCall(const std::string& device_id)
: DeviceIdProviderBase(device_id) {}
~DeviceIdProviderExpectsOneCall();
// |fuchsia::feedback::DeviceIdProvider|
void GetId(GetIdCallback callback) override;
private:
bool is_first_ = true;
};
class DeviceIdProviderClosesFirstConnection : public DeviceIdProviderBase {
public:
DeviceIdProviderClosesFirstConnection(const std::string& device_id)
: DeviceIdProviderBase(device_id) {}
// |fuchsia::feedback::DeviceIdProvider|
void GetId(GetIdCallback callback) override;
private:
bool is_first_ = true;
};
} // namespace stubs
} // namespace forensics
#endif // SRC_DEVELOPER_FORENSICS_TESTING_STUBS_DEVICE_ID_PROVIDER_H_