blob: 67525cf1064653819a19ceb9b2930048bbb1f36f [file] [log] [blame]
{{>copyright comment="//"}}
#include <lib/fake_ddk/fake_ddk.h>
#include <sdk/lib/inspect/testing/cpp/zxtest/inspect.h>
#include <zxtest/zxtest.h>
#include "{{PROJECT_PATH}}/{{snake_case PROJECT_NAME}}.h"
namespace {{snake_case PROJECT_NAME}} {
using inspect::InspectTestHelper;
class {{pascal_case PROJECT_NAME}}Test : public InspectTestHelper, public zxtest::Test {
void SetUp() override {}
void TearDown() override {}
protected:
fake_ddk::Bind ddk_;
};
TEST_F({{pascal_case PROJECT_NAME}}Test, LifetimeTest) {
auto device = new {{pascal_case PROJECT_NAME}}(fake_ddk::kFakeParent);
ASSERT_OK(device->Bind());
ASSERT_OK(ddk_.WaitUntilInitComplete());
device->DdkAsyncRemove();
EXPECT_TRUE(ddk_.Ok());
device->DdkRelease();
}
// TODO: `is_bound` is an example inspect property. Replace this test with inspect properties
// if any are added to the driver. Remove this test if no new inspect nodes/properties were added.
TEST_F({{pascal_case PROJECT_NAME}}Test, InspectTest) {
auto device = new {{pascal_case PROJECT_NAME}}(fake_ddk::kFakeParent);
// Verify is_bound = false.
ASSERT_NO_FATAL_FAILURES(ReadInspect(device->inspect_vmo()));
ASSERT_NO_FATAL_FAILURES(CheckProperty<inspect::BoolPropertyValue>(
hierarchy().node(), "is_bound", inspect::BoolPropertyValue(false)));
ASSERT_OK(device->Bind());
// Verify is_bound = true.
ASSERT_NO_FATAL_FAILURES(ReadInspect(device->inspect_vmo()));
ASSERT_NO_FATAL_FAILURES(CheckProperty<inspect::BoolPropertyValue>(
hierarchy().node(), "is_bound", inspect::BoolPropertyValue(true)));
ASSERT_OK(ddk_.WaitUntilInitComplete());
device->DdkAsyncRemove();
EXPECT_TRUE(ddk_.Ok());
device->DdkRelease();
}
} // namespace {{snake_case PROJECT_NAME}}