blob: 150f94f412219045e3ede8d143a30fcd0b2d2880 [file] [log] [blame]
// Copyright 2023 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_DEVICES_BIN_DRIVER_MANAGER_TESTS_DRIVER_MANAGER_TEST_BASE_H_
#define SRC_DEVICES_BIN_DRIVER_MANAGER_TESTS_DRIVER_MANAGER_TEST_BASE_H_
#include "src/devices/bin/driver_manager/node.h"
#include "src/lib/testing/loop_fixture/test_loop_fixture.h"
class TestNodeManagerBase : public driver_manager::NodeManager {
public:
void Bind(driver_manager::Node& node,
std::shared_ptr<driver_manager::BindResultTracker> result_tracker) override {}
void DestroyDriverComponent(
driver_manager::Node& node,
fit::callback<void(fidl::WireUnownedResult<fuchsia_component::Realm::DestroyChild>& result)>
callback) override {}
zx::result<driver_manager::DriverHost*> CreateDriverHost(bool use_next_vdso) override {
return zx::error(ZX_ERR_NOT_SUPPORTED);
}
};
class DriverManagerTestBase : public gtest::TestLoopFixture {
public:
void SetUp() override;
virtual driver_manager::NodeManager* GetNodeManager() = 0;
protected:
std::shared_ptr<driver_manager::Node> CreateNode(const std::string name);
// Creates a DFv2 node and add it to the given parent.
std::shared_ptr<driver_manager::Node> CreateNode(const std::string name,
std::weak_ptr<driver_manager::Node> parent);
std::shared_ptr<driver_manager::Node> CreateCompositeNode(
std::string_view name, std::vector<std::weak_ptr<driver_manager::Node>> parents,
const std::vector<fuchsia_driver_framework::NodePropertyEntry>& parent_properties,
uint32_t primary_index = 0);
std::shared_ptr<driver_manager::Node> root() const { return root_; }
driver_manager::Devfs* devfs() const { return devfs_.get(); }
private:
driver_manager::InspectManager inspect_{dispatcher()};
std::unique_ptr<driver_manager::Devfs> devfs_;
std::shared_ptr<driver_manager::Node> root_;
std::optional<driver_manager::Devnode> root_devnode_;
};
#endif // SRC_DEVICES_BIN_DRIVER_MANAGER_TESTS_DRIVER_MANAGER_TEST_BASE_H_